如何评估我的聚类算法

how to evaluate my cluster algorithm

我开始使用 weka 中的简单 k 均值聚类进行聚类

聚类后这个结果显示

Number of iterations: 9

Within cluster sum of squared errors: 570.1974952009115

我的问题:

  1. 误差平方和很大这是否意味着我的簇数有误?以及如何定义乐观的聚类数?

  2. 如何将数据分成训练集和测试集来评估性能?以及如何知道正确的百分比?

  3. 如何测量 SSB

1.1 在 k-means 中,you 决定选择多少簇。你可能已经知道了。

1.2 在 k 均值中,没有像 "global maximum of a function graph" 中那样的最佳簇数。您根据您的业务问题做出决定。另请参阅“elbow method”以了解在实践中很少起作用的半经验程序。

1.3 您的数据中可能存在异常值,这使得 any 聚类操作的平方和很大。无论您选择多少个集群,异常值总是远离您的集群中心。

2.1 没有 "optimal" 百分比拆分。

2.2 您可以使用可视化来检查集群中是否存在任何重叠。您的观众看到 "decision boundaries".

也更容易理解

3.1 什么是SSB?

我附上了 Elbow 方法的代码,以防有人想进行快速测试。

import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

X = pd.read_csv("data.csv")
X = data.select_dtypes(np.number) #If all your data is numerical, you dont have to do this

from sklearn.cluster import KMeans
wcss = []

for i in range(1,50):
    model = KMeans(n_clusters = i, init = 'k-means++',
                  max_iter=300,n_init=10,random_state=0)
    model.fit(X)
    wcss.append(model.inertia_)

plt.figure(figsize=(10,7))
plt.plot(range(1,50), wcss)
plt.title("Elbow Method")
plt.xlabel("No. of clusters")
plt.ylabel("WCSS")

如果你有时间和耐心,你可以做一个外循环来循环随机状态并记录它。