我正在尝试对具有1059行和4列的数据集实施机器学习,但是在尝试使用以下模型拟合时出现以下错误:


  knn.fit(myData ['RAB'],myData ['ETAPE'])
  
  ValueError:找到数量不一致的输入变量
  样本:[1,1059]
  
  DeprecationWarning:在0.17中弃用数据时传递一维数组
  并将在0.19中引发ValueError。使用以下方法重塑数据
  X.reshape(-1,1)(如果数据具有单个功能)或X.reshape(1,-1)
  如果它包含单个样本。还有如何定义多个
  预测变量?


shape的输出为:


  (1059,4)


如何定义多个预测变量?

from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.style.use('ggplot')

myData=pd.read_csv('sabmin.csv', sep=';')
print(myData.shape)
knn = KNeighborsClassifier(n_neighbors=6)
knn.fit(myData['RAB'], myData['ETAPE'])

最佳答案

根据sklearn的预期形状,您做错了。

这里:

knn.fit(myData['RAB'], myData['ETAPE'])


看来您正在提供一个系列作为输入,一个作为输出。 sklearn可能不是您想要的那样将其作为1059尺寸的一个样本。 sklearn的错误输出与我的猜测兼容。

很难知道您到底在做什么,但是至少需要将(1,1059)调整为(1059,1)。但是我也曾期望您要使用更多的列,但我不知道。

或者,您可以更早地创建一个numpy-matrix以使其更容易(myData.as_matrix())(我更多是使用sklearn的基于numpy的用户;但是由于基于名称的索引,很多人都使用了熊猫)。

前者将是这样的:

knn.fit(myData['RAB'].reshape(-1, 1), myData['ETAPE'])


我真的建议阅读sklearn的文档(有史以来最好的文档之一),也可能还要阅读pandas&numpy的文档,以确切了解正在发生的事情。

您可能会发现sklearn的大量示例主要基于numpy-inputs。对于初学者而言,这更容易,因为使用熊猫是另一层复杂性(DataFrames,Series等)。

关于python - 如何修复scikit机器学习中的错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42832807/

10-10 22:50