我正在尝试对具有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/