Как обеспечить, чтобы как тестовые, так и обучающие наборы имели одинаковые функции с помощью scikit learn? - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь предсказать невидимые данные для билетов, которые будут повторяться? У меня много категориальных переменных. Эти переменные могут быть одинаковыми или повторяться. Как я могу гарантировать, что функции одинаковы? Функции могут отличаться в зависимости от входящего объема?

y=predict_pi.P_I
X=predict_pi.drop('P_I',1)
X=pd.get_dummies(X)
print(X)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)

logReg=LogisticRegression()
logReg.fit(X_train,y_train)
pred_pi=logReg.predict(X_test)
print(pred_pi)
print(accuracy_score(y_test,pred_pi))
test=pd.get_dummies(test)
print(test)
pred_test=logReg.predict(test)

I get the error: ValueError: X has 159 features per sample; expecting 161

Эти два столбца имеют категориальные значения, и функции зависят от них. Возможности могут увеличиваться или уменьшаться.

AUDITOR REASON_CODE 

Любые предложения будут полезны.

Количество строк и столбцов в наборе данных поезда и теста ниже.

train - (599939, 9) test - (130314, 8)

Данные поезда приведены за 6 месяцев, а данные испытаний - за предыдущий месяц. С уважением, Рен.

1 Ответ

1 голос
/ 13 февраля 2020

Вы можете добавить эти столбцы как к тесту, так и к тренировке перед началом регрессии, и назначить их значения 0:

extra_cols_train = [i for i in list(test) if i not in list(X)]
extra_cols_test = [i for i in list(X) if i not in list(test)]

X = X.reindex(columns=X.columns.tolist() + extra_cols_train)
X[extra_cols_train] = 0

test = test.reindex(columns=test.columns.tolist() + extra_cols_test)
test[extra_cols_test] = 0
...