参考文章:https://blog.csdn.net/eastmount/article/details/53285192
特征降维是指采用一个低纬度的特征来表示高纬度。特征降维一般有两类方法:特征选择(Feature Selection)和特征提取(Feature Extraction)。
2.特征提取是指将高纬度的特征经过某个函数映射至低纬度作为新的特征。常用的特征抽取方法就是PCA(主成分分析)和LDA(线性判别分析) 。
聚类糖尿病及PCA降维
#-*-coding:utf-8 -*- #导入糖尿病数据 import numpy as np from sklearn.datasets import load_diabetes data = load_diabetes() x = data.data print x[:4] y = data.target print y[:4] #KMeans聚类算法 from sklearn.cluster import KMeans #训练 clf = KMeans(n_clusters=2) print clf clf.fit(x) #预测 pre = clf.predict(x) print pre[:10] #降维 from sklearn.decomposition import PCA pca = PCA(n_components=2) newData = pca.fit_transform(x) print newData[:4] L1 = [n[0] for n in newData] L2 = [n[1] for n in newData] #绘图 import matplotlib.pyplot as plt #用来正常显示中文标签 plt.rc('font',family='SimHei',size=8) #plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示负号 plt.rcParams['axes.unicode_minus']=False p1 = plt.subplot(221) plt.title('kmeans n=2') plt.scatter(L1,L2,c=pre,marker='s') plt.sca(p1) #类簇3 clf = KMeans(n_clusters=3) clf.fit(x) pre = clf.predict(x) p2 = plt.subplot(222) plt.title('kmeans n=3') plt.scatter(L1,L2,c=pre,marker='s') plt.sca(p2) #类簇4 clf = KMeans(n_clusters=4) clf.fit(x) pre = clf.predict(x) p3 = plt.subplot(223) plt.title('kmeans n=4') plt.scatter(L1,L2,c=pre,marker='s') plt.sca(p3) #类簇5 clf = KMeans(n_clusters=5) clf.fit(x) pre = clf.predict(x) p4 = plt.subplot(224) plt.title("Kmeans n=5") plt.scatter(L1,L2,c=pre,marker="+") plt.sca(p4) #保存图片本地 plt.savefig('power.png', dpi=300) plt.show()
运行结果