基于Python完成机器学习大作业

一,机器学习上机实验报告 1,1 C2-1 1,1,1 实验内容 ​ 构建一个二分类问题:逻辑与(AND)的一般问题, ​ 生成数据:正样本样本服从高斯分布

本文包含相关资料包-----> 点击直达获取<-------

一、机器学习上机实验报告

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 方法生成二维高斯分布:

1

构建感知机类:

要点:

  • 使用 bias,否则只有无法得出结果
  • output 使用符号函数
  • 利用损失函数使得训练可以在适当时候停止

2

构建训练集、测试集并进行训练,并最后评估测试结果:

3

1.1.3 实验结果

Sigma=0.01 时

样本:

4

结果:

5

Sigma=0.1:

6

Sigma=0.99

7

结论:

训练结果和权重初始化、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 实验步骤

构建数据:

8

9

采用最简单的 1-1 网络:

10

训练:

11

结果显示:

12

1.2.3 实验结果

参数和 MSE:

13

回归曲线:

第一个:

14

第二个:

15

结论:

可能题意理解错误,未看出差别

1.2.4 实验感想

可能本题题意理解有错误,或者使用了 pytorch 结果过好。

1.3 C4-1

1.3.1 实验内容

写一个带有 bias 的基础的 3-3-1 网络反向传播程序,来解决三比特奇偶校验问题。偶数个 1bit 返回 +1,反之返回-1。展示输入-隐层的参数并且分析每个隐层神经元的函数。

1.3.2 实验步骤

自己写的 BP,使用 softmax 分类,也可以使用 sigmoid 求值:

初始化

16

前向传播:

17

反向传播:

18

功能函数:

19

Pytorch 版本:

定义 MLP,forward 最后不进行 softmax 因为 torch 的交叉熵自带

20

训练:

二分类:

21

直接求值:

22

1.3.3 实验结果

23

与预估相同

参数如下:

二分类:

24

Sigmoid:

25

对于两个输入求异或,之后对于结果和另一个输入求异或

参考:

1.3.4 实验感想

深入学习了 BP 算法。对于奇偶校验有了更多认识。

1.4 C4-2

1.4.1 实验内容

训练神经网络,计算森林火灾面积

1.4.2 实验步骤

数据读取和预处理:

使用了 8 个属性

26

神经网络构造:

使用了 dropout 防止过拟合

27

训练与验证结果:

28

1.4.3 实验结果

29

没有花费很多时间优化参数,所以结果可能较差。

1.4.4 实验感想

本次没有很多时间优化,因此结果可能较差。感觉数据量过少,线性回归效果可能不好。

1.5 C4-3

1.5.1 实验内容

Mnist

1.5.2 实验步骤

定义模型,未使用 CNN:

30

预处理:

31

训练与测试:

32

1.5.3 实验结果

33

准确率达 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 一个隐层

34

MLP_2 两个隐层

35

初始化:

36

交叉验证得到学习曲线:

37

得到性能指标:

38

1.6.3 实验结果

使用交叉熵作为损失函数

MLP_1 的学习曲线,每次增加 50 个训练样本:

39

MLP_2 的学习曲线:

40

可以看到二者的偏差都较小,但是第二个模型的方差更大,说明出现过拟合

MLP_1 训练时的 loss:

41

MLP_1 验证集/测试集上的性能指标:

42

MLP_2 的 loss:

43

MLP_2 验证集/测试集上的性能指标:

44

要求对于正率更高准确率和查全率,应该考虑正例的 f1 性能指标。

ROC 曲线:

45

AUC:

46

可以看到,二者结果十分相似,其中 mlp_2 在正例上可能过拟合更严重一些,但是总的结果更好。

1.6.4 实验感想

实际上使用了交叉验证绘制学习曲线,对于验证集并没有过多使用。

1.7 C6-1

1.7.1 实验内容

  • 对于 Fisheriris 数据集
  • 使用一对多 SVM 针对四个输入数据二分类进行三分类;
  • 使用 KNN 分类;
  • 使用 MLP 二分类并最后组合;

1.7.2 实验过程

数据预处理:

47

SVM:

将 0, 1, 2 数据作为正例,其他作为反例,其他两个亦同下图

48

训练三个分类器,并进行组合

49

50

评估结果,分别是自己的一对多和 sklearn 的一对多

KNN:

自己完成的 KNN:

51

Sklearn 的 KNN:

52

MLP:

实际上过程类似 SVM

网络:

53

54

55

1.7.3 实验结果

SVM 自己完成的一对多

-1 为无法分类的数据,无法很好的处理

56

Sklearn 的一对多

效果非常好

57

KNN:

分别是自己完成的 knn 和 sklearn 的 knn

58

59

MLP 结果:

效果很好

60

1.7.4 实验感想

使用了多个分类方式,对于分类器有了更多理解。

1.8 C6-2

1.8.1 实验内容

在西瓜数据集 3.0 α 上分别用线性核和高斯核训练 SVM,并比较其支持向量的差别。

1.8.2 实验步骤

数据预处理,不使用 test,因为数据量过少:

62

线性核和高斯核:

63

1.8.3 实验结果

可见,高斯核好于线性核

64

65

支持向量均为 17x2 向量

线性核支持向量:

66

高斯核支持向量:

67

1.8.4 实验感想

对于 SVM 还是不够了解,第一个实际使用了 LinearSVM,和 SVM 有一些不同。

1.9 C7-1

1.9.1 实验内容

试编程实现 K-means 算法,设置三组不同的 k 值、三组不同的初始中心点,在西瓜数据集 4.0 上进行实验比较,并讨论什么样的初始中心有利于取得好结果。

1.9.2 实验步骤

构建自己的 KMeans 类:

初始化:

利用参数选择质心初始化方式

68

聚类的过程:

69

70

判断聚类结果是否已经不变:

71

四个选择质心的方法,分别为随机选择,将数据排序后均匀选择,选择最好质心和 KMeans++:

72

73

74

欧氏距离计算:

75

数据预处理:

76

随后分别求 k=2,3,4 时的随机选择结果:

77

以及 k=3 时的均匀选择和最好结果:

78

K=3 时 KMeans++:

79

使用 Sklearn 的 Kmeans++ 选择质心:

80

1.9.3 实验结果:

以下分别为 k=2,3,4 时,质心随机选择的聚类图像以及评估距离,质心为红色:

81

82

83

84

以下为 k=3,均匀选择质心结果:

85

86

以下为 k=3 的最好质心:

87

88

KMeans++ 的结果:

89

90

Sklearn 的算法结果:

91

92

可以看到,KMeans++ 可以得到非常优秀的质心选择结果

1.9.4 实验感想

自己实现了多种 KMeans,很有成就感

1.10 C8-1

1.10.1 实验内容

请通过对 Iris data 的可视化,比较 PCA、LDA 和 ICA 的可视化效果。

1.10.2 实验步骤

自己实现了 PCA,其他调包

数据预处理:

93

PCA:

94

LDA:

95

ICA:

96

1.10.3 实验结果

原数据雷达图:

97

PCA 散点图:

98

雷达图:

99

LDA 散点图:

100

雷达图:

101

ICA 散点图:

102

雷达图:

103

结论:

比较效果其实相近。

1.10.4 实验感想

学习了可视化方法,对于可视化工具有了新的认识。

参考文献

  • 网络流量统计分析系统(吉林大学·石景龙)
  • 中学python课程知识图谱构建及应用研究(华中师范大学·黄健)
  • 基于深度学习的智能问答系统的研究与实现(沈阳师范大学·卓越)
  • 基于Python的非结构化数据检索系统的设计与实现(南京邮电大学·董海兰)
  • 基于PHP+MySQL的交互学习系统的设计与实现(吉林大学·刘博)
  • 面向多任务、多通道并行爬虫的技术研究(哈尔滨工业大学·李学凯)
  • 基于分布式的个性化推荐系统的设计与实现(华中科技大学·唐赛)
  • 基于深度学习知识追踪模型的在线教育数据挖掘研究(哈尔滨工业大学·徐盛原)
  • 面向多任务、多通道并行爬虫的技术研究(哈尔滨工业大学·李学凯)
  • 主题爬虫的实现及其关键技术研究(武汉理工大学·张航)
  • 基于微服务架构的学习系统设计与实现(华中师范大学·熊其昌)
  • 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
  • 主题爬虫关键技术研究(哈尔滨工程大学·黄正德)
  • 基于数据挖掘的用户上网行为分析(中央民族大学·丰玄霜)
  • 视频处理平台的设计与实现(北京交通大学·时月月)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设货栈 ,原文地址:https://m.bishedaima.com/yuanma/35755.html

相关推荐

发表回复

登录后才能评论