python - TypeError:预期的序列或类似数组,得到估计器 KNeighborsClassifier
问题描述
我正在尝试使用 scikit-learn 实现 K-NN 算法。这就是我的代码的样子:
X = df.drop(columns=['Purchased'])
y = df['Purchased'].values
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.3,stratify=y)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors = 3)
knn.fit(X_train,y_train)
knn.predict(X_test)
knn.score(X_test, y_test)
from sklearn.metrics import classification_report, confusion_matrix
print(confusion_matrix(y_test, knn))
print(classification_report(y_test, knn))
运行最后 2 个输出后,我收到以下消息:
TypeError: Expected sequence or array-like, got estimator KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=None, n_neighbors=3, p=2,
weights='uniform')
有谁知道是什么问题?谢谢!
解决方案
print(confusion_matrix(y_test, knn.predict(X_test))
print(classification_report(y_test, knn.predict(X_test))
在这种情况下 knn 是一个类的对象,没有实现str。所以你必须用 knn.predict 的结果替换它。
推荐阅读
- python - 回溯 - 递归调用中的列表更新问题
- java - 如何为 Maven 命令行附加 VM 选项
- flutter - Flutter:从抽象类扩展类时更改 Todo 文本
- assembly - 将数组移位 1 位
- arrays - 如何在 C 中螺旋填充二维数组?示例/问题
- azure - 如何创建没有安全证书的 Azure 服务结构集群以供测试使用?
- java - 生成器模式。重复参数的初始化?
- c++ - CLion 和带有 DLL 的多个项目
- reactjs - react中页面滚动事件的更好做法是什么:addEventListener()与创建组件包装器所有内容并使用onScroll prop
- javascript - 如何通过使用唯一名称保存到本地存储来上传图像?