Ich habe ein Vorhersagemodell mit Scikit Learn in Python (Random Forest Regressor) trainiert und möchte die Gewichte der einzelnen Features irgendwie extrahieren, um ein Excel-Tool für die manuelle Vorhersage zu erstellen.
Das einzige, was ich gefunden habe, ist das, model.feature_importances_
aber es hilft nicht.
Gibt es eine Möglichkeit, dies zu erreichen?
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
Im Moment benutze ich das model.predict([features])
, um es zu tun, aber ich brauche es in einer Excel-Datei.
decision trees
, sodass Sie nicht wie bei der linearen Regression eine Gleichung erhalten. Stattdessen erhalten Sie eine Reihe vonif, then, else
Logik und viele endgültige Gleichungen, um die endgültigen Blätter in numerische Werte umzuwandeln. Selbst wenn Sie den Baum visualisieren und die gesamte Logik herausziehen können, scheint dies alles ein großes Durcheinander zu sein. Wenn Sie in Excel arbeiten, sollten Sie Ihr Modell möglicherweise nur in Excel mit Azure trainieren. Allerdings würde ich die Python wahrscheinlich nur aus Excel heraus aufrufen.Antworten:
Die SKompiler- Bibliothek könnte helfen:
Schauen Sie sich dieses Video an .
quelle
Anstatt die Gewichte zu exportieren, können Sie das Modell in eine Pickle-Datei exportieren und mit xlwings die Daten aus der Tabelle lesen, das eingelegte Modell laden und eine Vorhersage ausführen. Hier sind ähnliche Fragen .
quelle
Ich denke, Sie möchten die gesamte Logik extrahieren, gefolgt von den verschiedenen Bäumen, um auf dem endgültigen Regressor zu landen. Dazu müssen Sie zuerst die Logik jedes Baums extrahieren und dann extrahieren, wie diese Pfade befolgt werden. Scikit Learn kann dies über .decision_path (X) bereitstellen, wobei X einen Datensatz vorhersagen kann. Von hier aus erhalten Sie eine Vorstellung davon, wie die zufällige Gesamtstruktur vorhersagt und welche Logik bei jedem Schritt befolgt wird.
Sobald Sie den Entscheidungspfad extrahiert haben, können Sie den Bauminterpreter verwenden , um die "Formel" des von Ihnen trainierten Zufallswalds zu erhalten. Ich bin mit diesem Bauminterpreter nicht vertraut, aber er scheint direkt mit dem von Ihnen trainierten Modellierer zu funktionieren, d. H.
quelle