python - KMeans 不在 sklearn 中返回可重现的结果,甚至修复了 random_state
问题描述
以下代码测试几个 n_cluster 的 KMeans,并尝试通过惯性标准找到“最佳”n_cluster。但是,它是不可重现的:即使修复了 random_state,每次我在同一个数据集上调用 kmeans(df) 时,它都会生成不同的聚类——甚至是不同的 n_cluster。我在这里错过了什么吗?
from sklearn.cluster import KMeans
from tqdm import tqdm_notebook
def kmeans(df):
inertia = []
models = {}
start = 3
end = 40
for i in tqdm_notebook(range (start, end)):
k = KMeans(n_clusters=i, init='k-means++', n_init=50, random_state=10, n_jobs=-1).fit(df.values)
inertia.append(k.inertia_)
models[i] = k
ep = np.argmax(np.gradient(np.gradient(np.array(inertia)))) + start
return models[ep]
解决方案
推荐阅读
- python - 进入 pandas 数据帧的大型 SQL 查询(64. Mio 行)需要很长时间
- php - php regex 匹配 facebook 页面、组和用户名,但忽略带有查询参数的链接
- c# - .NET Core 项目无法调用使用 NTLM 的 .NET 4.6 类库方法
- angularjs - 如何使用 CSS 样式从 HTML(基于 div 的结构)创建 Excel
- python - 使用复数遍历二维数组中的邻居
- qt5 - 如何在 Qt Designer 中直接将输入小部件添加到 QTreeWidget?
- django - 两次点击 url 时表单未验证失败
- android - 未在 Firebase 中获取当前用户 ID
- java - 如何使用 Rest-Assured 请求 POST API 发送令牌和正文值?
- java - 通过套接字流式传输的帧