【问题标题】:Found input variables with inconsistent numbers of samples: [14559, 1455900]发现样本数量不一致的输入变量:[14559, 1455900]
【发布时间】:2020-11-19 04:04:16
【问题描述】:

我在尝试拟合模型时遇到了一些问题。当我尝试使用 LogisticRegression、朴素贝叶斯或 svm 模型时,就会发生这种情况。但是当我使用随机森林回归或决策树时,我会得到结果。

错误提示:

ValueError: y 应该是一维数组,得到一个形状为 (20799, 100) 的数组 而是。

解决方案是在我拟合模型时使用 y_train.ravel()。但话又说回来,出现以下错误:

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

这是我的代码:

import pandas as pd
import numpy as np

from sklearn.linear_model import LogisticRegression

df=pd.read_csv('../input/filteredbymany.csv',low_memory=False,usecols=['county','crashalcoh','drvrsex','developmen','lightcond','drvrvehtyp','drvrage','pedage','city','crashloc','crashtype','pedpos'])

df.dropna(inplace=True)

dummies= pd.get_dummies(df)
merged=pd.concat([df,dummies],axis='columns')
X = merged
X = X.drop(['county','crashalcoh','city','developmen','drvrage','drvrsex','drvrvehtyp','lightcond','pedage','crashloc','crashtype','pedpos'],axis='columns')

y = X.loc[:, X.columns.str.startswith('county')]

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0)

model = LogisticRegression()
model.fit(X_train,y_train.values.ravel())
model.predict(X_test)

我已经为此苦苦挣扎了大约 80 个小时左右。请帮忙。

【问题讨论】:

    标签: python scikit-learn regression prediction


    【解决方案1】:

    问题

    您希望有一个包含 N 行的数组 X。每一行是某物的一个样本,每一列是这些样本的一个特征。然后你想要一个数组 y 有 N 个值。 y 的第 i 个值是您要为 X 的第 i 行预测的值(“标签”)。

    第一个错误

    您的y 是二维的(形状为(N, 100)),但它应该是一维的(形状为(N,))。所以X 中的每个实例都有 100 个标签,但是您选择的模型每个实例只能预测一个标签。

    第二个错误

    然后你将ravel 转换为形状为(100*N,) 的一维数组。现在你有一个维度,但仍然有太多的值。

    解决方案

    查看您的表 Xy 并查看您真正想要的 y 的哪一列。

    【讨论】:

    • 事情是这样的。我想预测一个分类变量。在这种情况下,我想预测发生事故的县列。因此,我将整个数据集推送到 get_dummies(df) 中,并为所有这些设置了虚拟变量。因此,我必须获取 label(y) 的所有列。然后我将列拆分为 X 和 y。然后做了 train_test_split()。我的方法预测分类列是否正确?你能给我推荐一个更好的吗?
    • 如果你的真实标签看起来像 ['US', 'US', 'Germany', 'India', ...] 有 100 个不同的国家,那么你可以将它们编码为 [0, 0, 1, 2, ...],而不是使它成为一个 Nx100 二进制虚拟表,其中每个国家都有一个唯一的整数标签.看看pd.factorize
    • 谢谢先生;-;
    猜你喜欢
    • 2021-06-20
    • 2018-06-25
    • 1970-01-01
    • 2021-05-06
    • 2019-12-11
    • 2020-03-14
    • 2020-10-21
    • 2020-10-26
    • 2023-03-22
    相关资源
    最近更新 更多