0

Python kullanarak bir tahmin modeli oluşturmaya çalışıyorum. Eğitim ve test veri seti 400'den fazla değişkene sahiptir. eğitim veri seti özelliği seçimi kullanılarak üzerinde değişken sayısı 180Özellik seçimi pythonundan sonra tahmin

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

indirgenir ve daha sonra çapraz doğrulama .84 AUC doğruluğu achieveing ​​gradyan takviye algoritmasını kullanarak bir modeli eğitim am. Ben tahmin verileri için tahmin etmek bu modeli kullanmaya çalışıyorum ne zaman

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) 

Ama test verilerinde toplam değişkenler 400 bitecek için kaldığından bana mantıklı hatasını

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 

veriyor set Benim sorum şu ki bu sorunu atlamak ve akıllı modelleme için özellik seçimini kullanmaya devam etmek için var. Çünkü onu kaldırırsam, modelin doğruluğu çok zayıf olan .5'e düşer. Teşekkürler!

cevap

1

Tahmin matrisinizi özellik seçiminizden de dönüştürmelisiniz. Yani bir yerde kodunuzda sen ne kadar basit inanamıyorum çalıştı

df_prediction = sel.transform(X_prediction) 
+0

tahmin önce

df = sel.fit_transform(X) 

ve

yapmak. Çok teşekkür ederim! – Uasthana