2017-08-11 69 views
0

同胞隊 有一個問題
----------------------未知的標籤類型: '連續'

Avg.SessionLength TimeonApp TimeonWebsite LengthofMembership Yearly Amount Spent 
    0 34.497268 12.655651 39.577668  4.082621     587.951054 
    1 31.926272 11.109461 37.268959  2.664034     392.204933 
    2 33.000915 11.330278 37.110597  4.104543     487.547505 
    3 34.305557 13.717514 36.721283  3.120179     581.852344 
    4 33.330673 12.795189 37.536653  4.446308     599.406092 
    5 33.871038 12.026925 34.476878  5.493507     637.102448 
    6 32.021596 11.366348 36.683776  4.685017     521.572175 

旺旺申請KNN

X = df[['Avg. Session Length', 'Time on App','Time on Website', 'Length of Membership']] 
y = df['Yearly Amount Spent'] 

from sklearn.model_selection import train_test_split 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, 
random_state=42) 

from sklearn.neighbors import KNeighborsClassifier 
knn = KNeighborsClassifier(n_neighbors=1) 
knn.fit(X_train,y_train) 

ValueError異常:未知的標籤類型: '連續'

+0

請嘗試代碼正確地阻止代碼 - 您可以使用4個空格,謝謝:) –

+2

什麼行會拋出錯誤? Python解釋器提供了一個詳細的堆棧跟蹤,指出了錯誤的來源。不要離開它。 –

回答

2

值在Yearly Amount Spent列是實數,所以它們不能作爲標籤的分類問題(見here):

When doing classification in scikit-learn, y is a vector of integers or strings.

因此你的錯誤。如果你想建立一個分類模型,你需要決定如何將它們轉換成一組有限的標籤。

請注意,如果你只是想避免錯誤,你可以做

import numpy as np 
y = np.asarray(df['Yearly Amount Spent'], dtype="|S6") 

這將改變在y值成需要的格式的字符串。然而,每個標籤只會出現在一個樣本中,因此您無法真正用這樣的標籤集建立一個有意義的模型。

0

我認爲你實際上是在嘗試做一個迴歸而不是分類,因爲你的代碼很像你想要預測的年度花費數量。在這種情況下,請使用

from sklearn.neighbors import KNeighborsRegressor 
knn = KNeighborsRegressor(n_neighbors=1) 

改爲。如果你真的有分類任務,例如你想分類成類似('年度花費低','年度花費高'等等),你應該離散標籤並將它們轉換爲字符串或整數(根據@Miriam Farber的解釋),根據您需要在這種情況下手動設置的閾值。

+0

Hye ml4294,你是正確的伴侶,現在可以請你幫助我。我想對這些數據進行KNN聚類。我怎麼能這樣做,乾杯 –

+0

我對此並不十分熟悉,但我想你可以像以前一樣使用'knn.fit(X_train,y_train)'以便從提供的數據中插入函數,然後就可以預測爲了估計這個「x」的值,使用'prediction = knn.predict(x)'給定'x'的值。這回答了你的問題了嗎? – ml4294