- 博客(67)
- 收藏
- 关注
原创 XV6实验(2020)
Xv6(和其他Unix操作系统一样)中的隔离单位是一个进程。进程抽象防止一个进程破坏或监视另一个进程的内存、CPU、文件描述符等。它还防止一个进程破坏内核本身,这样一个进程就不能破坏内核的隔离机制。内核用来实现进程的机制包括用户/管理模式标志、地址空间和线程的时间切片。Xv6为每个进程维护一个单独的页表,定义了该进程的地址空间。如图2.3所示,以虚拟内存地址0开始的进程的用户内存地址空间。首先是指令,然后是全局变量,然后是栈区,最后是一个堆区域(用于malloc)以供进程根据需要进行扩展。
2023-02-02 23:18:31
3061
原创 基本UDP套接字编程
指向一个由该函数返回时填写数据报发送者的协议地址的套接字地址结构。:标志位,0阻塞,MSG_DONTWAIT非阻塞。:指向含有数据报接收者的协议地址。:指向读入或写出缓冲区的指针。:读入或写出的字节数。
2023-01-24 14:49:23
1464
原创 基本TCP套接字编程
把一个未连接的套接字转换成一个被动套接字,指示内核应接受指向该套接字的连接请求。服务器调用该函数,用于从已完成连接队列队头返回下一个已完成连接,如果已完成连接队列为空,则进程进入睡眠状态。系统中常常仅创建一个监听套接字进程,而当三次握手完成后,系统会为每个连接建立一个已连接套接字。服务器调用该函数后,可能会返回错误值或一个全新的套接字描述符,参数中的第一个参数一般称为。函数创建套接字时,被设定为一个主动套接字,是一个将调用。:完成三次握手的套接字所维护的队列。,调用函数后,返回一个新的套接字称为。
2023-01-22 21:50:14
1508
原创 sklearn入门——聚类算法KMeans
概述聚类算法是无监督学习的代表算法之一,也叫“无监督分类”。目的是将数据分为若干有意义或有用的组,通常根据实际需求来进行划分。聚类可以用于降维和矢量量化(vectorquantization),可以将高维特征压缩到一列当中,常常用于图像,声音,视频等非结构化数据,可以大幅度压缩数据量。核心是将数据分为多个组,探索每个组的数据是否有联系。KMeans的工作原理簇与质心KMeans将数据划分称若干个无交集的簇,每个簇就是一个一组聚集在一起的数据集,在一个簇中的数据视为同一类,簇是聚类的结果体现。质心就
2021-11-11 10:29:14
4844
1
原创 pytorch--梯度相关
什么是梯度我也不知道什么是梯度。从中学学的倒数说起,倒数反应了函数沿某个方向的变化率。然后就到了偏微分,偏微分是限定沿给定方向的变化率,而梯度就是函数关于所有自变量偏微分组成的向量。梯度的方向反应了函数上升或下降的方向,而梯度的大小反映了下降或上升的快慢。梯度下降:θi∗=θi−eps∗∂y∂θi\theta_{i}^{*}=\theta_{i}-eps*\frac{\partial y}{\partial \theta_{i}}θi∗=θi−eps∗∂θi∂y,梯度下降时会遇到局部最小值的问题
2021-11-03 14:51:08
577
原创 pytorch--数据类型及操作
基本数据类型Tensortensor是pytorch中的特殊数据类型,和numpy的数组类似,不过tensor可以在GPU和其他加速器上运行。初始化tensor直接从数据初始化data = [xxx]x_data = torch.tensor(data)从numpy数据初始化x_data = torch.from_numpy(np.array())从其他tensor初始化...
2021-11-01 20:24:47
553
1
原创 sklearn入门——逻辑回归
什么是逻辑回归逻辑回归也叫对数几率回归,在西瓜书中有介绍,吃瓜的时候也学过,可惜呀,脑子不好使,全忘了。重新学一下吧。。。。在理解对数几率回归之前需要先理解线性回归。线性回归的任务,就是构造一个预测函数 来映射输入的特征矩阵x和标签值y的线性关系,具体以公式体现如下:z=θ0+θ1x1+θ2x2+...+θnxnz = \theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_nz=θ0+θ1x1+θ2x2+...+θnxn写成矩阵形式为:构造预
2021-08-14 20:39:15
1868
2
原创 sklearn入门——特征选择
过滤法过滤法是在机器学习训练之前进行的数据预处理,根据各种统计检验指标筛选出较好的特征子集。方差过滤VarianceThreshold类通过特征的方差来筛选特征的类。有些特征的方差很小,所以要首先消除方差为0的特征。其中的参数threshold,表示方差的阈值,消除方差小于阈值的特征,默认值是0.相关操作及注释:import pandas as pdimport numpy as npfrom sklearn.feature_selection import VarianceThresh
2021-08-09 19:10:41
1874
原创 sklearn入门——数据预处理
概述数据预处理就是处理从数据中检测,纠正或删除损坏,不准确或不适用模型的记录的过程。可能面对的问题有:数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续,有的间断,也有可能数据的质量不行,存在噪声,有异常,有缺失等。数据预处理的目的就是让数据适应模型,匹配模型的需求。特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创造特征来实现。其中创造特征又经常以降维算法的方式实现。可能面对的问题有:特征之间有相关性,特征和标签无关,特征太
2021-08-08 17:06:39
504
原创 sklearn入门——随机森林
集成算法概述集成学习是通过在数据上构建多个模型,集成所有的模型的结果。常用的有随机森林、梯度提升树、Xgboost等。其目标是考虑多个评估器的建模结果,汇总后得到一个综合结果,以此来获取比单个模型更好的回归或分类表现。多个模型集成成为的模型叫做集成评估器,组成集成评估器的每个模型都叫做基评估器,通常有三类集成算法:袋装法(Bagging),提升法(Boosting),和Stacking。袋装法:构建多个相互独立的评估器,然后对其预测进行平均或多数表决原则来决定集成评估器的结果。袋装法的结果就是随机森
2021-08-07 13:02:35
1946
原创 sklearn入门——回归树
重要参数、属性及接口criterion回归树衡量分支质量的指标,支持的标准有三种:1)输入“mse”使用均方误差(mean squared error),父节点和子节点之间的均方误差的差额来作为特征选择的标准,通过使用叶子节点的均值来最小化L2损失。2)输入"friedman_mse"使用费尔德曼均方误差,这种指标使用费尔德曼针对潜在分支中的问题改进后的均方误差。3)输入"mae" 使用绝对平方误差,使用节点的中值来最小化L1损失其他属性也包括feature_importances_,接口有
2021-08-04 17:54:45
806
原创 sklearn入门——分类树
概述据说这个教程是侧重于应用的,原理的我还没搞太懂,吃瓜也就看了前六章,也是模模糊糊。。。。。流程是:实例化,建立评估模型对象;通过模型接口训练模型;通过模型接口提取需要的信息。对应的代码就是:from sklearn import treeclf = tree.DecisionTreeClassifier()clf = clf.fit(x_train,y_train)result = clf.score(x_test,y_test)...
2021-08-04 15:50:53
344
原创 最长上升子序列模型(一)
原型:最长上升子序列最长上升子序列题目描述给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。分析代码#include<bits/stdc++.h>using namespace std;const int N = 1010;int f[N],a[N];int n;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&
2021-07-31 21:09:41
257
原创 数字三角形模型
原型题目题目描述给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。73 88 1 02 7 4 44 5 2 6 5分析状态表示:f[i,j]表示走到(i,j)的所有路径的数字之和的集合;属性:数字之和的最大值。状态计算:考虑最后一步的走法,最后一步可以从左上或右上走来,因此有上一个点进行状态更新,即:f[i,j]=max(f[i
2021-07-30 11:20:41
204
原创 支持向量机
间隔与支持向量在感知机中,对于线性可分的问题,得到的超平面是不唯一的,因此支持向量机的目标是找到一个距离正负样本都最远的超平面,解是唯一的,泛化性能最好。超平面在样本空间中,超平面可通过下面的线性方程描述:wTx+b=0w^Tx+b=0wTx+b=0超平面的特点:超平面方程不唯一法向量和位移项 确定一个唯一超平面法向量垂直于超平面(缩放时,若缩放倍数为负数会改变法向量方向)法向量指向的那一半空间为正空间,另一半为负空间任意点到超平面的距离公式为:∣wTx+b∣∣∣w∣∣\frac
2021-07-29 19:21:51
497
原创 神经网络初学
前言很早就听说了神经网络,上学期在一个老师那儿也了解了一些,但总感觉神经网络太难,不敢去学,这次跟着Datawhale组队学习,虽然模模糊糊也算入门了吧。。。。神经元模型在生物神经网络中,每个神经元与其他神经元相连,当神经元兴奋时,会向相连的神经元传递化学物质,改变神经元内的电位分布,当电位超过阈值时,就会被激活,向其他神经元传递信息。模拟生物神经元,机器学习抽象出了简单的模型。上图就是抽象的模型:M-P神经元模型。神经元收到来自其他n个神经元传递的输入信号,这些信号通过带权重的边进行传递,神
2021-07-23 15:40:02
438
1
原创 决策树
基本流程一棵决策树一般包含一个根结点、若干内部结点和若干叶结点。叶结点对应于决策结果,其他每个结点对应于一个属性测试,每个结点包含的样本集合根据属性测试的结果被划分到子结点中。在逻辑上,决策树对应一堆if else语句,决策树的生成过程是一个递归的过程,递归返回有:当前结点包含的样本全属于同一类别,无需划分;当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;当前结点包含的样本集合为空,不能划分。最终目的是将样本越分越纯划分选择信息增益自信息在信息论中将自信息定义为:I(X)=−l
2021-07-22 11:12:06
113
原创 虚拟存储器
虚拟存储器的描述主存也可以作为辅存的cache,这项技术就叫做虚拟存储器。物理地址:主存储器的地址。分类:页式虚拟存储器、段式虚拟存储器、段页式虚拟存储器。缺页:访问的也不在主存储器中。、虚拟地址:虚拟空间地址,当需要访问主存时需要通过地址映射转换为物理地址。地址转换:也叫地址映射,虚拟地址映射到物理地址的过程。虚拟地址到物理地址的转化采用MMU管理虚拟存储器与物理存储器采用页表来判断CPU要访问的内容是否在主存中,并与MUU配合实现虚拟地址和物理地址的转换。虚拟存储器地址划分在虚拟
2021-07-20 15:27:59
570
原创 贪心——区间问题
贪心就感觉是一个目光很短的人看问题,每次都在一个有限的区域内找到最优解,然后再往后看,贪心也没有具体的套路,所以就把看课程的几道题总结一下。区间选点问题描述给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。分析首先将每个区间按右端点从小到大排序,然后遍历所有区间,每次都很贪心的取区间的右端点,如果下一个区间已经覆盖了前一个区间的右端点,就跳过。算法的正确性可以通过模拟示例进
2021-07-20 09:57:33
216
原创 线性判别分析
线性判别分析(LDA)是一种经典的线性学习方法。其思想是:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离。如图所示的二分类示意图:损失函数的推导投影后的关键:异类样本的中心点尽可能远;同类样本的方差尽可能小。给定数据集D={(xi,yi)}i=1mD=\{(x_i,y_i)\}^{m}_{i=1}D={(xi,yi)}i=1m,yi属于{0,1}y_i属于\{0,1\}yi属于{0,1},另Xi,μi,∑iX_i,\mu _i,\sum
2021-07-19 11:01:32
1487
原创 cache的基本原理
cache视图cache的功能是缓解高速CPU和慢速主存之间的速度差异。理论基础是局部性原理cache的工作过程CPU访问cache是以字为单位进行的,而主存中的存储是块。每个块也由一个单独的字组成。CPU每次访问cache,如果命中了cache中的数据就返回给CPU,如果没有命中,则需要访问主存,这就导致了访问速度的急剧下降。cache写操作处理写穿策略:也叫写直达,就是写操作同时更新cache和主存,保持二者的一致性。写缓冲:有一个缓冲队列,一个数据被写入主存时,先将它放到cache和
2021-07-18 20:14:36
6140
3
原创 对数几率回归
机器学习中常见的任务就是回归和分类,线性回归得到一个连续的取值,而分类需要一个离散的取值,常见的二分类就是用1表示正分类,0表示负分类。因此,就想把得到的连续的值映射到离散的0和1上。最理想的就是“单位阶跃函数”y={0,z<00.5,z=01,z>0y=\left\{\begin{array}{cl}0, & z<0 \\0.5, & z=0 \\1, & z>0\end{array}\right.y=⎩⎨⎧0,0.5,1,z<0z
2021-07-17 12:45:10
206
原创 动态规划——树形DP&记忆化搜索
树形DP树形DP就是在一棵树上进行动态规划,根据一个节点的孩子树递归获取信息,然后进行状态转移。没有上司的舞会题目描述Ural 大学有 NNN 名职员,编号为 1∼N1 \sim N1∼N 。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 HiH_{i}Hi 给出, 其中 1≤i≤N1 \leq i \leq N1≤i≤N 。现在要召开一场周年庆宴会, 不过, 没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职
2021-07-17 09:29:21
293
1
原创 动态规划——状态压缩DP
我所理解的状态压缩DP就是将所有状态用二进制数表示,然后根据前一个合法的二进制数表示的状态进行状态转移,得到最终答案。蒙德里安的梦想题目描述求把 N×M 的棋盘分割成若干个 1×2 的的长方形,有多少种方案。例如当 N=2,M=4 时,共有 5 种方案。当 N=2,M=3 时,共有 3 种方案。分析这道题的核心是要发现所有的情况之和横着放的小矩形的情况有关。当所有横着放的矩形确定以后,竖着放的小矩形只能从剩余的空间中塞进去。所以可以考虑每一列,在每一列中有横着放或者前一列中横着放
2021-07-16 23:24:10
202
1
原创 线性模型——线性回归
线性回归的基本形式给定由d个属性描述的示例x=(x1,x2,.....xd)x=(x_1,x_2,.....x_d)x=(x1,x2,.....xd),xi是x在第i个属性上的取值,线性模型试图学得一个通过属性的线性组合来进行预测的函数,即:f(x)=w1x1+w2x2+...+wdxd+bf(x)=w_1x_1+w_2x_2+...+w_dx_d+bf(x)=w1x1+w2x2+...+wdxd+b其实线性回归就是概率论中的线性回归,做物理试验时也经常用。一元线性回归就是输入的属
2021-07-16 09:55:02
663
原创 存储系统(一)
存储系统的层次结构基本的存储系统由存储程序和程序控制组成,分别对应主存和CPU。输入设备将数据与程序写入主存——>CPU取指令——>CPU执行指令期间读数据——>CPU写回运算结果——>输出设备输出结果.存储系统的层次化结构存储程序层次化的局部性时间局部性:就是一个信息可能先后多次访问,体现在循环结构中;空间局部性:访问一个信息周围的信息,体现在层次结构中。...
2021-07-14 13:15:09
202
1
原创 吃瓜——1、2章
1、绪论什么是机器学习机器学习是通过计算的手段利用经验来改善系统自身的性能,从数据中产生“模型”算法,即“学习算法”,然后根据模型进行预测。基本术语示例/样本:关于一个事件或对象的描述;也就是一个记录,多个记录构成了数据集。属性:反映事件或对象在某方面的表现或性质的事项,属性的取值称为属性值,属性张成的空间称为“属性空间”、“样本空间”或“输入空间”。把属性对应到坐标轴,那么对象的属性值就可以在坐标空间中用一个向量表示,因此也把一个示例称为一个特征向量。学习/训练:从数据中学得模型的
2021-07-13 15:03:14
232
原创 动态规划——线性DP&区间DP
线性动态规划数字三角形描述给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。分析代码#include<bits/stdc++.h>using namespace std;const int N = 510,INF = -1e9;int f[N][N],s[N][N];int n;int main(){ scanf("%d",&
2021-07-13 10:52:01
203
原创 运算方法与运算器
定点数加法定点数补码加法的计算准则是:[x]补+[y]补=[x+y]补mod2n+1[x]_补+[y]_补=[x+y]_补mod2^{n+1}[x]补+[y]补=[x+y]补mod2n+1,n为字长。定点数减法计算准则:[x−y]补=[x]补+[−y]补[x-y]_补=[x]_补+[-y]_补[x−y]补=[x]补+[−y]补[−y]补[-y]_补[−y]补可直接根据定义计算,也可以根据y的补码保留最右边的一个1和之后的数,1左边的数全部取反。数据溢出检测:运算结果超
2021-07-12 22:05:11
1300
1
原创 动态规划——背包问题
01背包问题问题描述有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。分析关键是用前边的状态来更新当前状态,就是将一个问题分解为子问题,由子问题的最优解来得出当前问题的最优解。同时还有根据实际意义确定边界值#include<bits/stdc++.h>using namespace std;const int N =
2021-07-12 10:13:11
379
原创 数据校验
数据校验的基本原理受元器件的质量、电路故障或噪音干扰等因素的影响,数据在被处理、传输和存储的过程中可能出现错误。通过硬件设计检验错误并修正,减少软件检错的代价。基本原理增加冗余项。数据位冗余位(校验位)k位r位码距:同一编码中,任意两个合法编码之间不同二进制位数的最小值。校验码增加冗余位就是为了增大码距。码距与检错纠错能力的关系:码距≥e+1,可检测e个错误;码距≥2t+1,可纠正t个错误;码距≥e+t+1,(e≥t)可检测e个错误,纠正t个错误。码距
2021-07-11 19:05:56
1504
1
原创 数学知识——容斥原理与简单博弈论
容斥原理百度百科的定义:在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。以模板题为例,在取不同集合时,可以用二进制位是否为1来表示,是1就取该位,为0就不取,而二进制恰好可以表示所有组合的情况,就很妙。#include<bits/stdc++.h>using n
2021-07-10 16:26:17
186
原创 算术运算
二进制加法和减法运算规则略判断是否溢出操作操作数A操作数B结果溢出的条件A+B>=0>=0<0A+B<0<0>=0A-B>=0<0<0A-B<0<0>=0在MIPS中采用两种方法监测是否溢出加法、立即数加法和减法,在溢出时产生异常无符号加法、立即数无符号加法和无符号减法,溢出时不发生异常。做加减法运算等的硬件是算术逻辑单元相关概念:算术逻辑单元(A
2021-07-09 18:40:05
2262
原创 数学知识——求组合数
就是求CabC_{a}^{b}Cab1、预处理所有C[a][b],用公式Cab=Ca−1b+Ca−1b−1C_{a}^{b} =C_{a-1}^{b}+C_{a-1}^{b-1}Cab=Ca−1b+Ca−1b−1当a,b数据范围较小时适用。long long C[N][N];int mod = 1e9+7;void zuhe(int n){ for(int i=0;i<=n;i++){ for(int j=0;j<=i;j++){ if(!j) C[i][j]
2021-07-09 13:06:28
294
原创 计算机的语言——指令
计算机语言中的基本单词称为指令,一个给定计算机体系结构所包含的指令集合是指令集。存储程序概念:多种类型的指令和数据均以数据的形式存储于存储器中的概念,存储程序型计算机即源于此。名字示例注释32个寄存器$s0-$s7,$t0-$t9,$zero,$a0-$a3,$v0-$v1,$gp,$fp,$sp,$ra,$at寄存器用于数据的快速存取。在MIPS中,只能对存放在寄存器中的数据执行算术操作,寄存器$zero的值恒为零,寄存器$at被汇编器保留,用于处理大的常数。2^30个
2021-07-08 19:25:32
3483
原创 数学知识——欧拉函数、快速幂、扩展欧几里得算法
欧拉函数欧拉函数定义为ϕ(n)=1−n中与n互质的个数\phi(n)=1-n中与n互质的个数ϕ(n)=1−n中与n互质的个数,互质就是最大公约数是1。欧拉函数求解公式:将n分解质因数:n=p1a1+p2a2+...+pkakn=p_1^{a1}+p_2^{a2}+...+p_k^{ak}n=p1a1+p2a2+...+pkak,则ϕ(n)=n∗(1−1p1)∗(1−1p2)∗.....∗(1−1pk)\phi(n)=n*(1-\frac{1}{p_1})*(1-\frac{1}{p_2})*
2021-07-08 11:32:18
411
原创 数论——质数、约数等
质数大于2的数只包含1和它本身两个约数的数是质数。判断质数1、最朴素做法——试除法bool is_prime(int x){ for(int i=2;i<n;i++) if(x%i==0) return false; return true;}//时间复杂度是O(n)2、优化到sqrt(n)我们可以发现,如果一个数可以整除d则也可以整除n/d,所以可以进行优化bool is_prime(int x){ for(int i=2;i<=x/i;i++){ i
2021-07-07 12:06:39
230
原创 计算机性能
性能的定义响应时间:也叫执行时间,是计算机完成某任务所需的总时间,包括硬盘访问、内存访问、I/O活动、操作系统开销和CPU执行时间等。吞吐率:也叫带宽,性能的另一种度量参数,表示单位时间内完成任务的数量。性能和执行时间是倒数关系。性能的度量用时间来度量计算机的性能的话,直接的定义是墙上时钟时间也叫响应时间、消逝时间等。CPU执行时间:简称CPU时间,只表示在CPU上花费的时间,而不包括等待I/O或运行其他程序的时间。进一步可以分为:用户CPU时间和系统CPU时间,但二者很难区分。系统性能
2021-07-06 16:32:25
553
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人