私はk-meansメソッドを実装するためにsklearnを使いました。 k-meansクラスには、 "predict"というメソッドがあります。訓練されたサンプルに基づいて新しいサンプルを予測する。sklearn kmeans.predictメソッドdosnt work correct
from sklearn.datasets import make_blobs
from matplotlib import pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score
'''
make sample
'''
X, y=make_blobs(n_samples=100, n_features=2, centers=3)
'''
kmeans
'''
kmeans_obj=KMeans(n_clusters=3)
#train
kmeans_obj.fit(X)
#labels:
labels=kmeans_obj.predict(X)
'''
output
'''
plt.scatter(X[:,0], X[:,1], c=labels)
plt.show()
'''
generate new samples and predict them
'''
while True:
'''
perdict kmeans?!?!?!?
'''
new_X, new_y=make_blobs(n_samples=50, n_features=2, centers=4)
perdict_new_sample_lables=kmeans_obj.predict(new_X)
plt.scatter(X[:,0], X[:,1], c=labels)
plt.scatter(new_X[:,0], new_X[:,1], c=perdict_new_sample_lables, marker="x")
plt.show()
円形状はデータセットを訓練されています。絵の十字形は予測した新しい要素です。
ここでの問題は、決定的で非決定的な結果ではありません。すべての実行で非決定論的なアルゴリズムの出力変化で。ここの結果は完全に間違っています!! in picture 2紫色の十字は緑色でなければならない
問題はであるあなたの 'true'をwhileループ。その中で 'make_blobs()'を使ってテストデータを生成しています。このテストデータはトレーニングデータと一致しないため、一致しません。最初にすべてのデータを生成し、列車とテストに分割する必要があります。 'make_blobs'メソッドを使うたびに、新しいデータが古いデータと一致しないことがあります。これがあなたにとって意味をなさないことを願っています。また、クラスタリングの基本をブラッシュアップする必要もあります。 –