使用MLP进行iris数据集的分类

本文是通过自己的理解进行的实验并进行文章撰写,如有问题请批评指正

数据准备

首先使用的是sklearn自带的iris数据集,使用datasets.load_iris()导入数据,数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性。然后使用StandardScaler去均值和方差归一化的,通过pycharm中查看源码显示Standardize features by removing the mean and scaling to unit variance。这个函数使用的计算方法为z = (x - u) / s,u is the mean of the training samples or zero if with_mean=False,and s is the standard deviation of the training samples or one if with_std=False.通过这个操作可以让数据样本特征标准化,这样使数据更加集中更加规则,标准化和归一化能够使不同维度的特征在数值上更具比较性,进而提高分类器的准确性,然后fit生成规则,将制定好的规则应用于之前导入的iris数据集上。


MLP分类器创建

然后生成一个MLP分类器,也就是多层感知机的分类器,在这里使用的是MLPClassifier函数来生成一个指定的MLP分类器,代码中的多层神经网络是含有三层隐含层的神经网络,第一层有30个神经元,第二层有20个神经元,第三层有10个神经元,最大迭代次数为800次,使用的损失函数优化器为adam,激活函数为tanh。

mlp = MLPClassifier(max_iter=800,             # 最大迭代次数
                    solver='adam',
                    activation='tanh',
                    # 3个隐含层,每层10个神经元
                    hidden_layer_sizes=(30, 20, 10),    
                    verbose=False)

绘制准确率变化曲线

然后使用学习曲线函数learning_curve,源码描述为Determines cross-validated training and test scores for different training set sizes.也就是针对不同训练集确定交叉验证的训练集和测试集的结果。这个函数的estimator是指进行训练和预测的方法,这里传入的是之前生成的MLP模型;X代表数据集,而Y代表的是数据集的标签,这里分别传入之前导入的iris数据集的相关数据和标签;train_sizes这个是用于生成学习曲线的训练样例到的相对或者绝对数量,默认值是np.linspace(0.1, 1.0, 5),传入的值也是这个,表示将训练集大小划分为5个相等的区间,在0.1到1.0之间线性的取5个值;cv是确定交叉验证的分离方法。交叉验证就是将原始数据集划分为相等的K部分(“折”)然后将第1部分作为测试集,其余作为训练集,训练模型,计算模型在测试集上的准确率,每次用不同的部分作为测试集,重复上述的过程K次,最后将平均准确率作为最终的模型准确率。150个样本等分5份(cv=5),每份30个样本,按k折交叉验证法,最多有30个样本作为验证集,故可用于训练集的样本最多个数是150-30=120个,即train_sizes最大值为120。
然后将不同规模训练集交叉验证的准确率变化曲线绘制出来,得到的结果图如下面所示

在这里插入图片描述


结果分析

随着训练样本数的增加,验证集的准确率曲线呈上升趋势:因为训练数据集的样本数越大也就使得样本代表的数据更加接进入全部的数据,也就是能够包括更多情况的数据,使得模型更具泛化能力,降低了噪声点对模型训练的影响,所以准确性越高,准确率曲线也就会呈上升的趋势。

从运行结果看,训练集准确率曲线变化很小,即样本数变化对其影响不大:因为在训练集的作用就是用来训练参数的,从训练集的数据上提取特征,对训练集上的数据进行不断的迭代优化,使得到的模型的性能不断提高,能够针对未出现在训练集上的数据进行预测,所以训练集是模型训练的数据来源,在此基础上就行调优,所以在训练集上的准确率较高并且随样本数增加变化不大。

交叉验证方法:所使用的数据集不是很多,使用交叉验证训练的时候将所有的数据用作了训练,没有留数据做测试,K折交叉验证用于模型调优,找到使得模型泛化性能最优的超参值,用于评估模型的预测性能,尤其是训练好的模型在新数据上的表现,可以在一定程度上减小过拟合。

猜你喜欢

转载自blog.csdn.net/qq_48068259/article/details/127881392