PCA降维以及Kmeans聚类实例----python,sklearn,PCA,Kmeans

来源:互联网 发布:光栅立体画制作软件 编辑:程序博客网 时间:2024/06/06 14:55

PCA 算法也叫主成分分析(principal components analysis),主要是用于数据降维的。关于降维,可以这样理解,一组数据有n个feature(客户年龄,收入,每个月消费额度等等),每一个feature有一系列的观测点。而这n个feature中有一些存在线性相关,比如对于某些群体而言,收入和消费是线性相关的。此时我们进行多维度数据分析时只需要考虑其中一个参数就可以足够了,这样就能减少一个feature(维度),PCA方法就是用严谨的数据方法实现了这一过程。具体原理见下文,写十分清楚:

http://blog.codinglabs.org/articles/pca-tutorial.html

本例子主要介绍了sklearn中PCA的简单实现以及在降维后的快速聚类:

以下为输入数据


from sklearn.decomposition import PCAfrom sklearn.cluster import KMeansimport pandas as pdimport numpy as np#pca.txt是一个没有表头的多维数据,一共有7列,利用pandas读取df = pd.read_table('d:/PCA.txt')#将df转换成矩阵dataMat = np.array(df)#调用sklearn中的PCA,其中主成分有5列pca_sk = PCA(n_components=5)#利用PCA进行降维,数据存在newMat中newMat = pca_sk.fit_transform(dataMat)#利用KMeans进行聚类,分为3类kmeans = KMeans(n_clusters=3,random_state=0).fit(newMat)#labels为分类的标签labels = kmeans.labels_#把标签加入到矩阵中用DataFrame生成新的df,index为类别的编号,这里是0,1,2dataDf = pd.DataFrame(newMat,index=labels,columns=['x1','x2','x3','x4','x5'])#数据保存在excel文件中dataDf.to_excel('d:/pca_cluster.xls')print(pca_sk.explained_variance_ratio_)

输出:

[ 0.85847673  0.09840701  0.0223092   0.01740787  0.00304186]

结果为每一列所占特征方差的百分比,总和为0.9996说明降维保持了原数据的特征

excel数据输出结果为


原创粉丝点击