解决KNeighborsClassifier报错信息:DataConversionWarning

解决KNeighborsClassifier报错信息:DataConversionWarning: A column-vector y was passed when a 1d array was expected

    • 问题描述
    • 问题所在
    • 解决方法

问题描述

在pycharm中使用sklearn.neighbors包中KNeighborsClassifier进行knn搭建,当调KNeighborsClassifier对训练集数据进行训练时(代码如下所示)

# 模型训练和测试
knn_clf = KNeighborsClassifier(n_neighbors=5)
knn_clf.fit(X_train,y_train)

pycharm出现下面的报错信息,

DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  return self._fit(X, y)

问题所在

正如pycharm中报错信息所示那样,错误的原因是程序需要一维数组,但是却传递给它了列向量,所以需要将传递的列向量数据进行维度变化,pycharm中提示使用ravel()函数实现该操作。
ravel()函数的主要作用就是将数组的维度拉成一维数组。

解决方法

解决该问题的主要方法就是调用ravel()函数将y_train拉成一维数组,代码如下所示:

# 模型训练和测试
knn_clf = KNeighborsClassifier(n_neighbors=5)
knn_clf.fit(X_train,y_train.ravel())

你可能感兴趣的:(机器学习,python,python,pycharm,sklearn)