为了完成你的要求,我们可以使用Python中的Pandas、Matplotlib和Scikit-learn库。首先,我们将读取moon.csv文件,并绘制散点图来展示数据。
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('moon.csv')
# 绘制散点图
plt.scatter(data[data['Label'] == 0]['X1'], data[data['Label'] == 0]['X2'], c='blue', label='Label 0')
plt.scatter(data[data['Label'] == 1]['X1'], data[data['Label'] == 1]['X2'], c='red', label='Label 1')
plt.xlabel('X1')
plt.ylabel('X2')
plt.legend()
plt.show()
接下来,我们可以使用K-means算法对数据进行聚类分析,并生成新的标签。
from sklearn.cluster import KMeans
# 提取特征向量
features = data[['X1', 'X2']]
# 使用K-means算法进行聚类分析
kmeans = KMeans(n_clusters=2)
kmeans.fit(features)
# 获取新的聚类标签并添加到原数据中
data['New_Label'] = kmeans.labels_
# 打印结果
print(data.head())
然后,我们可以统计正确分类的比例,并计算K-means聚类算法的轮廓系数。
from sklearn.metrics import silhouette_score
# 计算正确分类比例
correct_classification_ratio = sum(data['Label'] == data['New_Label']) / len(data)
print("Correct Classification Ratio (K-means):", correct_classification_ratio)
# 计算轮廓系数
silhouette_coefficient = silhouette_score(features, kmeans.labels_)
print("Silhouette Coefficient (K-means):", silhouette_coefficient)
类似地,我们可以使用层次聚类和DBSCAN算法进行分析,并计算正确分类比例和轮廓系数。你可以尝试修改代码来完成这两个任务。
希望以上代码对你有所帮助!
内容由零声教学AI助手提供,问题来源于学员提问




