ZBLOG

读取数据moon.csv, 部分数据如下 X1 X2 Label 0.682988 -0.3452 1 2.04099 -0.13161 1 -0.13975 0.454391 1 0.885748 0.286342 0 1.182459 -0.49771 1 1.019208 -0.42547 1 0.389362 -0.24712 1 -0.56038 0.712681 0 0.901844 0.053931 0 0.206748 0.006208 1 1.323523 -0.2891...

以下是根据您提供的要求的Python代码示例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans, AgglomerativeClustering, DBSCAN
from sklearn.metrics import silhouette_score

# 读取数据
data = pd.read_csv('moon.csv')

# 绘制散点图
plt.scatter(data['X1'], data['X2'], c=data['Label'])
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('Scatter Plot')
plt.show()

# 使用K-means进行聚类分析并生成新的标签
kmeans = KMeans(n_clusters=2)
kmeans_labels = kmeans.fit_predict(data[['X1', 'X2']])
data['KMeans_Label'] = kmeans_labels

# 计算正确分类的比例(与真实标签比较)
correct_kmeans = (data['Label'] == data['KMeans_Label']).sum() / len(data)

# 计算K-means的轮廓系数
silhouette_kmeans = silhouette_score(data[['X1', 'X2']], kmeans_labels)

# 使用层次聚类进行聚类分析并生成新的标签
agg_clustering = AgglomerativeClustering(n_clusters=2)
agg_labels = agg_clustering.fit_predict(data[['X1', 'X2']])
data['Agg_Label'] = agg_labels

# 计算正确分类的比例(与真实标签比较)
correct_agg = (data['Label'] == data['Agg_Label']).sum() / len(data)

# 计算层次聚类的轮廓系数
silhouette_agg = silhouette_score(data[['X1', 'X2']], agg_labels)

# 使用DBSCAN进行聚类分析并生成新的标签
dbscan = DBSCAN(eps=0.3, min_samples=5)
dbscan_labels = dbscan.fit_predict(data[['X1', 'X2']])
data['DBSCAN_Label'] = dbscan_labels

# 计算正确分类的比例(与真实标签比较)
correct_dbscan = (data['Label'] == data['DBSCAN_Label']).sum() / len(data)

# 计算DBSCAN的轮廓系数
silhouette_dbscan = silhouette_score(data[['X1', 'X2']], dbscan_labels)

# 将新的聚类标签和原来的标签写入原始数据文件中
data.to_csv('moon.csv', index=False)

print("K-means 正确分类比例:", correct_kmeans)
print("K-means 轮廓系数:", silhouette_kmeans)
print("层次聚类 正确分类比例:", correct_agg)
print("层次聚类 轮廓系数:", silhouette_agg)
print("DBSCAN 正确分类比例:", correct_dbscan)
print("DBSCAN 轮廓系数:", silhouette_dbscan)

这段代码首先读取moon.csv文件,并使用Matplotlib库绘制散点图,不同标签颜色不同。然后使用K-means、层次聚类和DBSCAN三种算法对数据进行聚类分析,并将生成的新标签添加到原始数据中。接着计算每个算法在与真实标签比较时的正确分类比例,并计算轮廓系数。

最后,将包含新标签的数据写回原始文件,并输出每个聚类算法的正确分类比例和轮廓系数。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=14435

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?