如何修复Scikit机器学习中的错误



我正在尝试为具有1059行和4列的数据集实现机器学习,但是当试图使用以下方式适应模型时,我会遇到以下错误

knn.fit(mydata ['rab'],mydata ['etape'])

valueerror:发现的输入变量,数量不一致样品:[1,1059]

不弃用战争:随着数据弃用为0.17,传递1D阵列并将在0.19中提高价值。重塑您的数据要么X.Reshape(-1,1)如果您的数据具有单个功能或X.Reshape(1,-1)如果它包含一个样本。我还能定义多个预测变量?

形状的输出为:

(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输入。对于初学者来说,这更容易,因为使用熊猫是又一层的复杂性(数据框,系列,...)。

最新更新