一、机器学习上机实验报告
1.1 C2-1
1.1.1 实验内容
构建一个二分类问题:逻辑与(AND)的一般问题。
生成数据:正样本样本服从高斯分布,均值为[1,1],协方差矩阵为单位矩阵;负样本服从三个高斯分布的混合高斯分布,这三个高斯分布的均值分别为[0,0], [0,1], [1,0],每个高斯分布的协方差矩阵均为(sigma*单位矩阵)。
学习:设 sigma=0.01,请依上面的分布生成正负样本各 300 个,运用 perceptron learning algorithm 从数据中学习出一个 perceptron,实现对正负样本的二分类。
实验与讨论:请通过编程实验,讨论如下问题:
- 学习算法的收敛性与哪些因素存在怎样的关系?
- 讨论当 sigma 取值不断变大(如取值从 0.01-1)情况下,学习算法的收敛性问题,由此可以得出怎样的结论?
1.1.2 实验步骤
利用 numpy 方法生成二维高斯分布:
构建感知机类:
要点:
- 使用 bias,否则只有无法得出结果
- output 使用符号函数
- 利用损失函数使得训练可以在适当时候停止
构建训练集、测试集并进行训练,并最后评估测试结果:
1.1.3 实验结果
Sigma=0.01 时
样本:
结果:
Sigma=0.1:
Sigma=0.99
结论:
训练结果和权重初始化、bias 初始化、感知机结构、训练次数、训练终止方式、学习率等有关系。
Sigma 变大,算法收敛性减小,说明学习效果与样本分布有很大关系。当样本无法划分时,学习效果很差。
1.1.4 实验感想
学习到了具体的感知器设计,对于包的使用更加熟悉。
1.2 C3-1
1.2.1 实验内容
- 生成 500 个数据点(x, y), y = x + n, n 为均值为 0 标准差为 delta 的正态分布。请使用线性回归算法从输入 x 估计 y。
- 对于 x = y + n 进行同上述操作,但是依旧从 x 估计 y。
- 对于上述题目的回归曲线进行比较。
1.2.2 实验步骤
构建数据:
采用最简单的 1-1 网络:
训练:
结果显示:
1.2.3 实验结果
参数和 MSE:
回归曲线:
第一个:
第二个:
结论:
可能题意理解错误,未看出差别
1.2.4 实验感想
可能本题题意理解有错误,或者使用了 pytorch 结果过好。
1.3 C4-1
1.3.1 实验内容
写一个带有 bias 的基础的 3-3-1 网络反向传播程序,来解决三比特奇偶校验问题。偶数个 1bit 返回 +1,反之返回-1。展示输入-隐层的参数并且分析每个隐层神经元的函数。
1.3.2 实验步骤
自己写的 BP,使用 softmax 分类,也可以使用 sigmoid 求值:
初始化
前向传播:
反向传播:
功能函数:
Pytorch 版本:
定义 MLP,forward 最后不进行 softmax 因为 torch 的交叉熵自带
训练:
二分类:
直接求值:
1.3.3 实验结果
与预估相同
参数如下:
二分类:
Sigmoid:
对于两个输入求异或,之后对于结果和另一个输入求异或
参考:
1.3.4 实验感想
深入学习了 BP 算法。对于奇偶校验有了更多认识。
1.4 C4-2
1.4.1 实验内容
训练神经网络,计算森林火灾面积
1.4.2 实验步骤
数据读取和预处理:
使用了 8 个属性
神经网络构造:
使用了 dropout 防止过拟合
训练与验证结果:
1.4.3 实验结果
没有花费很多时间优化参数,所以结果可能较差。
1.4.4 实验感想
本次没有很多时间优化,因此结果可能较差。感觉数据量过少,线性回归效果可能不好。
1.5 C4-3
1.5.1 实验内容
Mnist
1.5.2 实验步骤
定义模型,未使用 CNN:
预处理:
训练与测试:
1.5.3 实验结果
准确率达 97.21%
1.5.4 实验感想
因为无法使用 GPU 所以未使用 CNN,Mnist 的解决方法已经相当成熟,即使不用 CNN 也能达到很好结果。
1.6 C5-1
1.6.1 实验内容
构建一个类别不平衡的二分类问题。
生成数据:正样本样本服从高斯分布,均值为[2,3],协方差矩阵为单位矩阵;负样本服从高斯分布,均值为[5,6],协方差矩阵为单位矩阵。
学习:请依上面的分布生成正样本 200 个,负样本 800 个,将其划分为包含 60% 样本的训练集、20% 样本的验证集和 20% 样本的测试集,通过分别构建两个不同的 MLP 模型实现对正负样本的二分类。其中第一个 MLP 模型含有一个隐层,第二个 MLP 模型含有两个隐层。
实验与讨论:请通过编程实验,讨论如下问题:a. 若要求 MLP 模型对于正例样本的预测有更高的查准率和查全率,请考虑在模型选择中采用哪种性能衡量指标;b.通过绘制学习曲线,分析模型的偏差与方差;c.通过绘制 ROC 曲线,比较两个 MLP 模型。
1.6.2 实验步骤
MLP_1 一个隐层
MLP_2 两个隐层
初始化:
交叉验证得到学习曲线:
得到性能指标:
1.6.3 实验结果
使用交叉熵作为损失函数
MLP_1 的学习曲线,每次增加 50 个训练样本:
MLP_2 的学习曲线:
可以看到二者的偏差都较小,但是第二个模型的方差更大,说明出现过拟合
MLP_1 训练时的 loss:
MLP_1 验证集/测试集上的性能指标:
MLP_2 的 loss:
MLP_2 验证集/测试集上的性能指标:
要求对于正率更高准确率和查全率,应该考虑正例的 f1 性能指标。
ROC 曲线:
AUC:
可以看到,二者结果十分相似,其中 mlp_2 在正例上可能过拟合更严重一些,但是总的结果更好。
1.6.4 实验感想
实际上使用了交叉验证绘制学习曲线,对于验证集并没有过多使用。
1.7 C6-1
1.7.1 实验内容
- 对于 Fisheriris 数据集
- 使用一对多 SVM 针对四个输入数据二分类进行三分类;
- 使用 KNN 分类;
- 使用 MLP 二分类并最后组合;
1.7.2 实验过程
数据预处理:
SVM:
将 0, 1, 2 数据作为正例,其他作为反例,其他两个亦同下图
训练三个分类器,并进行组合
评估结果,分别是自己的一对多和 sklearn 的一对多
KNN:
自己完成的 KNN:
Sklearn 的 KNN:
MLP:
实际上过程类似 SVM
网络:
1.7.3 实验结果
SVM 自己完成的一对多
-1 为无法分类的数据,无法很好的处理
Sklearn 的一对多
效果非常好
KNN:
分别是自己完成的 knn 和 sklearn 的 knn
MLP 结果:
效果很好
1.7.4 实验感想
使用了多个分类方式,对于分类器有了更多理解。
1.8 C6-2
1.8.1 实验内容
在西瓜数据集 3.0 α 上分别用线性核和高斯核训练 SVM,并比较其支持向量的差别。
1.8.2 实验步骤
数据预处理,不使用 test,因为数据量过少:
线性核和高斯核:
1.8.3 实验结果
可见,高斯核好于线性核
支持向量均为 17x2 向量
线性核支持向量:
高斯核支持向量:
1.8.4 实验感想
对于 SVM 还是不够了解,第一个实际使用了 LinearSVM,和 SVM 有一些不同。
1.9 C7-1
1.9.1 实验内容
试编程实现 K-means 算法,设置三组不同的 k 值、三组不同的初始中心点,在西瓜数据集 4.0 上进行实验比较,并讨论什么样的初始中心有利于取得好结果。
1.9.2 实验步骤
构建自己的 KMeans 类:
初始化:
利用参数选择质心初始化方式
聚类的过程:
判断聚类结果是否已经不变:
四个选择质心的方法,分别为随机选择,将数据排序后均匀选择,选择最好质心和 KMeans++:
欧氏距离计算:
数据预处理:
随后分别求 k=2,3,4 时的随机选择结果:
以及 k=3 时的均匀选择和最好结果:
K=3 时 KMeans++:
使用 Sklearn 的 Kmeans++ 选择质心:
1.9.3 实验结果:
以下分别为 k=2,3,4 时,质心随机选择的聚类图像以及评估距离,质心为红色:
以下为 k=3,均匀选择质心结果:
以下为 k=3 的最好质心:
KMeans++ 的结果:
Sklearn 的算法结果:
可以看到,KMeans++ 可以得到非常优秀的质心选择结果
1.9.4 实验感想
自己实现了多种 KMeans,很有成就感
1.10 C8-1
1.10.1 实验内容
请通过对 Iris data 的可视化,比较 PCA、LDA 和 ICA 的可视化效果。
1.10.2 实验步骤
自己实现了 PCA,其他调包
数据预处理:
PCA:
LDA:
ICA:
1.10.3 实验结果
原数据雷达图:
PCA 散点图:
雷达图:
LDA 散点图:
雷达图:
ICA 散点图:
雷达图:
结论:
比较效果其实相近。
1.10.4 实验感想
学习了可视化方法,对于可视化工具有了新的认识。
参考文献
- 网络流量统计分析系统(吉林大学·石景龙)
- 中学python课程知识图谱构建及应用研究(华中师范大学·黄健)
- 基于深度学习的智能问答系统的研究与实现(沈阳师范大学·卓越)
- 基于Python的非结构化数据检索系统的设计与实现(南京邮电大学·董海兰)
- 基于PHP+MySQL的交互学习系统的设计与实现(吉林大学·刘博)
- 面向多任务、多通道并行爬虫的技术研究(哈尔滨工业大学·李学凯)
- 基于分布式的个性化推荐系统的设计与实现(华中科技大学·唐赛)
- 基于深度学习知识追踪模型的在线教育数据挖掘研究(哈尔滨工业大学·徐盛原)
- 面向多任务、多通道并行爬虫的技术研究(哈尔滨工业大学·李学凯)
- 主题爬虫的实现及其关键技术研究(武汉理工大学·张航)
- 基于微服务架构的学习系统设计与实现(华中师范大学·熊其昌)
- 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
- 主题爬虫关键技术研究(哈尔滨工程大学·黄正德)
- 基于数据挖掘的用户上网行为分析(中央民族大学·丰玄霜)
- 视频处理平台的设计与实现(北京交通大学·时月月)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设货栈 ,原文地址:https://m.bishedaima.com/yuanma/35755.html