6.4 差异可视化-多维量法(MDS)

该代码实现了对美国国家教育统计中心数据的处理,使用MDS进行降维,然后用KMeans进行聚类。第一部分主要展示数据降维后的散点图,而第二部分则根据阅读成绩的平均值将数据点着色,以区分高于和低于平均阅读水平的州。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第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()
### 多维尺度分析(MDS)在差异可视化中的应用及头歌教育平台的使用方 多维尺度分析(Multidimensional Scaling, MDS)是一种强大的降维技术,能够将高维数据映射到低维空间中,同时尽保持原始数据中点与点之间的距离关系。这使得MDS成为一种非常有效的工具,用于揭示数据中的模式、群组和关系[^1]。 #### 1. MDS差异可视化中的应用 MDS的核心目标是通过构建一个相似性矩阵,并将其转换为低维空间中的点表示,从而实现对数据差异可视化。具体而言: - **相似性矩阵**:首先需要定义对象间的相似性或距离度,例如欧氏距离、余弦相似性等,并基于这些度构建一个相似性矩阵[^3]。 - **降维与优化**:通过优化算(如梯度下降),找到每个对象在低维空间中的位置,以最小化应力函数[^2]。应力函数衡了低维空间中的距离与原始相似性矩阵之间的差异- **可视化结果**:最终的低维表示可以通过散点图或其他图形展示,帮助用户直观地理解数据中的差异和关系。 #### 2. 头歌教育平台中MDS的应用 头歌教育平台可能利用MDS进行以下方面的差异可视化- **学习行为分析**:通过分析学生的学习行为数据(如作业完成时间、答题正确率等),构建相似性矩阵,并使用MDS将这些数据映射到二维或三维空间中,以揭示不同学生的学习模式差异[^4]。 - **课程内容评估**:对于不同的课程内容或教学资源,可以计算它们之间的相似性(如文本相似性、知识点覆盖范围等),并使用MDS生成可视化图表,帮助教师了解课程内容之间的关系。 - **个性化推荐**:根据学生的偏好和行为数据,使用MDS生成低维表示,从而为学生提供个性化的学习资源推荐。 #### 3. 使用MDS进行差异可视化的步骤 以下是使用MDS进行差异可视化的典型步骤: ```python import numpy as np from sklearn.manifold import MDS import matplotlib.pyplot as plt # 构建相似性矩阵 similarity_matrix = np.array([[0, 1, 2], [1, 0, 1], [2, 1, 0]]) # 示例矩阵 # 初始化MDS模型 mds = MDS(n_components=2, dissimilarity='precomputed', random_state=1) # 计算低维表示 low_dim_representation = mds.fit_transform(similarity_matrix) # 可视化结果 plt.scatter(low_dim_representation[:, 0], low_dim_representation[:, 1]) plt.xlabel("Dimension 1") plt.ylabel("Dimension 2") plt.title("MDS Visualization") plt.show() ``` 上述代码展示了如何使用`sklearn`库中的`MDS`模块进行差异可视化。其中,`n_components`参数指定目标维度,`dissimilarity='precomputed'`表示输入是一个预计算的距离矩阵[^2]。 #### 4. 注意事项 - 如果数据是可计的(如等距或比例尺度),可以使用经典的MDS(Metric MDS)。如果数据是非计的(如顺序尺度),则需要使用非经典的MDS(Nonmetric MDS)[^4]。 - 在实际应用中,需要根据数据特性和研究目的选择合适的MDS类型,并注意优化过程中的收敛性问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问问问你的心

一起学习一起努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值