以下是Python代码的示例,用于实现您描述的任务。请确保已经安装了相关的库(如pandas、matplotlib、sklearn等)。
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')
labels = data['Label']
plt.scatter(data['X1'], data['X2'], c=labels)
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('Scatter Plot of Data')
plt.show()
# 2. 使用K-means进行聚类,并统计正确分类比例和轮廓系数
kmeans = KMeans(n_clusters=2)
kmeans.fit(data[['X1', 'X2']])
new_labels_kmeans = kmeans.labels_
data['New_Label_KMeans'] = new_labels_kmeans
correct_ratio_kmeans = sum(new_labels_kmeans == labels) / len(labels)
silhouette_coef_kmeans = silhouette_score(data[['X1', 'X2']], new_labels_kmeans)
print(f'Correct ratio (K-means): {correct_ratio_kmeans:.4f}')
print(f'Silhouette coefficient (K-means): {silhouette_coef_kmeans:.4f}')
# 3. 使用层次聚类进行聚类,并统计正确分类比例和轮廓系数
hierarchical_clustering = AgglomerativeClustering(n_clusters=2)
hierarchical_clustering.fit(data[['X1', 'X2']])
new_labels_hierarchical = hierarchical_clustering.labels_
data['New_Label_Hierarchical'] = new_labels_hierarchical
correct_ratio_hierarchical = sum(new_labels_hierarchical == labels) / len(labels)
silhouette_coef_hierarchical = silhouette_score(data[['X1', 'X2']], new_labels_hierarchical)
print(f'Correct ratio (Hierarchical): {correct_ratio_hierarchical:.4f}')
print(f'Silhouette coefficient (Hierarchical): {silhouette_coef_hierarchical:.4f}')
# 4. 使用DBSCAN进行聚类,并统计正确分类比例和轮廓系数
dbscan = DBSCAN(eps=0.3, min_samples=5)
dbscan.fit(data[['X1', 'X2']])
new_labels_dbscan = dbscan.labels_
data['New_Label_DBSCAN'] = new_labels_dbscan
correct_ratio_dbscan = sum(new_labels_dbscan == labels) / len(labels)
silhouette_coef_dbscan = silhouette_score(data[['X1', 'X2']], new_labels_dbscan)
print(f'Correct ratio (DBSCAN): {correct_ratio_dbscan:.4f}')
print(f'Silhouette coefficient (DBSCAN): {silhouette_coef_dbscan:.4f}')
# 将新的标签写回原始数据文件
data.to_csv('moon.csv', index=False)
注意:在使用层次聚类和DBSCAN时,您可能需要调整参数以获得更好的结果。以上代码中给出的参数仅供参考。
内容由零声教学AI助手提供,问题来源于学员提问




