MNISTデータセットをkmeans法でクラスタリング・描画し、正解図と各数字の比較を視覚的にしたいです。実行したコードでは、色が白黒になってしまいます。
#以下、実行コードです。
from sklearn.datasets import fetch_mldata
mnist = fetch_mldata('MNIST original')
scaler = StandardScaler()
scaler.fit(mnist.data)
X = scaler.transform(mnist.data)
y = mnist.target
_, X, _, y = train_test_split(X, y)
pca = PCA()
pca.fit(X)
X_pca = pca.transform(X)
km = KMeans(n_clusters=10)
km.fit(X_pca)
pred = km.predict(X_pca)
for labels in range(10):
l = y == labels
plt.scatter(X_pca[l, 0], X_pca[l, 1], label=labels,)
for labels in range(10):
p = pred == labels
plt.scatter(X_pca[p, 0], X_pca[p, 1], label=labels)
corres = {}
for i in range(10):
count = Counter(y[pred==i])
j = max(count.items(), key=lambda x : x[1])[0]
corres[i] = j
after = np.zeros(pred.shape[0])
for before in corres:
after += (pred == before) * corres[before]
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y)
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=after)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。