y = df.pitch_name
y = np.array(y)
y = y.reshape(-1, 1)
from sklearn.preprocessing import OrdinalEncoder
ord_enc = OrdinalEncoder()
y = ord_enc.fit_transform(y.reshape(-1, 1))
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=12345
)
knn_model = KNeighborsRegressor(n_neighbors=3)
knn_model.fit(X_train, y_train)
knn_model.predict([X_test[0]])
X 全部為浮點值,y 全部為字串型別。如果我使用 ordinalEncoder 并使用模型進行預測,它可以作業,但問題是當我想獲得確切的類別時,我得到的結果有時不是整數(例如 6.3333)。
因此,每當我使用原始分類值字串擬合模型時,我都會看到此錯誤訊息TypeError: cannot perform reduce with flexible type。當我檢查錯誤訊息時,我認為錯誤是由于 238 他們試圖獲取 y_pred = np.mean(_y[neigh_ind], axis=1) 而應該是中位數,因為 y 是字串串列?任何幫助將不勝感激。
237 if weights is None:
--> 238 y_pred = np.mean(_y[neigh_ind], axis=1)
239 else:
240 y_pred = np.empty((X.shape[0], _y.shape[1]), dtype=np.float64)
uj5u.com熱心網友回復:
如果我誤解了什么,請原諒我,但聽起來你正在嘗試使用回歸模型進行分類:KNeighborsRegressor.
從這里你可以看到:
在資料標簽是連續變數而不是離散變數的情況下,可以使用基于鄰居的回歸。分配給查詢點的標簽是根據其最近鄰居的標簽的平均值計算的。
因此,通過使用OrdinalEncoder,您只是對浮點類別進行了編碼,但是,之后您預測了其最近鄰居的標簽的平均值,這將不是整數,因此不是類別。
我建議你閱讀這篇文章,學習如何使用KNeighborsClassifier.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464604.html
下一篇:將串列轉換為陣列,輸出沒有逗號
