ZBLOG

读取数据moon.csv, 数据的行如下 Label不是0就是1 X1 X2 Label 数据包含400个平面点的坐标 其中X1,X2分别为横坐标和纵坐标分量,Label为这些点相应的的真实标签。 要求: 1.画出散点图(不同标签颜色不同) 2.忽略真实标签,用k-means对这些点进行聚类分析(分成2类),并生成新的标签(作为新的一列写到原来的moon.csv文件中),将新的聚类标签和原来的标签比较,统计正确分类的比例。最后再计算本聚类算法的轮廓系数 。 3.类似上面思路,分别...

好的,根据您的需求,我们来逐步完成这些任务。

首先,请确保已经安装了以下依赖库:

pip install pandas matplotlib scikit-learn

然后,您可以使用下面的代码来完成您的需求:

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

# 1. 读取数据并绘制散点图
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 of the data')
plt.show()

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

# 统计正确分类的比例
correct_count = sum(data['NewLabel'] == data['Label'])
accuracy = correct_count / len(data)

# 计算轮廓系数
silhouette_avg = silhouette_score(data[['X1', 'X2']], data['NewLabel'])

print("K-means - 正确分类比例:", accuracy)
print("K-means - 轮廓系数:", silhouette_avg)

# 3. 使用层次聚类进行聚类并生成新标签
agg_cluster = AgglomerativeClustering(n_clusters=2)
data['AggLabel'] = agg_cluster.fit_predict(data[['X1', 'X2']])

# 统计正确分类的比例
correct_count_agg = sum(data['AggLabel'] == data['Label'])
accuracy_agg = correct_count_agg / len(data)

# 计算轮廓系数
silhouette_avg_agg = silhouette_score(data[['X1', 'X2']], data['AggLabel'])

print("层次聚类 - 正确分类比例:", accuracy_agg)
print("层次聚类 - 轮廓系数:", silhouette_avg_agg)

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

# 统计正确分类的比例(-1表示噪音点,不参与统计)
correct_count_dbscan = sum((data['DBScanLabel'] != -1) & (data['DBScanLabel'] == data['Label']))
accuracy_dbscan = correct_count_dbscan / len(data[data['DBScanLabel'] != -1])

# 计算轮廓系数(-1表示噪音点,不参与计算)
silhouette_avg_dbscan = silhouette_score(data[['X1', 'X2']], data[data['DBScanLabel'] != -1]['DBScanLabel'])

print("DBSCAN - 正确分类比例:", accuracy_dbscan)
print("DBSCAN - 轮廓系数:", silhouette_avg_dbscan)

# 将新标签写入原始CSV文件
data.to_csv('moon.csv', index=False)

请注意,上述代码假设数据集文件名为moon.csv,且该文件在当前工作目录下。如果数据集文件的路径不同,请根据实际情况修改代码中的文件路径。

运行以上代码后,会依次显示散点图和各聚类算法的正确分类比例及轮廓系数。同时,新生成的聚类标签也会写入原始的moon.csv文件中。

希望这可以帮助到您!如有任何问题,请随时提问。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?