1 Star 0 Fork 0

0_0请用洛必达/训练赛7

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
数据分析.py 2.10 KB
一键复制 编辑 原始数据 按行查看 历史
0_0请用洛必达 提交于 2024-08-24 21:00 . 4
import pandas as pd
from scipy.spatial.distance import pdist, squareform
from sklearn.manifold import MDS
import matplotlib.pyplot as plt
import networkx as nx
import community as community_louvain
# 读取combined_sum_results.csv文件
cluster_df = pd.read_csv('combined_sum_results.csv', index_col='分类名')
# 保持原始分类名,不简化簇名
# 2. 多维标度法(MDS)
# a. 计算距离矩阵
distance_matrix = pdist(cluster_df.values, metric='euclidean')
distance_matrix_square = squareform(distance_matrix)
# b. 计算目标函数并执行MDS
mds = MDS(n_components=2, dissimilarity="precomputed", random_state=42)
mds_fit = mds.fit_transform(distance_matrix_square)
# 创建一个DataFrame来存储降维后的结果
mds_df = pd.DataFrame(mds_fit, index=cluster_df.index, columns=['Dim1', 'Dim2'])
# c. 可视化MDS结果
plt.figure(figsize=(8, 6))
plt.scatter(mds_df['Dim1'], mds_df['Dim2'])
# 添加簇标签
for i in range(mds_df.shape[0]):
plt.text(mds_df['Dim1'][i], mds_df['Dim2'][i], mds_df.index[i])
plt.title('MDS 2D Visualization of Clusters')
plt.xlabel('Dim1')
plt.ylabel('Dim2')
plt.show()
# 3. 网络分析
# a. 构建基于距离的网络
G = nx.Graph()
# 添加节点
for cluster in mds_df.index:
G.add_node(cluster)
# 添加带权重的边(基于距离矩阵)
for i in range(len(cluster_df)):
for j in range(i+1, len(cluster_df)):
G.add_edge(mds_df.index[i], mds_df.index[j], weight=1/distance_matrix_square[i, j])
# b. 可视化网络
pos = nx.spring_layout(G)
plt.figure(figsize=(10, 8))
# 画节点和边
nx.draw_networkx_nodes(G, pos, node_size=700)
nx.draw_networkx_edges(G, pos, width=[G[u][v]['weight'] for u, v in G.edges()])
nx.draw_networkx_labels(G, pos)
plt.title('Network Visualization of Clusters')
plt.show()
# d. 社区检测
# 使用 Louvain 算法检测社区
partition = community_louvain.best_partition(G)
# 根据社区结果上色
colors = [partition[node] for node in G.nodes()]
plt.figure(figsize=(10, 8))
nx.draw_networkx(G, pos, node_color=colors, with_labels=True, node_size=700, cmap=plt.cm.jet)
plt.title('Louvain Community Detection')
plt.show()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhangzherui666/training-competition-7.git
git@gitee.com:zhangzherui666/training-competition-7.git
zhangzherui666
training-competition-7
训练赛7
master

搜索帮助