Sprache auswählen

Das folgende Python 3 Code-Snippet demonstriert die Implementierung eines einfachen Random Forrest Machine Learning Klassifizierungsmodells, um einen Ausgabewert anhand von Eingabewerten vorherzusagen.

Im Beispiel wird zunächst eine CSV Datei geladen, die diverse Eingabe-Spalten (X) sowie eine Spalte mit dem durch das Modell vorherzusagenen Wert (Y) enthält. Anschließend werden die Daten in eine Trainings und eine Test-Menge unterteilt, bevor das Modell trainiert wird. Mit dem Aufruf model.score wird die Qualität des generierten Modells anhand der Test-Daten überprüft - die Ausgabe der Variable model.feature_importances_ liefert ein Array mit der Wichtigkeit der jeweiligen Eingabespalte.

Für den Beispiel-Code muss die Scikit-learn sowie die Pandas Bibliothek installiert sein (pip install sklearn, pip install pandas).


from sklearn.ensemble import RandomForestClassifier
from sklearn import model_selection
import pandas as pd
import numpy as np

# load csv data
input_data_1 = pd.read_csv("prediction-input-1.txt", sep="\t")

# prepare column to be predicted
input_data_1['Transactions'] = np.where(input_data_1['Transactions'] == 0, input_data_1['Transactions'], 1)

Y = np.array(input_data_1['Transactions'])

# select features (= columns used as input for prediction)
features = list(input_data_1.columns)

del features[5]
del features[0]
X = input_data_1[features]

# split data into test and train set
test_size = 0.33

seed = 77
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)

# build and train model
model = RandomForestClassifier(n_estimators=100, n_jobs=2, random_state=0, max_depth=10)

model.fit(X_train, Y_train)

# test model quality
result = model.score(X_test, Y_test)

print(result)

# print vector with feature importances 
print(model.feature_importances_)