[PYTHON] Was ist ein Entscheidungsbaum?

Was ist ein Entscheidungsbaum?

――Der Entscheidungsbaum wird selten alleine verwendet. (Anwenden, zufälliger Wald usw.) image.png

Wie bestimmen Sie den Standardfeature-Betrag und den Schwellenwert?

** (Reinheit vor dem Teilen) - (Reinheit nach dem Teilen) ** Bestimmen Sie die Kriterien für die Teilung so

Das heißt, die Teilung wird so durchgeführt, dass ** (Unreinheit nach Teilung) das Minimum ** wird.

** "Verunreinigung" ** ist ein Index, der angibt, wie viele verschiedene Beobachtungsklassen gemischt sind.

Bei Klassifizierungsproblemen gibt es idealerweise nur eine Beobachtungsklasse pro Knoten (Verunreinigung = 0).

Funktion, die Unreinheit darstellt

Kann erwähnt werden. (Der sklearn-Defalut ist auf ** Gini-Index ** gesetzt.)

Konkretes Beispiel

image.png

** Links: 1- (0/54) ^ 2- (49/54) ^ 2- (5/54) ^ 2 = 0,168 **

** Rechts: 1- (0/46) ^ 2- (1/46) ^ 2- (45/46) ^ 2 = 0,043 **

Daher ist ** Gesamtreinheit ** ** 54/100 x 0,168 + 46/100 x 0,043 = 0,111 ** (Unreinheit nach Teilung)

Vor- und Nachteile des Entscheidungsbaums

verdienen

--Einfach zu verstehen

** Fehler **

Wie vermeide ich Überlernen?

Mit anderen Worten, legen Sie die Obergrenze der Tiefe des Baums ** (maximale Tiefe) ** und die minimale Anzahl von Beobachtungen fest, die ein Knoten haben muss ** (min_samples_leaf) **.

Experiment ① (Klassifizierungsproblem)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split

moons=make_moons(n_samples=200,noise=0.1,random_state=0)

X=moons[0]
y=moons[1]

X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=0)
from sklearn.tree import DecisionTreeClassifier

tree_clf=DecisionTreeClassifier(min_samples_leaf=10).fit(X_train,y_train) #Standardmäßig keine Obergrenze
tree_clf_3=DecisionTreeClassifier(max_depth=3).fit(X_train,y_train)

print(tree_clf.score(X_test,y_test))
print(tree_clf_3.score(X_test,y_test))

image.png

from matplotlib.colors import ListedColormap

def plot_decision_boundary(model,X,y):
    _x1 = np.linspace(X[:,0].min()-0.5,X[:,0].max()+0.5,100)
    _x2 = np.linspace(X[:,1].min()-0.5,X[:,1].max()+0.5,100)
    x1,x2 = np.meshgrid(_x1,_x2)
    X_new=np.c_[x1.ravel(),x2.ravel()]
    y_pred=model.predict(X_new).reshape(x1.shape)
    custom_cmap=ListedColormap(["mediumblue","orangered"])
    plt.contourf(x1,x2,y_pred,cmap=custom_cmap,alpha=0.3)
    
def plot_dataset(X,y):
    plt.plot(X[:,0][y==0],X[:,1][y==0],"bo",ms=15)
    plt.plot(X[:,0][y==1],X[:,1][y==1],"r^",ms=15)
    plt.xlabel("$x_1$",fontsize=30)
    plt.ylabel("$x_2$",fontsize=30,rotation=0)

plt.figure(figsize=(24,8))
plt.subplot(121)
plot_decision_boundary(tree_clf,X,y)
plot_dataset(X,y)

plt.subplot(122)
plot_decision_boundary(tree_clf_3,X,y)
plot_dataset(X,y)

plt.show()

image.png

Experiment ② (Rückgabeproblem)

import mglearn
from sklearn.tree import DecisionTreeRegressor

reg_X,reg_y=mglearn.datasets.make_wave(n_samples=100)

tree_reg=DecisionTreeRegressor().fit(reg_X,reg_y)
tree_reg_3=DecisionTreeRegressor(max_depth=3).fit(reg_X,reg_y)
def plot_regression_predicitons(model,X,y):
    x1 = np.linspace(X.min()-1,X.max()+1,500).reshape(-1,1)
    y_pred=model.predict(x1)
    plt.xlabel("x",fontsize=30)
    plt.ylabel("y",fontsize=30,rotation=0)
    plt.plot(X,y,"bo",ms=15)
    plt.plot(x1,y_pred,"r-",linewidth=6)
    
plt.figure(figsize=(24,8))

plt.subplot(121)
plot_regression_predicitons(tree_reg,reg_X,reg_y)

plt.subplot(122)
plot_regression_predicitons(tree_reg_3,reg_X,reg_y)

plt.show()

image.png

Recommended Posts

Was ist ein Entscheidungsbaum?
Was ist ein Terminal?
Was ist ein Hacker?
Was ist ein Zeiger?
Was ist ein Kontextwechsel?
Was ist ein Superuser?
Was ist ein Systemaufruf?
[Definition] Was ist ein Framework?
Was ist eine Rückruffunktion?
[Python] Was ist eine Zip-Funktion?
[Python] Was ist eine with-Anweisung?
Erstellen eines bestimmten Baums mit Scikit-Learn
Was ist ein lexikalischer / dynamischer Bereich?
Was ist das Convolutional Neural Network?
Was ist ein Namespace?
Entscheidungsbaum (load_iris)
Was ist Django? .. ..
Was ist dotenv?
Was ist POSIX?
Was ist Linux?
Was ist klass?
Entscheidungsbaum (Klassifikation)
Was ist SALOME?
Was ist ein Hund? Django-Installationsvolumen
Was ist ein Hund? Python-Installationsvolumen
Was ist Linux?
Was ist Python?
Was ist Hyperopt?
Was ist Linux?
Was ist Pyvenv?
Was ist __call__?
Was ist Linux?
Was ist Python?
Was ist ein Hund? Fordern Sie die Django-Vorlage heraus! Volumen
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Es ist ein Mac. Was ist der Linux-Befehl Linux?
Was ist ein Hund? Django - Erstellen Sie ein benutzerdefiniertes Benutzermodell 2
Sag mir, was eine gleichwinklige Abbildung ist, Python!
[Python] Was ist Pipeline ...
Was ist das Calmar-Verhältnis?
[PyTorch Tutorial ①] Was ist PyTorch?
Was ist Hyperparameter-Tuning?
Was ist JSON? .. [Hinweis]
Wofür ist Linux?
Was ist Ensemble-Lernen?
Was ist TCP / IP?
Was ist Pythons __init__.py?
Was ist ein Iterator?
Was ist UNIT-V Linux?
[Python] Was ist virtualenv?
Was ist maschinelles Lernen?
Was ist ein Hund? POST-Übertragungsvolumen mit Django--forms.py
Was ist ein Hund? Startvolumen der Django-App erstellen --startapp
Was ist ein Hund? Django App Creation Start Volume - Startprojekt
Anfänger des maschinellen Lernens versuchen, einen Entscheidungsbaum zu erstellen
Ein 2-minütiger Suchbaum ist ein Verwandter der Hash-Kette !?
Was ist ein empfohlener Motor? Zusammenfassung der Typen
Was ist Gott? Erstelle einen einfachen Chatbot mit Python
Für mich als Django-Anfänger (2) - Was ist MTV?