sklearn Logistic回归ValueError:每个样本X具有42个特征;期待1423

时间:2019-11-11 10:30:06

标签: python pandas scikit-learn nan prediction

我一直在努力解决问题。 这是我想要做的事情:

我想使用逻辑回归预测缺失值(Nan)(分类值)。 这是我的代码:

df_1:我的数据集仅在“ Metier”功能中缺少值(缺少我要预测的值)

X_train = pd.get_dummies(df_1[df_1['Metier'].notnull()].drop(columns='Metier'),drop_first = True)
X_test = pd.get_dummies(df_1[df_1['Metier'].isnull()].drop(columns='Metier'),drop_first = True,dummy_na = True)

Y_train = df_1[df_1['Metier'].notnull()]['Metier']
Y_test = df_1[df_1['Metier'].isnull()]['Metier']

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state = 0)

classifier.fit(X_train, Y_train)

classifier.score(X_train,Y_train) = 0.705112088833019

但是,当我尝试在Y_test上获得预测时,它说:

  

ValueError:每个样本X具有42个功能;期待1423

如果有人可以帮我,我将非常感激。

非常感谢:)

1 个答案:

答案 0 :(得分:0)

经验法则是绝对不要在多个数据框上使用import logic。它不能保证您具有相同的尺寸。

pandas.get_dummies

只有先进行import pandas as pd print(pd.get_dummies(['a', 'b', 'c'])) a b c 0 1 0 0 1 0 1 0 2 0 0 1 print(pd.get_dummies(['b', 'c'])) b c 0 1 0 1 0 1 然后再划分为pandas.get_dummiesx_train,这才是安全的。但是,您可以使用x_test

sklearn.preprocessing.OneHotEncoder

请注意,现在它正确断言了两个不同的输入,导致列数相同。