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