美文网首页
数据降维并使用K-Means法聚类

数据降维并使用K-Means法聚类

作者: 绍重先 | 来源:发表于2018-02-11 04:38 被阅读0次

    我对随机选择的30个国家和2017年所有国家的数据进行了主成分分析,并将多维的包括总分排名(排名或许要删除再计算->已删除)及12大指标的数据降维为二维数据,随后使用K-Means法进行聚类分析后得出分类以及散点图图像。

    #读取csv文件并整理数据 
    def readcsvYear(path):
        namesYear = ['Year','Rank','Total','SA','FE','GG','EC','UD','HF','SL','PS','HR','DP','RD','EX']
        data = pd.read_csv(path,header=None,names=namesYear)
        del data['Rank']
        return data
    
    data2017path = 'datasets/problemE/fsi2017.csv'
    data2017 = readcsvYear(data2017path)
    
    #主成分分析 数据降维度
    from sklearn.decomposition import PCA
    def getPCAData(data,comp):
        pcaClf = PCA(n_components=comp, whiten=True)
        pcaClf.fit(data)
        data_PCA = pcaClf.transform(data) # 用来降低维度
        return data_PCA
    
    def modiData(data):
        x1 = []
        x2=[]
        for i in range(0,len(data+1)):
            x1.append(data[i][0])
            x2.append(data[i][1])
        x1=np.array(x1)
        x2=np.array(x2)
        #重塑数据
        X=np.array(list(zip(x1,x2))).reshape(len(x1),2)
        return X
    #绘制样式
    def drawKmodel(XData,t):
        plt.figure(figsize=(10,10))
        colors = ['g','r','y','b']
        markers = ['o','s','d','h']
        kmeans_model = KMeans(n_clusters=t).fit(XData)
        for i,l in enumerate(kmeans_model.labels_):
            plt.plot(XData[i][0],XData[i][1],color=colors[l],marker=markers[l],ls='None')
            plt.title('%s Countries K-Means'%(len(XData)))
    
    data2017PCA = getPCAData(data2017,2)
    data2017X = modiData(data2017PCA)
    drawKmodel(data2017X,4)
    
    178Kmeansnorank.png 178KmeansBig.png 178Kmeans.png kmeans-first-k3.png

    由散点图发现:

    • 各国可根据脆弱等级划分为4类
    • 随机筛选的30个国家分类整体过度平缓(修改语言),但有3个国家区分度明显
    • Rank列数据对散点图影响

    http://vinking934296.iteye.com/blog/2356846
    下一步:

    • 分类畸变程度分析
    • 聚类效果评估
    • 增加气候指数数据 查看变化
    • 标注国家

    目前为止涉及方法有:

    • 时间序列预测法
    • 层次分析法(AHP)
    • 主成分分析(PCA)- 数据降维
    • K-Means硬聚类算法

    相关文章

      网友评论

          本文标题:数据降维并使用K-Means法聚类

          本文链接:https://www.haomeiwen.com/subject/ujqktftx.html