第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()