【问题标题】:How to solve sklearn error: "Found input variables with inconsistent numbers of samples"?如何解决 sklearn 错误:“发现样本数量不一致的输入变量”?
【发布时间】:2021-02-02 17:42:02
【问题描述】:

我在使用 sklearn 70-30 部门时遇到了挑战。我在线收到错误:

X_train, X_test, y_train, y_test = train_test_split(X_smote, y_smote, test_size=0.3, stratify=y)

错误是:

Found input variables with inconsistent numbers of samples

上下文

from imblearn.over_sampling import SMOTE
    
sm = SMOTE(k_neighbors = 1)
X = data.drop('cluster',axis=1)
y = data['cluster']
    
X_smote, y_smote= sm.fit_sample(X,y)
    
data_bal = pd.DataFrame(columns=X.columns.values, data=X_smote)
data_bal['cluster']=y_smote
    
from sklearn.model_selection import  train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_smote, y_smote, test_size=0.3, stratify=y)
y_train.value_counts().plot(kind='bar')

编辑

我解决了错误,我只需将stratify=y 放入stratify=y_smote

【问题讨论】:

标签: python data-analysis sklearn-pandas train-test-split


【解决方案1】:

只是对您的代码行的观察:

X_train, X_test, y_train, y_test = train_test_split(X_smote, y_smote, test_size=0.3, stratify=y)

引发的错误通常是某些输入值的结果,该输入值预期具有与其他输入值一致的特定维度或长度。

检查 X_smote、y_smote 和 y 的长度和/或尺寸,看看它们是否都符合预期。

【讨论】:

  • 嗨,X_smote 的长度为 (13993, 308),y_smote 的长度为 (13993,)
  • 好的。当您将代码行更改为:X_train, X_test, y_train, y_test = train_test_split(X_smote, y_smote, test_size=0.3, random_state=42) 时,您能告诉我运行脚本的结果吗?唯一不清楚的是me 是输入参数“stratify=y”。我想看看你的代码在没有它的情况下是否返回错误。
  • 您好,我已经解决了错误,问题在“stratify=y”,它必须是“stratify=y_smote”。谢谢朋友
猜你喜欢
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
  • 2020-02-24
  • 2021-03-25
  • 2021-06-20
相关资源
最近更新 更多