用鸢尾花的4维数据,尝试不同的降维方式,观察变为两维数据后的效果
#!/usr/bin/python # -*- coding:utf-8 -*- import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import pandas as pd from sklearn.decomposition import FactorAnalysis from sklearn import metrics if __name__ == "__main__": mpl.rcParams['font.sans-serif'] = [u'SimHei'] mpl.rcParams['axes.unicode_minus'] = False iris_feature = '花萼长度', '花萼宽度', '花瓣长度', '花瓣宽度' path = 'iris.data' # 数据文件路径 data = pd.read_csv(path, header=None) x_prime = data.iloc[:,0:3] y = pd.Categorical(data[4]).codes from sklearn.decomposition import PCA from sklearn.manifold import TSNE pca = PCA(n_components=2) titles = ['原始数据','PCA','因子分析','tsne','lda'] fa = FactorAnalysis(n_components=2) tsne = TSNE(n_components=2) from sklearn.discriminant_analysis import LinearDiscriminantAnalysis lda = LinearDiscriminantAnalysis(n_components=2) model = [pca,fa,tsne,lda] plt.figure(figsize=(10,10)) for i in [1,2,3,4,5]: plt.subplot(2,3,i) if i == 1: plt.scatter(x_prime.iloc[:, 0], x_prime.iloc[:, 1], c=y) elif i ==5: X_new = model[i - 2].fit_transform(x_prime,y) plt.scatter(X_new[:, 0], X_new[:, 1], c=y) else: X_new = model[i-2].fit_transform(x_prime) plt.scatter(X_new[:, 0], X_new[:, 1], c=y) plt.title(titles[i-1]) plt.show()