发现输入变量的样本数量不一致:[164, 41]

我正在尝试使用随机森林构建一个预测模型,预测变量是CarName,特征是gas、rear和two。

CarName是一个分类变量,其余的是数值变量。在运行以下代码时遇到了这个错误,有人能帮我解决吗?提前谢谢,这里是我的代码。

snipets...from sklearn.model_selection import train_test_splitX=df6[['gas','rear','two']] #这些都是整数形式y=df6[['CarName']].values.reshape(-1,1) #这是对象形式X_train,X_test,y_test,y_train=train_test_split(X,y,test_size=0.2)from sklearn.ensemble import RandomForestClassifierclf=RandomForestClassifier(n_estimators=100)clf.fit(X_train,y_train)

我得到的错误是:

 ValueError                                Traceback (most recent call last)<ipython-input-54-4c45187c84b2> in <module>      1 from sklearn.ensemble import RandomForestClassifier      2 clf=RandomForestClassifier(n_estimators=100)----> 3 clf.fit(X_train,y_train)/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/ensemble/_forest.py in fit(self, X, y, sample_weight)    302                 "sparse multilabel-indicator for y is not supported."    303             )--> 304         X, y = self._validate_data(X, y, multi_output=True,    305                                    accept_sparse="csc", dtype=DTYPE)    306         if sample_weight is not None:/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/base.py in _validate_data(self, X, y, reset, validate_separately, **check_params)    431                 y = check_array(y, **check_y_params)    432             else:--> 433                 X, y = check_X_y(X, y, **check_params)    434             out = X, y    435 /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py in inner_f(*args, **kwargs)     61             extra_args = len(args) - len(all_args)     62             if extra_args <= 0:---> 63                 return f(*args, **kwargs)     64      65             # extra_args > 0/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py in check_X_y(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, estimator)    829         y = y.astype(np.float64)    830 --> 831     check_consistent_length(X, y)    832     833     return X, y/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/utils/validation.py in check_consistent_length(*arrays)    260     uniques = np.unique(lengths)    261     if len(uniques) > 1:--> 262         raise ValueError("Found input variables with inconsistent numbers of"    263                          " samples: %r" % [int(l) for l in lengths])    264 ValueError: Found input variables with inconsistent numbers of samples: [164, 41]

我的数据框的形状是:

X_train.shape,y_train.shape    Out[53]:    ((164, 3), (41, 1)) #我猜这是导致错误的代码,但我无法解决

回答:

你得到的错误是因为这个:

X_train,X_test,y_test,y_train=train_test_split(X,y,test_size=0.2)

根据train_test_split的返回值,值的映射顺序是这样的:

X_train,X_test,y_train,y_test

即y_train在y_test之后,因此造成了形状不匹配。只要更改这一点,就可以正常工作了。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注