Ich versuche, ein Vorhersagemodell mit Python zu erstellen. Der Trainings- und Testdatensatz hat über 400 Variablen. Feature Auswahl an Trainingsdatensatz die Anzahl der Variablen reduziert auf 180Vorhersage nach Feature-Auswahl python
from sklearn.feature_selection import VarianceThreshold
sel = VarianceThreshold(threshold = .9)
über die Verwendung und dann trainiere ich ein Modell Gradienten Boosting-Algorithmus 0,84 AUC Genauigkeit bei der Kreuzvalidierung achieveing.
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)
Aber wenn ich dieses Modell zu verwenden, versuchen für Vorhersagedaten vorherzusagen setzt es mir Fehler geben
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
was Sinn macht, da insgesamt Variablen in Testdaten bleiben über 400 seine Meine Frage ist sowieso, dieses Problem zu umgehen und weiterhin Feature-Auswahl für die prädiktive Modellierung zu verwenden. Denn wenn ich es entferne, sinkt die Genauigkeit des Modells auf 0,5, was sehr schlecht ist. Danke!
die Vorhersage, dass gearbeitet, kann nicht glauben, wie einfach es war. Ich danke dir sehr! – Uasthana