机器学习 sklearn 无监督学习 降维算法 NMF Non-negative Matrix Factorization
Posted 404detective
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习 sklearn 无监督学习 降维算法 NMF Non-negative Matrix Factorization相关的知识,希望对你有一定的参考价值。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets import make_blobs
from sklearn.decomposition import NMF
from sklearn.datasets import load_iris
iris = load_iris()
iris_X = iris.data #x有4个属性,共有150个样本点
iris_y = iris.target #y的取值有3个,分别是0,1,2
NMF = NMF(n_components=2)
NMF.fit(iris_X)
X_new = NMF.transform(iris_X)
# plt.scatter(X_new[:], X_new[:], marker='o',c=iris_y)
plt.scatter(X_new[:, 0], X_new[:, 1], marker='o',c=iris_y)
# fig = plt.figure()
# ax = Axes3D(fig, rect=[0, 0, 1, 1], elev=30, azim=20)
# plt.scatter(X_new[:, 0], X_new[:, 1], X_new[:, 2], marker='o',c=iris_y)
plt.show()
降为一维
降为二维
(不指定维度)
降为三维
应用
import sklearn.decomposition as dp
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_olivetti_faces
from numpy.random import RandomState #创建随机种子
n_row,n_col=2,3
n_components=n_row*n_col
image_shape=(64,64)
datasets=fetch_olivetti_faces(shuffle=True,random_state=RandomState(0))
#dataset=fetch_olivetti_faces(data_home=None,shuffle=False,random_state=0,download_if_missing=True)
faces=datasets.data #加载工打开数据
def plot_gallery(title,images,n_col=n_col,n_row=n_row):
plt.figure(figsize=(2.*n_col,2.26*n_row)) #创建图片,并指定图片大小
plt.suptitle(title,size=18) #设置标题及字号大小
for i,comp in enumerate(images):
plt.subplot(n_row,n_col,i+1) #选择绘制的子图
vmax=max(comp.max(),-comp.min())
plt.imshow(comp.reshape(image_shape),cmap=plt.cm.gray,
interpolation='nearest',vmin=-vmax,vmax=vmax) #对数值归一化,并以灰度图形式显示
plt.xticks(())
plt.yticks(()) #去除子图的坐标轴标签
plt.subplots_adjust(0.01,0.05,0.99,0.94,0.04,0.) #对子图位置及间隔调整
plot_gallery('First centered Olivetti faces',faces[:n_components])
estimators=[
('Eigenfaces-PCA using randomized SVD',
dp.PCA(n_components=6,whiten=True)),
('Non-negative components - NMF',
dp.NMF(n_components=6,init='nndsvda',
tol=5e-3))] #NMF和PCA实例化
for name,estimator in estimators: #分别调用PCA和NMF
estimator.fit(faces) #调用PCA或NMF提取特征
components_=estimator.components_ #获取提取的特征
plot_gallery(name,components_[:n_components]) #按照固定格式进行排列
plt.show()
效果展示
以上是关于机器学习 sklearn 无监督学习 降维算法 NMF Non-negative Matrix Factorization的主要内容,如果未能解决你的问题,请参考以下文章
机器学习 sklearn 无监督学习 降维算法 NMF Non-negative Matrix Factorization
机器学习 sklearn 无监督学习 降维算法 NMF Non-negative Matrix Factorization
机器学习 sklearn 无监督学习 聚类算法 DBSCAN