0

Я пытаюсь построить прогностическую модель, используя python. Набор учебных и тестовых данных содержит более 400 переменных. Об использования функции выбора на подготовку набора данных число переменных уменьшается до 180Прогнозирование после выбора функции python

from sklearn.feature_selection import VarianceThreshold 
sel = VarianceThreshold(threshold = .9) 

, а затем я обучение модели с использованием градиентного алгоритма повышающей achieveing ​​.84 AUC точности в поперечной проверке.

from sklearn import ensemble 
from sklearn.cross_validation import train_test_split 
from sklearn.metrics import roc_auc_score as auc 
df_fit, df_eval, y_fit, y_eval= train_test_split(df, y, test_size=0.2, random_state=1) 
boosting_model = ensemble.GradientBoostingClassifier(n_estimators=100, max_depth=3, 
                min_samples_leaf=100, learning_rate=0.1, 
                subsample=0.5, random_state=1) 
boosting_model.fit(df_fit, y_fit) 

Но когда я пытаюсь использовать эту модель для прогнозирования данных прогнозирования установлено, что дает мне ошибку

predict_target = boosting_model.predict(df_prediction) 
Error: Number of variables in prediction data set 'df_prediction' does not match the number of variables in the model 

который имеет смысл, потому что общие переменные тестировании данных остается более 400. Мой вопрос заключается в том, чтобы обойти эту проблему и продолжать использовать функцию выбора для интеллектуального моделирования. Потому что, если я удалю его, точность модели опустится до 0,5, что очень плохо. Спасибо!

ответ

1

Вы также должны преобразовать матрицу прогноза через свой выбор. Так что где-то в вашем коде вы

df = sel.fit_transform(X) 

и до прогнозирования

df_prediction = sel.transform(X_prediction) 
+0

Это работало, не могу поверить, насколько это просто было. Спасибо огромное! – Uasthana

Смежные вопросы