Machine learning avec des modèles arborescents en Python
Elie Kawerk
Data Scientist
Dans certains cas, plusieurs échantillons peuvent être prélevés pour un même modèle.
D'autres cas peuvent ne pas être échantillonnés du tout.
En moyenne, pour chaque modèle, 63 % des instances d'apprentissage sont échantillonnées.
Les 37 % restants constituent les instances OOB.

# Import models and split utility function
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
# Set seed for reproducibility
SEED = 1
# Split data into 70% train and 30% test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.3,
stratify= y,
random_state=SEED)
# Instantiate a classification-tree 'dt' dt = DecisionTreeClassifier(max_depth=4, min_samples_leaf=0.16, random_state=SEED)# Instantiate a BaggingClassifier 'bc'; set oob_score = True bc = BaggingClassifier(base_estimator=dt, n_estimators=300, oob_score=True, n_jobs=-1)# Fit 'bc' to the training set bc.fit(X_train, y_train) # Predict the test set labels y_pred = bc.predict(X_test)
# Evaluate test set accuracy test_accuracy = accuracy_score(y_test, y_pred)# Extract the OOB accuracy from 'bc' oob_accuracy = bc.oob_score_ # Print test set accuracy print('Test set accuracy: {:.3f}'.format(test_accuracy))
Test set accuracy: 0.936
# Print OOB accuracy
print('OOB accuracy: {:.3f}'.format(oob_accuracy))
OOB accuracy: 0.925
Machine learning avec des modèles arborescents en Python