NMF降维
具体原理不再赘述. 网上一堆.
大多数NMF案例都是针对于人脸数据集进行降维操作, 本文章记录NMF对鸢尾花数据集进行操作.
目标: 鸢尾花数据集的X共四个维度(四个特征), 要将其降到两个维度, 并可视化.
代码实现
from sklearn import decomposition
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
nmf = decomposition.NMF(n_components=2)
dataset = load_iris()
X = dataset.data
y = dataset.target
red_x, red_y = [], []
blue_x, blue_y = [], []
green_x, green_y = [], []
reduced_X = nmf.fit_transform(X) # 降到二维后, reduce_X应该是二维的, 第一个维度大小等于样本个数, 第二个维度存储对应的第n个样本的降维后的两个特征, 与n_components参数对应.
for i in range(len(reduced_X)):
if y[i] == 0:
red_x.append(reduced_X[i][0])
red_y.append(reduced_X[i][1])
elif y[i] == 1:
blue_x.append(reduced_X[i][0])
blue_y.append(reduced_X[i][1])
else:
green_x.append(reduced_X[i][0])
green_y.append(reduced_X[i][1])
plt.scatter(red_x, red_y, color='r')
plt.scatter(blue_x, blue_y, color='b')
plt.scatter(green_x, green_y, color='g')
plt.show()