Python 聚类学习:KMeans 算法实现与分析
当然可以!以下是一个用 Python 实现聚类算法的示例代码,同时也会进行一些简单的分析:
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# 读取数据
data = pd.read_csv('data.csv')
# 数据预处理
# ...
# 聚类分析
# 选择k值
k_list = range(2, 11)
scores = []
for k in k_list:
model = KMeans(n_clusters=k)
labels = model.fit_predict(data)
score = silhouette_score(data, labels)
scores.append(score)
best_k = k_list[np.argmax(scores)]
print('最佳k值:', best_k)
# 运用最佳k值进行聚类
model = KMeans(n_clusters=best_k)
labels = model.fit_predict(data)
# 输出聚类结果
for i in range(best_k):
print('Cluster %d: %d samples' % (i, np.sum(labels == i)))
该代码首先读取含有数据的 CSV 文件,然后进行数据预处理,例如缺失值处理、离散变量编码、特征缩放等等。然后,通过选择不同的 k 值,使用轮廓系数评估每个 k 值的聚类效果,并找到最佳的 k 值。最后,使用最佳的 k 值进行聚类,并输出每个簇中的样本数量。
该代码使用了 KMeans 算法作为聚类算法。KMeans 是一种基于距离的聚类算法,它将数据划分为 k 个簇,并将每个样本分配到最近的簇中。KMeans 算法需要指定聚类数 k,因此需要使用轮廓系数等指标来评估不同 k 值的聚类效果,最终选择最佳的 k 值。同时,KMeans 算法对于数据量较大的数据集也有很好的可扩展性。
原文地址: https://www.cveoy.top/t/topic/nWE9 著作权归作者所有。请勿转载和采集!