即使在完成教程指示的所有操作时,我也无法使预测工作。
from sklearn.neighbors import KNeighborsClassifier
knn_model = KNeighborsClassifier(n_neighbors=3, metric='euclidean')
knn_model.fit(train_val_process, merge_labels.label)
y_pred_knn = knn.predict(test_data_process)
错误如下:
TypeError: KNeighborsClassifier.predict() missing 1 required positional argument:
'X'
我应该将数据均值标准化为 1 std 0。这样好吗?
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(pd.concat([train_data, val_data]))
train_data_process = pd.DataFrame(scaler.transform(train_data), columns=train_data.columns)
val_data_process = pd.DataFrame(scaler.transform(val_data), columns=val_data.columns)
train_val_process = pd.concat([train_data, val_data])
test_data_process = pd.DataFrame(scaler.transform(test_data), columns=test_data.columns)
y_test = test_labels.label
问题出在你的变量名称上。 您正在调用 knn,它尚未声明/训练。相反,您训练了 knn_model。
更新以下内容:
from sklearn.neighbors import KNeighborsClassifier
knn_model = KNeighborsClassifier(n_neighbors=3, metric='euclidean')
knn_model.fit(train_val_process, merge_labels.label)
y_pred_knn = knn_model.predict(test_data_process)
然后,您可以继续测试您的模型,将 y_pred_knn 与测试标签进行比较,并计算准确性、召回率...