import pandas as pd
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
data = pd.read_csv('2-game_sales_cleaned.csv')
# NA使用平均值填充异常值
plt.boxplot(data['NA_Sales'], vert=False)
plt.title('2-NA_Sales Distribution ')
plt.show()
#EU使用平均值填充异常值
plt.boxplot(data['EU_Sales'], vert=False)
plt.title('2-EU_Sales Distribution ')
plt.show()
#JP使用平均值填充异常值
plt.boxplot(data['JP_Sales'], vert=False)
plt.title('2-JP_Sales Distribution ')
plt.show()
# 选择用于聚类的特征列
features = ['JP_Sales', 'EU_Sales', 'NA_Sales']
X = data[features]
# 因为销量值的范围是0到2,所以可以使用MinMaxScaler标准化,虽然在这个范围内标准化并不是必须的
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)
# 执行AGNES层次聚类
linked = linkage(X_scaled, 'average')
# 尝试不同的聚类数量并计算轮廓系数
silhouette_avg = []
for i in range(2, 10): # 假设我们测试2到9个聚类
clusters = fcluster(linked, t=i, criterion='maxclust')
score = silhouette_score(X_scaled, clusters)
silhouette_avg.append(score)
# 找出轮廓系数最大的聚类数
optimal_clusters = silhouette_avg.index(max(silhouette_avg)) + 2
print(f"Optimal number of clusters: {optimal_clusters}")
# 使用最佳聚类数进行最终聚类
final_clusters = fcluster(linked, t=optimal_clusters, criterion='maxclust')
# 使用dendrogram可视化层次聚类
plt.figure(figsize=(10, 7))
dendrogram(linked,
orientation='top',
labels=data.index,
distance_sort='descending',
show_leaf_counts=True)
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('Sample index')
plt.ylabel('Distance')
plt.show()
# 选择两个特征进行二维可视化
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=final_clusters, cmap='viridis', alpha=0.7)
plt.xlabel('Japan Sales (Scaled)')
plt.ylabel('Europe Sales (Scaled)')
plt.title('AGNES Clustering Results')
plt.colorbar(label='Cluster')
plt.show()
from mpl_toolkits.mplot3d import Axes3D
# 创建三维散点图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X_scaled[:, 0], X_scaled[:, 1], X_scaled[:, 2], c=final_clusters, cmap='viridis', alpha=0.7)
ax.set_xlabel('Japan Sales (Scaled)')
ax.set_ylabel('Europe Sales (Scaled)')
ax.set_zlabel('NA Sales (Scaled)')
ax.set_title('3D View of AGNES Clustering Results')
plt.show()
没有合适的资源?快使用搜索试试~ 我知道了~
K均值聚类算法 基于密度的空间聚类与噪声应用
共4个文件
py:2个
ipynb:2个
需积分: 5 0 下载量 92 浏览量
2024-08-15
09:17:34
上传
评论
收藏 483KB ZIP 举报
温馨提示
丁星文:AGNES(AGglomerative Nesting) 朱媚:STING(Statistical Information Grid-based method) 何颖君:K-means(K均值聚类算法) 杨碧容:DBSCAN(基于密度的空间聚类与噪声应用
资源推荐
资源详情
资源评论
收起资源包目录
experiment-three-master.zip (4个子文件)
experiment-three-master
DBSCAN.ipynb 303KB
AGNES模型1.py 3KB
k-means.ipynb 413KB
CLIQUE 算法(1).py 1KB
共 4 条
- 1
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 7361
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功