Python 当我运行这个程序的时候,我总是遇到这个错误。我已经尝试了我能想到的一切,但它仍然不起作用

Python 当我运行这个程序的时候,我总是遇到这个错误。我已经尝试了我能想到的一切,但它仍然不起作用,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,我正在尝试这个NCAA篮球预测程序,我不断得到这个错误: Traceback (most recent call last): File "/mnt/chromeos/removable/JACKS JUNK/Chatbot_2/sports_predict.py", line 17, in <module> X_train, X_test, y_train, y_test = train_test_split(X, y) File "/home/jackmdavis

我正在尝试这个NCAA篮球预测程序,我不断得到这个错误:

Traceback (most recent call last):
  File "/mnt/chromeos/removable/JACKS JUNK/Chatbot_2/sports_predict.py", line 17, in <module>
    X_train, X_test, y_train, y_test = train_test_split(X, y)
  File "/home/jackmdavis06/.local/lib/python3.5/site-packages/sklearn/model_selection/_split.py", line 2116, in train_test_split
    arrays = indexable(*arrays)
  File "/home/jackmdavis06/.local/lib/python3.5/site-packages/sklearn/utils/validation.py", line 237, in indexable
    check_consistent_length(*result)
  File "/home/jackmdavis06/.local/lib/python3.5/site-packages/sklearn/utils/validation.py", line 212, in check_consistent_length
    " samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [2258, 4148]
我遵循了网站上的指南:

我对代码进行了一些调整,使其工作得更快,因此我尝试运行原始代码,并且只运行原始代码,但得到了相同的错误。请帮忙!
谢谢

您删除了X的空值和重复值,但没有删除y。 如果打印(X.shape[0],len(y)),您将看到它们有不同的值

你应该这样做:


#...
dataset=pd.read\u csv('data.csv'))
#删除空值和双精度值
#使用字段保留特征和目标以供分析
#例如,字段_TO_KEEP=['a','b'…]
dataset=dataset[FIELDS_TO_KEEP].dropna().drop_duplicates()
#获取你的特征X,目标y
X=数据集[作为特征的字段]
y=数据集[['原点','原点']]
# ...

我认为在分割之前,必须平等对待y和X。当你只在X上做dropna()和dropna()时,你改变了数据帧的大小,但是y保持原来的大小。那么我应该为y做dropna()和dropna()吗?我不确定你应该这样做,因为我不知道这个数据集是如何构造的,但是如果你为X做这个过程,你也必须为y做。
import pandas as pd
from sportsreference.ncaab.teams import Teams
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split

FIELDS_TO_DROP = ['away_points', 'home_points', 'date', 'location',
                  'losing_abbr', 'losing_name', 'winner', 'winning_abbr',
                  'winning_name', 'home_ranking', 'away_ranking']


teams = Teams()


dataset = pd.read_csv('data.csv')
X = dataset.drop(FIELDS_TO_DROP, 1).dropna().drop_duplicates()
y = dataset[['home_points', 'away_points']].values
X_train, X_test, y_train, y_test = train_test_split(X, y)

parameters = {'bootstrap': False,
                'min_samples_leaf': 3,
                'n_estimators': 50,
                'min_samples_split': 10,
                'max_features': 'sqrt',
                'max_depth': 6}
model = RandomForestRegressor(**parameters)
model.fit(X_train, y_train)
print(model.predict(X_test).astype(int), y_test)