KNN 类型错误和数据标准化

问题描述 投票:0回答:1

即使在完成教程指示的所有操作时,我也无法使预测工作。

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
python machine-learning scikit-learn knn
1个回答
0
投票

问题出在你的变量名称上。 您正在调用 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 与测试标签进行比较,并计算准确性、召回率...

© www.soinside.com 2019 - 2024. All rights reserved.