特征提取:PCA主成分分析法和NMF非负矩阵分解法

1 from sklearn.datasets import load_wine
2 from sklearn.preprocessing import StandardScaler
3 wine=load_wine()
4 X,y=wine.data,wine.target
5 scaler=StandardScaler()
6 X_scaled=scaler.fit_transform(X)
1 from sklearn.decomposition import PCA
2 pca=PCA(n_components=2)
3 pca.fit(X_scaled)
4 X_pca=pca.transform(X_scaled)
5 X0=X_pca[wine.target==0]
6 X1=X_pca[wine.target==1]
7 X2=X_pca[wine.target==2]
1 import matplotlib.pyplot as plt
2 plt.scatter(X0[:,0],X0[:,1],c='b',s=60,edgecolors='k')
3 plt.scatter(X1[:,0],X1[:,1],c='g',s=60,edgecolors='k')
4 plt.scatter(X2[:,0],X2[:,1],c='r',s=60,edgecolors='k')
5 plt.legend(wine.target_names,loc='best')
6 plt.xlabel("component 1")
7 plt.ylabel("component 2")
8 plt.show()
1 plt.matshow(pca.components_,cmap='plasma')
2 plt.yticks([0,1],['component 1','component 2'])
3 plt.colorbar()
4 plt.xticks(range(len(wine.feature_names)),wine.feature_names,rotation=20,ha='left')
5 plt.show()

 

复制代码
 1 from sklearn.decomposition import NMF
 2 from sklearn.preprocessing import MinMaxScaler
 3 mms=MinMaxScaler()
 4 nmf=NMF(n_components=2)
 5 X_scaled=mms.fit_transform(X)
 6 nmf.fit(X_scaled)
 7 X_nmf=nmf.transform(X_scaled)
 8 print(X_nmf.shape)
 9 X0=X_nmf[wine.target==0]
10 X1=X_nmf[wine.target==1]
11 X2=X_nmf[wine.target==2]
复制代码
1 import matplotlib.pyplot as plt
2 plt.scatter(X0[:,0],X0[:,1],c='b',s=60,edgecolors='k')
3 plt.scatter(X1[:,0],X1[:,1],c='g',s=60,edgecolors='k')
4 plt.scatter(X2[:,0],X2[:,1],c='r',s=60,edgecolors='k')
5 plt.legend(wine.target_names,loc='best')
6 plt.xlabel("component 1")
7 plt.ylabel("component 2")
8 plt.show()

 

posted @   Lovaer  阅读(1281)  评论(0编辑  收藏  举报
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
点击右上角即可分享
微信分享提示