第1关:美国国家教育统计中心数据——降维

# -*- coding: utf-8 -*-
import pandas as pd #用于生成满足绘图要求的数据格式
from sklearn.manifold import MDS #用于MDS降维
import matplotlib.pyplot as plt #用于绘制撒点图
from sklearn.cluster import KMeans #用于Kmeans聚类
from scipy.spatial import distance #用于计算获取距离矩阵
edu=pd.read_csv(r"MDS/csv/education.csv") #读取csv数据,返回值为二维标记数据结构 DataFrame
def plot():
    # ********* Begin *********#
    edu_x=edu.iloc[:,1:7] #选择edu中的第 1 列到第 6 列  
    DM_dist = distance.squareform(distance.pdist(edu_x, metric="euclidean")) #计算距离矩阵 
    clf2 = MDS(n_components=2,dissimilarity="precomputed") 
    edu_t2 = clf2.fit_transform(DM_dist)  
    fig,ax=plt.subplots() 
    ax.scatter(edu_t2[:,0],edu_t2[:,1]) 
    names=list(edu.iloc[:,0]) 
    for i in range(len(names)):  
        plt.annotate(names[i], xy = (edu_t2[:,0][i],edu_t2[:,1][i]), xytext=(-20, 5), textcoords='offset points') 
    # ********* End *********#
    plt.savefig("MDS/studentanswer/level_1/education.png")
    plt.close()

第2关:美国国家教育统计中心数据——分别按特征和聚

# -*- coding: utf-8 -*-
import pandas as pd #用于生成满足绘图要求的数据格式
from sklearn.manifold import MDS #用于MDS降维
import matplotlib.pyplot as plt #用于绘制撒点图
from sklearn.cluster import KMeans #用于Kmeans聚类
from scipy.spatial import distance #用于计算获取距离矩阵
edu=pd.read_csv(r"MDS/csv/education.csv") #读取csv数据,返回值为二维标记数据结构 DataFrame
def plot():
    # ********* Begin *********#
    edu_x=edu.iloc[:,1:7] #选择edu中的第 1 列到第 6 列  
    DM_dist = distance.squareform(distance.pdist(edu_x, metric="euclidean")) #计算距离矩阵 
    clf2 = MDS(n_components=2,dissimilarity="precomputed") 
    edu_t2 = clf2.fit_transform(DM_dist)  
    fig,ax=plt.subplots()   
    reading_colors_list=[] 
    average=sum(edu_x["reading"])/len(edu_x["reading"]) #计算阅读平均值  
    for i in range(0,len(edu_x["reading"])):  
        if edu_x["reading"][i] < average:  
            reading_colors_list.append("#DB7093") #小于平均值的数据为粉红色,并添加到颜色列表
        else:  
            reading_colors_list.append("#5F9F9F") #大于平均值的数据为灰绿色,并添加到颜色列
    ax.scatter(edu_t2[:,0],edu_t2[:,1],color=reading_colors_list) 
    names=list(edu.iloc[:,0]) #选择州名这一列数据  
    for i in range(len(names)):  
        plt.annotate(names[i], xy = (edu_t2[:,0][i],edu_t2[:,1][i]), xytext=(-20, 5), textcoords='offset points',color=reading_colors_list[i])
    plt.show()   
    # ********* End *********#
    plt.savefig("MDS/studentanswer/level_2/education.png")
    plt.close()
Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐