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...

好的,让我们逐步完成这些任务。

首先,我们需要导入必要的库,并读取moon.csv文件中的数据。你可以使用Pandas库来读取和处理数据,Matplotlib库用于绘制散点图。

import pandas as pd
import matplotlib.pyplot as plt

# 读取moon.csv文件
data = pd.read_csv('moon.csv')

# 打印部分数据
print(data.head())

接下来,我们将绘制散点图来可视化数据。不同标签的样本应该以不同颜色表示。

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

现在我们已经画出了散点图,每个类别都有不同的颜色。下面我们开始进行聚类分析。

对于K-means算法,可以使用sklearn库中的KMeans模块。我们将把新的聚类标签添加到原始数据集中,并计算正确分类比例和轮廓系数。

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# 使用K-means算法进行聚类分析(2个簇)
kmeans = KMeans(n_clusters=2)
kmeans.fit(data[['X1', 'X2']])

# 添加新标签到原始数据集中
data['New_Label_Kmeans'] = kmeans.labels_

# 计算正确分类比例(与原始标签比较)
correct_kmeans = sum(data['Label'] == data['New_Label_Kmeans']) / len(data)
print("K-means正确分类比例:", correct_kmeans)

# 计算轮廓系数
silhouette_avg_kmeans = silhouette_score(data[['X1', 'X2']], kmeans.labels_)
print("K-means轮廓系数:", silhouette_avg_kmeans)

接下来,我们使用层次聚类和DBSCAN算法进行相似的操作。

对于层次聚类,可以使用sklearn库中的AgglomerativeClustering模块。同样,我们将添加新标签到原始数据集并计算正确分类比例和轮廓系数。

from sklearn.cluster import AgglomerativeClustering

# 使用层次聚类进行聚类分析(2个簇)
agg_clustering = AgglomerativeClustering(n_clusters=2)
agg_clustering.fit(data[['X1', 'X2']])

# 添加新标签到原始数据集中
data['New_Label_Agg'] = agg_clustering.labels_

# 计算正确分类比例(与原始标签比较)
correct_agg = sum(data['Label'] == data['New_Label_Agg']) / len(data)
print("层次聚类正确分类比例:", correct_agg)

# 计算轮廓系数
silhouette_avg_agg = silhouette_score(data[['X1', 'X2']], agg_clustering.labels_)
print("层次聚类轮廓系数:", silhouette_avg_agg)

最后,我们使用DBSCAN算法。同样地,添加新标签并计算正确分类比例和轮廓系数。

from sklearn.cluster import DBSCAN

# 使用DBSCAN进行聚类分析
dbscan = DBSCAN(eps=0.3, min_samples=5)
dbscan.fit(data[['X1', 'X2']])

# 添加新标签到原始数据集中
data['New_Label_DBSCAN'] = dbscan.labels_

# 计算正确分类比例(与原始标签比较)
correct_dbscan = sum(data['Label'] == data['New_Label_DBSCAN']) / len(data)
print("DBSCAN正确分类比例:", correct_dbscan)

# 计算轮廓系数
silhouette_avg_dbscan = silhouette_score(data[['X1', 'X2']], dbscan.labels_)
print("DBSCAN轮廓系数:", silhouette_avg_dbscan)

这样,我们就完成了任务。你可以将以上代码整合起来,并运行以得到所需的结果。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?