Scikit-Learn'de Rastgele Orman Regresöründen ihracat ağırlıkları (formül)


9

Scytit Learn in Python (Random Forest Regressor) ile bir tahmin modeli geliştirdim ve manuel tahmin için bir excel aracı oluşturmak için her özelliğin ağırlıklarını bir şekilde çıkarmak istiyorum.

Bulduğum tek şey, model.feature_importances_ama yardımcı olmuyor.

Bunu başarmanın bir yolu var mı?

def performRandomForest(X_train, y_train, X_test, y_test):

    '''Perform Random Forest Regression'''

    from sklearn.ensemble  import  RandomForestRegressor

    model  =  RandomForestRegressor()
    model.fit( X_train , y_train )

    #make predictions
    expected  = y_test
    predicted  = model.predict( X_test )

    #summarize the fit of the model
    mse  = np.mean(( predicted - expected )** 2)
    accuracy = ( model.score ( X_train , y_train ))

    return model, mse, accuracy

Şu anda model.predict([features])bunu yapmak için kullanıyorum, ama bir excel dosyasında ihtiyacım var.


2
Rastgele bir orman regresörü, rastgele bir ormandır decision trees, bu nedenle doğrusal regresyon ile yaptığınız gibi bir denklem alamazsınız. Bunun yerine if, then, else, son yaprakları sayısal değerlere dönüştürmek için bir grup mantık ve birçok son denklem elde edersiniz . Ağacı görselleştirebilir ve tüm mantığı çıkarabilirseniz bile, bu büyük bir karmaşa gibi görünüyor. Excel'de çalışıyorsanız, belki de modelinizi Azure kullanarak excel'de eğitmeyi düşünebilirsiniz. Ancak, muhtemelen sadece excel içinden python çağırır.
AN6U5

Her yaprağın ortalamasını almak işe yaramaz mı? Ayrıca doğrusal bir regresyon modeli denedim ve fark sınırlar içinde. Dolayısıyla, rastgele ormanı ihraç etmenin makul ve verimli bir yolu yoksa, doğrusal regresyona geri dönmem gerekebilir.
Tasos


1
Teşekkürler ama LR'de bu yolun farkındaydım. Cevap olarak yorumlayabilmemiz için yorumlarınıza bir cevapla katılabilir misiniz?
Tasos

Muhtemelen bırakarak / cevapsız başka birinin yararlı fikir olup olmadığını görmek için birkaç gün. Veri bilimi yığın değişimi yığın taşmasından çok daha küçüktür, bu nedenle iyi anlaşılır cevaplar almak bazen 2-3 gün sürer.
AN6U5

Yanıtlar:


1

SKompiler kütüphane yardımcı olabilir:

from skompiler import skompile
skompile(rf.predict_proba).to('excel')

Bu videoya göz atın .


0

Ağırlıkları dışa aktarmak yerine, modeli bir turşu dosyasına dışa aktarabilir ve e-tablodaki verileri okumak için bir xlwings kullanabilirsiniz , turşu modeli yükleyebilir ve bir tahmin çalıştırabilirsiniz İşte benzer sorular .


0

Sanırım son regresöre ulaşmak için farklı ağaçların ardından tüm mantığı çıkarmak istiyorsunuz. Bunun için önce her ağacın mantığını çıkarmanız ve daha sonra bu yolların nasıl takip edildiğini çıkarmanız gerekir. Scikit öğrenmesi bunu .decision_path (X) aracılığıyla, X ile tahmin edebileceğiniz bazı veri kümeleri sağlayabilir. Buradan, rastgele ormanın nasıl tahmin ettiği ve her adımda hangi mantığın takip edildiği hakkında bir fikir edineceksiniz.

Karar_yolunu çıkardıktan sonra, eğittiğiniz Rastgele Orman'ın "formülünü" elde etmek için Ağaç Yorumlayıcı'yı kullanabilirsiniz . Bu Ağaç Tercümanı'na aşina değilim, ancak doğrudan eğittiğiniz modelci üzerinde çalışıyor gibi görünüyor, yani,

from treeinterpreter import treeinterpreter as ti
# fit a scikit-learn's regressor model

rf = RandomForestRegressor()

rf.fit(trainX, trainY)

prediction, bias, contributions = ti.predict(rf, testX)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.