我一直在努力解决问题。 这是我想要做的事情:
我想使用逻辑回归预测缺失值(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
如果有人可以帮我,我将非常感激。
非常感谢:)
答案 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_dummies
和x_train
,这才是安全的。但是,您可以使用x_test
:
sklearn.preprocessing.OneHotEncoder
请注意,现在它正确断言了两个不同的输入,导致列数相同。