机器学习——NMF非负矩阵分解

之前学习了常用的两种将为技术:

  • 主成分分析(PCA):用于处理高斯分布的数据
  • 独立成分析(ICA):用于处理费高斯分布的数据

而非负矩阵分解也是一张常用的数据降维技术,其基本操作和PCA、ICA类似,但是在数据都是非负的情况之下用处非常多,所以在一些特定场合(如图像处理等),非常受欢迎,其使用方法和前两种十分类似,参考:https://baike.baidu.com/item/非负矩阵分解/4571142

看代码:

# ——创建时间:2019.3.7——
# 非负矩阵分解
from sklearn import decomposition
import numpy as np
import matplotlib.pyplot as plt
import matplotlib

# matplotlib.rcParams['font.sans-serif'] = ['KaiTi']
# matplotlib.rcParams['font.serif'] = ['KaiTi']
plt.rcParams['font.sans-serif']=['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号

mean = [20,20]
cov = ([5,0],[25,25])
x,y = np.random.multivariate_normal(mean,cov,10000).T
nmf = decomposition.FastICA()
X = np.vstack((x,y)).T # 将x,y组成特征矩阵
x2 = nmf.fit_transform(X)
plt.plot(x2[:,0],x2[:,1],'o')
plt.xlabel('第一个非负成分')
plt.ylabel('第二个非负成分')
plt.axis([-0.075,0.075,-0.075,0.075])
plt.show()

运行效果:

机器学习——NMF非负矩阵分解