grundlegende Einführung
Parameter
-
Kriterium {„squared_error“, „friedman_mse“, „absolute_error“, „poisson“}, default=“squared_error“
Eine Funktion zum Messen der Qualität der Segmentierung. Unterstützte Standards sind:
- „squared_error“ ist der durchschnittliche quadratische Fehler, der der Varianzreduzierung als Merkmalsauswahlkriterium entspricht und den Durchschnittswert jedes Endknotens verwendet, um den L2-Verlust zu minimieren.
- „friedman_mse“, um potenzielle Aufteilungen mithilfe des mittleren quadratischen Fehlers und der durch Friedman verbesserten Bewertung zu finden;
- „absolute_error“ ist der mittlere absolute Fehler, wobei der Median jedes Endknotens verwendet wird, um den L1-Verlust zu minimieren;
- „poisson“ verwendet einen reduzierten Poisson-Bias, um Aufteilungen zu finden.
-
Splitter {„best“, „random“}, default=“best“
Die Strategie zur Auswahl der Aufteilung für jeden Knoten. Unterstützte Strategien sind „am besten“, um die beste Aufteilung auszuwählen, und „zufällig“, um die beste zufällige Aufteilung auszuwählen.
-
max_ Depth int, Standard = Keine
Die maximale Tiefe des Baumes. Wenn nicht, werden die Knoten erweitert, bis alle Blätter rein sind oder bis alle Blätter weniger Proben als min_samples_split enthalten.
-
min_samples_split int oder float, Standard=2
Die Mindestanzahl von Stichproben, die zum Teilen eines internen Knotens erforderlich sind.
min_samples_split
Wenn int, dann als Mindestzahl betrachtet .- Wenn Float, dann
min_samples_split
ein Bruch,ceil(min_samples_split * n_samples)
die minimale Anzahl von Proben pro Teilung.
-
min_samples_leaf int oder float, Standard=1
Die für einen Blattknoten erforderliche Mindestanzahl an Stichproben.
min_samples_leaf
Aufteilungspunkte beliebiger Tiefe werden nur dann berücksichtigt, wenn sowohl im linken als auch im rechten Zweig noch mindestens Trainingsbeispiele vorhanden sind . Dies kann zu einer Glättung des Modells führen, insbesondere bei der Regression.- Wenn int, dann
min_samples_leaf
als kleinste Zahl betrachten. - Wenn Float, dann
min_samples_leaf
ein Bruch,ceil(min_samples_leaf * n_samples)
der die minimale Anzahl von Stichproben pro Knoten darstellt.
In Version 0.18 geändert: Float-Werte für Brüche hinzugefügt.
- Wenn int, dann
-
min_weight_fraction_leaf float, Standard = 0,0
Der kleinste gewichtete Bruchteil der Summe der Gewichte (alle Eingabestichproben), der an einem Blattknoten erforderlich ist. Wenn „sample_weight“ nicht angegeben wird, werden die Stichproben gleich gewichtet.
-
max_features int, float oder {„auto“, „sqrt“, „log2“}, default=None
Die Anzahl der Funktionen, die bei der Suche nach der besten Aufteilung berücksichtigt werden müssen.
- Wenn int,
max_features
werden Features bei jeder Teilung berücksichtigt. - Wenn Float, dann
max_features
eine Bewertung, ummax(1, int(max_features * n_features_in_))
Features für jede Aufteilung zu berücksichtigen. - Wenn „auto“, dann
max_features=n_features
. - Wenn „sqrt“, dann
max_features=sqrt(n_features)
. - Wenn „log2“, dann
max_features=log2(n_features)
. - Wenn nicht, na ja
max_features=n_features
. Veraltet seit Version 1.1: Die Option „auto“ war in Version 1.1 veraltet und wird in Version 1.3 entfernt. Hinweis: Die Suche nach Teilungen wird erst dann beendet, wenn mindestens eine gültige Teilung der Knotenstichproben gefunden wird, selbst wenn eine effiziente Überprüfung überschüssigermax_features
Features erforderlich ist.
- Wenn int,
-
random_state int, RandomState-Instanz oder None, Standard=None
Steuert die Zufälligkeit des Schätzers. Auch
splitter
wenn die Option auf festgelegt ist"best"
, werden Features bei jeder Teilung zufällig permutiert. Wennmax_features < n_features
, wählt der Algorithmus jede Aufteilung zufällig ausmax_features
und findet unter ihnen die beste Aufteilung. Aber selbst dannmax_features=n_features
kann die gefundene optimale Aufteilung in verschiedenen Läufen unterschiedlich sein. Dies ist der Fall, wenn die Standardverbesserung für mehrere Splits gleich ist und ein Split zufällig ausgewählt werden muss.random_state
muss auf eine Ganzzahl festgelegt werden , um ein deterministisches Verhalten während der Anpassung zu erhalten . -
max_leaf_nodes int, default=None
max_leaf_nodes
Züchten Sie mit „Best First“ einen Baum. Beste Knoten werden als relativ reduzierte Verunreinigungen definiert. Wenn nicht, ist die Anzahl der Blattknoten unbegrenzt. -
min_impurity_decrease float, Standard = 0,0
Wenn die durch eine Knotenteilung verursachte Verunreinigungsreduzierung größer oder gleich diesem Wert ist, wird der Knoten geteilt.
Die Gleichung zur gewichteten Verringerung der Verunreinigung lautet wie folgt:
N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)
Dabei ist N die Gesamtzahl der Stichproben,
N_t
die Zahl der Stichproben des aktuellen Knotens,N_t_L
die Zahl der Stichproben des linken untergeordneten KnotensN_t_R
und die Zahl der Stichproben des rechten untergeordneten Knotens.N
,N_t
undN_t_R
alleN_t_L
beziehen sich auf gewichtete Summen, wenn sample_weight übergeben wird. -
ccp_alpha nicht negativer Float, Standard = 0,0
Komplexitätsparameter für minimale Kosten-Komplexitätsbereinigung.
ccp_alpha
Der Teilbaum mit der größten Kostenkomplexität und weniger als wird ausgewählt . Standardmäßig erfolgt keine Beschneidung.
Codebeispiel
import pandas as pd
from sklearn.tree import DecisionTreeRegressor
# Path of the file to read
iowa_file_path = '../input/home-data-for-ml-course/train.csv'
home_data = pd.read_csv(iowa_file_path)
y = home_data.SalePrice
feature_columns = ['LotArea', 'YearBuilt', '1stFlrSF', '2ndFlrSF', 'FullBath', 'BedroomAbvGr', 'TotRmsAbvGrd']
X = home_data[feature_columns]
# Specify Model
iowa_model = DecisionTreeRegressor()
# Fit Model
iowa_model.fit(X, y)
print("First in-sample predictions:", iowa_model.predict(X.head()))
print("Actual target values for those homes:", y.head().tolist())