理论教育 Python计算思维:小麦分类重要维度选取

Python计算思维:小麦分类重要维度选取

时间:2023-11-22 理论教育 版权反馈
【摘要】:删除这些不必要的特征后,用剩余的变量再次进行PCA分析,聚类的结果如图8.4.9所示。图8.4.9用挑选出来的变量PCA分析的得分图选择有效变量也可以使用机器学习包完成,下面代码是使用feature_selection包的F检验对小麦颗粒分类问题有效变量的选择程序。图8.4.10小麦分类关键变量选择图读者可以根据图8.4.10,设定阈值,找出显著变量。对重组的X,可再次用PCA对其分解作图,查看样本的分类情况。

Python计算思维:小麦分类重要维度选取

小麦的质量,可以通过小麦颗粒的光泽度、几何尺寸来判别,是一个典型的统计模式识别问题。本例中,将小麦颗粒平铺,用数码相机拍照,通过图像处理,获得每个小麦颗粒的光泽、几何尺寸等数据,最后通过对这些数据的PCA分析,建立小麦颗粒的质量模式。

首先整理小麦颗粒的数据,每个小麦颗粒由24个指标描述,数据放在一行,整理成一个文本文件,将这些小麦颗粒的人眼分类结果编写到另一个文件,它只有1列,优质小麦颗粒标记为1,劣质为-1。

由于每个小麦颗粒有24个特征,因此可采用降维的方法提取其关键信息,然后在低维空间中进行投影查看其自然聚集情况,这可以通过主成分分解来完成。下面是程序的代码。

程序:小麦分类

整个程序的思路为:先读取特征数据到A矩阵,再读取分类信息到B矩阵。接下来对数据按列进行预处理,这么做的原因是不同的列,量纲不同,数值差异大。处理后,每个特征变成均值为0,偏差为1。预处理后的数据经过主成分分解,获取得分矩阵T和载荷矩阵P。最后根据分类信息将不同类别的样本分开,保存在Tclass1和Tclass2两个列表中,作图显示。

载荷矩阵的贡献图,描述的是每个物理特征(共24个)对分类的贡献。载荷图中,每个物理量被表达为起于原点的一条直线。判断每个物理量的模长及向量的方向,并与对应的得分图中样本分开的方向一并考虑,可以挑选出对分类起主要贡献的物理量。程序的执行结果如图8.4.7及图8.4.8所示。

图8.4.7 样本的第一、第二主成分得分散点图

图8.4.8 第一、第二主成分载荷贡献图

从得分图8.4.7中看到,两类样本在水平方向被分开,因此可以从载荷贡献图8.4.8中寻找在水平方向上模比较长的物理量,它们就是对分类起关键作用的物理量。通过如此分析,查看载荷贡献图,发现序号为14、15、21、22、13、17、16、20、5的物理量对分类的作用小,因而可以删除。

删除这些不必要的特征后,用剩余的变量再次进行PCA分析,聚类的结果如图8.4.9所示。比较图8.4.7和图8.4.9,分类结果仍可以接受,但此时模式的可控性得到了很大的提高,变量从24个减少至15个。

图8.4.9 用挑选出来的变量PCA分析的得分图

选择有效变量也可以使用机器学习包完成,下面代码是使用feature_selection包的F检验对小麦颗粒分类问题有效变量的选择程序。

程序:小麦特征选择(www.daowen.com)

import numpy as np #矩阵运算包

import matplotlib.pyplot as plt #画图包

from sklearn.feature_selection import SelectPercentile,f_classif

X=np.loadtxt(r"E:\teach\教改项目教材\数据\小麦数据\wheat_train_PCA_X.txt")

y=np.loadtxt(r"E:\teach\教改项目教材\数据\小麦数据\wheat_train_PCA_Y.txt")

X_indices=np.arange(X.shape[-1]) #制图的横坐标,变量的个数 24

selector=SelectPercentile(f_classif,percentile=10)

selector.fit(X,y)

scores=-np.log10(selector.pvalues_)

#得到每个变量重要性p值的对数,p值越小,越重要

scores/=scores.max( )

plt.bar(X_indices,scores,width=.2,color=ˈgˈ,align=ˈcenterˈ)

plt.show( )

程序绘制的变量p值对数图如图8.4.10所示。

图8.4.10 小麦分类关键变量选择图

读者可以根据图8.4.10,设定阈值,找出显著变量。在上述程序代码的基础上,增加下面代码,可利用挑选的变量对X重组。

对重组的X,可再次用PCA对其分解作图,查看样本的分类情况。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈