K 表示置换簇
K means permute clusters
我使用书中的以下代码对数字数据集进行聚类。因为 K 均值算法可以找到聚类,但不知道哪个聚类是“0”或“9”,我们必须将每个学习到的聚类标签与其中找到的真实标签匹配。
digits=load_digits()
X=digits.data
y=digits.target
#Instantiate the k_means estimator and set the hyerparameters
model=KMeans(n_clusters=10,random_state=0)
model.fit(X)
y_pred=model.predict(X)
#Match each learned cluster label with the true labels found in them
from scipy.stats import mode
labels=np.zeros_like(y_pred)
for i in range(10):
mask=(y_pred==i)
labels[mask]=mode(digits.target[mask])[0]
conf=confusion_matrix(y,labels)
我理解除以下部分之外的所有代码:
labels[mask]=mode(digits.target[mask])[0]
有人可以给我解释一下吗?
mode()
在统计中是指在一个集合中出现次数最多的值。因此,与簇 mask
匹配的 "true" 数字是属于簇 mask
.
的所有数字中出现频率最高的数字
所以,
digits.target[mask] # the set of all true labels of cluster `mask`
参加 mode
:
mode(digits.target[mask]) # finds the most frequent digit in this cluster
赋值给labels[mask]
,从而匹配k-means簇和集合中的真实数字:
labels[mask]=mode(digits.target[mask])[0]
我使用书中的以下代码对数字数据集进行聚类。因为 K 均值算法可以找到聚类,但不知道哪个聚类是“0”或“9”,我们必须将每个学习到的聚类标签与其中找到的真实标签匹配。
digits=load_digits()
X=digits.data
y=digits.target
#Instantiate the k_means estimator and set the hyerparameters
model=KMeans(n_clusters=10,random_state=0)
model.fit(X)
y_pred=model.predict(X)
#Match each learned cluster label with the true labels found in them
from scipy.stats import mode
labels=np.zeros_like(y_pred)
for i in range(10):
mask=(y_pred==i)
labels[mask]=mode(digits.target[mask])[0]
conf=confusion_matrix(y,labels)
我理解除以下部分之外的所有代码:
labels[mask]=mode(digits.target[mask])[0]
有人可以给我解释一下吗?
mode()
在统计中是指在一个集合中出现次数最多的值。因此,与簇 mask
匹配的 "true" 数字是属于簇 mask
.
的所有数字中出现频率最高的数字
所以,
digits.target[mask] # the set of all true labels of cluster `mask`
参加 mode
:
mode(digits.target[mask]) # finds the most frequent digit in this cluster
赋值给labels[mask]
,从而匹配k-means簇和集合中的真实数字:
labels[mask]=mode(digits.target[mask])[0]