Я пытаюсь построить прогностическую модель, используя 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, что очень плохо. Спасибо!
Это работало, не могу поверить, насколько это просто было. Спасибо огромное! – Uasthana