“ValueError:发现样本数量不一致的输入变量:[40, 10]”拆分数据的问题

问题描述

为了训练,我使用了来自 Udemy 课程的样本数据。数据中有 51 行,我正在尝试打印模型的分数。 我得到的错误是:

ValueError: Found input variables with inconsistent numbers of samples: [40,10]

我知道 [40,10] 指的是训练和测试,因为我将 test_size 设置为“0.2”。

代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.compose import ColumnTransformer as ct
from sklearn.model_selection import train_test_split as tts

data = pd.read_csv("50_Startups.csv")

X = data.drop("Profit",axis = 1)
y = data[["Profit"]]


from sklearn.preprocessing import OneHotEncoder
cat = ["State"]
one_hot = OneHotEncoder()
transformer = ct([("one_hot",one_hot,cat)],remainder="passthrough")
transformed_X = transformer.fit_transform(X)

print(transformed_X)

from sklearn.ensemble import RandomForestRegressor as RFR
model = RFR()
X_train,y_train,X_test,y_test = tts(transformed_X,y,test_size=0.2)
model.fit(X_train,y_train)
print(model.score(X_test,y_test))

我尝试将“y”更改为“y.values.ravel()”,但也没有用。我知道这个错误经常出现在 Numpy 数组中,但可能是什么导致了这段代码的问题?

提前致谢。

解决方法

您的错误在于以下代码中的 train_test_split 函数。

X_train,y_train,X_test,y_test = tts(transformed_X,y,test_size=0.2)

虽然您可能没有注意到,但您已经交换了变量 y_trainX_test

改用这个:

X_train,test_size=0.2)

阅读完整文档

https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html