2016-05-13 55 views
1

我嘗試sklearn KMean羣集使用的監督學習,在那裏我有每個集羣的標籤KMean集羣預測,不知何故而我提供這些標籤到擬合函數model.fit(X_train, y_train),所產生的(輸出)標籤不是來自我的名單,而是一個集羣號碼。我可以在我的原始標籤中獲得預測嗎? 例如,如何得到與原標籤

訓練集:

x,y,z,class 
1,2,3,1001 
1,4,8,1002 
5,2,9,1003 

類y_train用於擬合

測試集:

x,y,z 
1,1,1 
2,2,2 
3,3,3 

predicted = model.predict(X_test)給我[1 0 2]作爲結果,而預期的結果是[1002 1001 1003]。文檔似乎沒有選擇標籤的選項。如何使用提供的標籤獲得預測結果?

+1

K-means通常用於聚類未標記的數據。你確定你不是在尋找最近的鄰居嗎? – ChrisP

回答

1

這聽起來像你正在尋找一個k近鄰分類。這種算法從標數據獲悉,正如你所說,然後每個點在測試設置爲基於哪一個人羣的預先定義的羣體之一分配「點的最近鄰居中最代表」。這裏的實現:

from sklearn.neighbors import KNeighborsClassifier 
neigh = KNeighborsClassifier(n_neighbors = 3) # you have 3 groups above 
neigh.fit(X_train, y_train) 
predicted = neigh.predict(X_test) 
+0

KNeighborsClassifier做的東西很遙遠,它不會將一個特徵向量分配給一個預定義的類 – cur4so