机器学习
文章平均质量分 76
Lieb_Mark
这个作者很懒,什么都没留下…
展开
-
机器学习实验10 特征选择与分类
这次实验的主要算法是前向搜索算法,算法的主题按照算法的步骤逐步进行就很容易实现,但是信息熵求起来需要费些心思,要优化掉多层for循环,使用groupby、pd.value_counts等内置函数进行计算。按照算法描述,给定d个特征,我们先选出一个最优的单特征子集,再逐步加入其他特征,每次加入都以信息增益为衡量标准。后来想到ent_dv和p都是dataframe类型,并且一一对应,可以直接使用sum(ent_dv * p),相乘并使用sum求和,直接得出结果。对x进行预测,哪个类型的概率最大结果就为哪个。原创 2023-10-12 09:00:08 · 189 阅读 · 0 评论 -
机器学习实验9 PCA
对根据特征值的大小排序,因为这里要将成一维,所以找出特征值最大的特征向量作为投影矩阵,和原数据进行相乘得出降维后的值。但是实验的原理理解起来花费了一些时间,通过在知乎上查找讲解,最后看明白了。在实验中进一步体会到了线性代数的精妙和重要性,以及对协方差矩阵、特征向量等的意义有了进一步的了解。1、数据中含有“[”,“]”python读入时不能自己处理,所以使用f.readlines将内容读为字符串,遍历每一行,去除行末回车和左右中括号,数据转为float类型,数据放到data中并转array返回。原创 2023-10-12 08:58:21 · 178 阅读 · 0 评论 -
机器学习实验8 K-means
这里使用了np.linalg.norm计算二范数即欧氏距离,遍历每一个簇中心,利用广播机制,直接对data – c求二范数就得到了所有点到该簇中心的距离,形状为(90,)。一共三个簇中心,得出的结果是(3,90)的,每一列是每个点到三个簇中心的距离。通过这次实验,让我对k-means的掌握更加扎实。1、数据中含有“[”,“]”python读入时不能自己处理,所以使用f.readlines将内容读为字符串,遍历每一行,去除行末回车和左右中括号,数据转为float类型,数据放到data中并转array返回。原创 2023-10-12 08:56:11 · 139 阅读 · 0 评论 -
机器学习实验7 Adaboost
功能是遍历data,参考规则,将属性值和阈值进行比较,得出预测值,如果分类错误,则将其权重加入e。1、数据中含有“[”,“]”python读入时不能自己处理,所以使用f.readlines将内容读为字符串,遍历每一行,去除行末回车和左右中括号,数据转为float类型,并且将属性和标签分开,分别放到data和lable中返回。5、对分类结果进行测试和可视化,将每个数据通过所有分类器进行投票确定结果,将每个分类器的结果乘以每个分类器的权重,再进行求和,大于0则为1,否则为-1。求出,D也需要进行更新,公式为。原创 2023-10-12 08:54:22 · 180 阅读 · 0 评论 -
机器学习实验6 贝叶斯分类器
可以求出,在这里使用布尔值索引lable==i可以减少代码量,更加简便快捷。由于属性是-1和1,使用列表等下标必须是非负整数,所以这里使用字典存储,索引更加灵活。通过这次实验,我学习到了朴素贝叶斯分类器,相较于以前的SVM等分类方法,又学习到了基于概率的分类,提供了另一种解决分类问题的思路。3、求出条件概率,即不同属性在不同类别中出现的概率。需要保存两个键,键可能是负数或字符,使用嵌套的字典。三层循环,最外层枚举类型,第二层枚举属性列,最内层枚举该属性的所有取值。同样使用拉普拉斯修正进行数据平滑,公式为。原创 2023-10-12 08:52:50 · 218 阅读 · 0 评论 -
机器学习实验5 支持向量机
同时也学习到了SMO算法的数学推导和具体流程,其中坐标上升每次通过更新多元函数中的一维,经过多次迭代直到收敛来达到优化函数的目的,每次只是做一维优化,所以每个循环中的优化过程的效率是很高的, 但是迭代的次数会比较多。分别解出b1和b2,如果两个都是有效的,那么b1,b2的值是相等的。接着是一个判定条件,如果不满足KKT条件,则需要优化,否则跳过,这里当时写的时候看了好久没看明白,在网上搜索到了资料,所以通过两种如果分类正确就一定不会出现的条件,就可以得到这个判断。对后面选中的j进行同样的操作。原创 2023-10-12 08:50:01 · 212 阅读 · 0 评论 -
机器学习实验4 实现感知机学习算法
通过这次实验,我对于感知机模型的原理有了进一步的了解,也通过实验对这一算法进行了实践,加深了印象。虽然实验中用到的模型比较简单,但是学习到了反向传播优化这一思想。通过可视化得出比较好的分类效果也令我备受鼓舞,期望在后面的学习中可以学到更多机器学习相关知识。为以后的学习工作打下坚实的基础。使用epoch=10,每个x都可以更新一次参数,可以看到10轮之内就可以收敛,达到不错的效果。2. 神经元激活函数建议选用sign函数(数据集最后一列的标签请将 0 转换为 -1)开始训练时的参数更新情况。原创 2023-10-12 08:46:31 · 296 阅读 · 0 评论 -
机器学习实验3 基于信息增益率的决策树模型
这也是对python数据处理、程序设计的能力考验,有的操作调用方法就可以较快实现,如ndarray的合并、列表求出现次数最多的元素。3、根据选定的属性及该属性取值value,对数据集进行筛选,只保留该属性列值为value的行,并且去除该属性列,因为后面还要递归处理,这列还保留的话,可能会在一个分支上多次使用这个属性进行划分。可以用于递归的数据只有一种属性,此时为叶节点,类别确定为出现的次数最多的类别。可以看到各个特征的信息增益率,由于决策树是多层的,可能在不同的分支对不同的属性信息增益率不同。原创 2023-10-12 08:44:14 · 395 阅读 · 0 评论 -
机器学习实验2 线性判别分析
使用xlim限定x轴的范围,之后找出各类的点并画在坐标轴上,两个中心使用红色,预测值分别使用蓝绿两色标出。由wT*x可以得出测试集的数据的投影值,根据LDA的原理:数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。通过这次实验,我对于LDA算法的思想有了更清晰的了解,即数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。巩固所学知识,为以后的学习打下坚实的基础。原创 2023-10-11 17:59:36 · 209 阅读 · 0 评论 -
机器学习实验1 多元线性回归
最后的期望是均方误差最小,根据表达式(y-xw)T(y-xw),要使其最小,可以对w求偏导,取0时是极值。1、使用文件是txt文件,使用open和readlines()函数进行逐行读取,但是读入的是一行带空格回车的字符串,使用strip(‘\n’), split(' '),强制类型转换等进行处理,得出x矩阵和y矩阵。巩固上课所学的知识,对机器学习有了初步的认识和了解,为以后的学习打下坚实的基础。3.对拟合得到的模型在测试集上进行测试,使用均方误差作为实验的准确结果并输出。4、根据公式得出均方误差的公式。原创 2023-10-11 17:50:14 · 156 阅读 · 0 评论