[PYTHON] So stellen Sie xg boost mit Optuna ein

So stellen Sie xg boost mit Optuna ein

Lassen Sie uns die Regression von "xgboost" einstellen.

Informationen zu "xgboost" finden Sie bei anderen HP. "Was ist Xgboost? & Ein Memo über die Hauptparameter" https://qiita.com/2357gi/items/913af8b813b069617aad

Später habe ich auf die Parameter auf der offiziellen Website verwiesen. https://xgboost.readthedocs.io/en/latest/parameter.html

Ich habe verschiedene Dinge eingegeben, aber das Entscheidungsbaumsystem ist in der Regel überlernt. Daher denke ich, dass es besser ist, die Parameter festzulegen, die es fest steuern. In xgboost ist es lambda und alpha, aber wenn Sie mit python einstellen, geben Sie es mit reg_ wie reg_lambda und reg_alpha an.

#Stellen Sie die Zielfunktion von optuna ein
#Dies ist eine gtree-Parametereinstellung.
def objective(trial):
    eta =  trial.suggest_loguniform('eta', 1e-8, 1.0)
    gamma = trial.suggest_loguniform('gamma', 1e-8, 1.0)
    max_depth = trial.suggest_int('max_depth', 1, 20)
    min_child_weight = trial.suggest_loguniform('min_child_weight', 1e-8, 1.0)
    max_delta_step = trial.suggest_loguniform('max_delta_step', 1e-8, 1.0)
    subsample = trial.suggest_uniform('subsample', 0.0, 1.0)
    reg_lambda = trial.suggest_uniform('reg_lambda', 0.0, 1000.0)
    reg_alpha = trial.suggest_uniform('reg_alpha', 0.0, 1000.0)
    
  
    regr =xgb.XGBRegressor(eta = eta, gamma = gamma, max_depth = max_depth,
                           min_child_weight = min_child_weight, max_delta_step = max_delta_step,
                           subsample = subsample,reg_lambda = reg_lambda,reg_alpha = reg_alpha)
 
    score = cross_val_score(regr, X_train, y_train, cv=5, scoring="r2")
    r2_mean = score.mean()
    print(r2_mean)
 
    return r2_mean

#Finden Sie mit optuna den optimalen Wert
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=500)
 
#Passend für abgestimmte Hyperparameter
optimised_rf = xgb.XGBRegressor(eta = study.best_params['eta'],gamma = study.best_params['gamma'],
                                max_depth = study.best_params['max_depth'],min_child_weight = study.best_params['min_child_weight'],
                                max_delta_step = study.best_params['max_delta_step'],subsample = study.best_params['subsample'],
                                reg_lambda = study.best_params['reg_lambda'],reg_alpha = study.best_params['reg_alpha'])
 
optimised_rf.fit(X_train ,y_train)

Dies ist das Ergebnis von Boston.

xgboost_Figure 2020-08-08 185911.png

Es ist alles.

# -*- coding: utf-8 -*-
 
from sklearn import datasets
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
import pandas as pd
import optuna
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import cross_val_score
 
#Laden Sie den Boston-Datensatz
boston = datasets.load_boston()
 
#print(boston['feature_names'])
#Getrennte Merkmalsmenge und Zielvariable
X = boston['data']
y = boston['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8)

#Stellen Sie die Zielfunktion von optuna ein
#Dies ist eine gtree-Parametereinstellung.
def objective(trial):
    eta =  trial.suggest_loguniform('eta', 1e-8, 1.0)
    gamma = trial.suggest_loguniform('gamma', 1e-8, 1.0)
    max_depth = trial.suggest_int('max_depth', 1, 20)
    min_child_weight = trial.suggest_loguniform('min_child_weight', 1e-8, 1.0)
    max_delta_step = trial.suggest_loguniform('max_delta_step', 1e-8, 1.0)
    subsample = trial.suggest_uniform('subsample', 0.0, 1.0)
    reg_lambda = trial.suggest_uniform('reg_lambda', 0.0, 1000.0)
    reg_alpha = trial.suggest_uniform('reg_alpha', 0.0, 1000.0)
    
  
    regr =xgb.XGBRegressor(eta = eta, gamma = gamma, max_depth = max_depth,
                           min_child_weight = min_child_weight, max_delta_step = max_delta_step,
                           subsample = subsample,reg_lambda = reg_lambda,reg_alpha = reg_alpha)
 
    score = cross_val_score(regr, X_train, y_train, cv=5, scoring="r2")
    r2_mean = score.mean()
    print(r2_mean)
 
    return r2_mean
 
#Finden Sie mit optuna den optimalen Wert
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=500)
 
#Passend für abgestimmte Hyperparameter
optimised_rf = xgb.XGBRegressor(eta = study.best_params['eta'],gamma = study.best_params['gamma'],
                                max_depth = study.best_params['max_depth'],min_child_weight = study.best_params['min_child_weight'],
                                max_delta_step = study.best_params['max_delta_step'],subsample = study.best_params['subsample'],
                                reg_lambda = study.best_params['reg_lambda'],reg_alpha = study.best_params['reg_alpha'])
 
optimised_rf.fit(X_train ,y_train)
#Ergebnisse anzeigen
print("Passend für Trainingsdaten")
print("Genauigkeit der Trainingsdaten=", optimised_rf.score(X_train, y_train))
pre_train = optimised_rf.predict(X_train)
print("Passend für Testdaten")
print("Testen Sie die Genauigkeit der Daten=", optimised_rf.score(X_test, y_test))
pre_test = optimised_rf.predict(X_test)
 
#Grafik anzeigen
plt.scatter(y_train, pre_train, marker='o', cmap = "Blue", label="train")
plt.scatter(y_test ,pre_test, marker='o', cmap= "Red", label="test")
plt.title('boston')
plt.xlabel('measurment')
plt.ylabel('predict')
#Passen Sie den Text hier an
x = 30  
y1 = 12
y2 = 10
s1 =  "train_r2 =" + str(optimised_rf.score(X_train, y_train))
s2 =  "test_r2 =" + str(optimised_rf.score(X_test, y_test))
plt.text(x, y1, s1)
plt.text(x, y2, s2)
 
plt.legend(loc="upper left", fontsize=14)
plt.show()


Recommended Posts

So stellen Sie xg boost mit Optuna ein
So richten Sie SVM mit Optuna ein
So richten Sie eine zufällige Gesamtstruktur mit Optuna ein
So richten Sie eine zufällige Gesamtstruktur mit Optuna ein
Wie man optuna einstellt (wie man einen Suchraum schreibt)
So richten Sie eine Python-Umgebung mit pyenv ein
[Kaggle] Versuchen Sie es mit xg boost
So konfigurieren Sie Layer auf Lambda mit AWS SAM
Umfrageprotokoll zur Optimierung von LightGBM-Hyperparametern mit Optuna
So installieren Sie Python mit Anaconda
[Blender] So legen Sie shape_key mit dem Skript fest
So zeichnen Sie ein Diagramm mit Matplotlib
So stellen Sie die Serverzeit auf japanische Zeit ein
So installieren Sie ein Paket mithilfe eines Repositorys
Überlebensvorhersage mit Kaggles Titanic XG Boost [80,1%]
So laden Sie YouTube-Videos mit pytube3 herunter
So zeigen Sie eine Karte mit der Google Map API (Android) an
So codieren Sie eine Drohne mithilfe der Bilderkennung
So legen Sie den Browserstandort in Headless Chrome fest
So stellen Sie Djangos DB auf mongodb visual studio 2019 ein
So erhalten Sie Artikeldaten mithilfe der Qiita-API
So richten Sie einen lokalen Entwicklungsserver ein
So suchen Sie HTML-Daten mit Beautiful Soup
Hochladen auf ein freigegebenes Laufwerk mit pydrive
So deinstallieren Sie ein mit setup.py installiertes Modul
Festlegen der CPU-Affinität für Prozessthreads
So richten Sie die Authentifizierung mit öffentlichem Schlüssel mit ssh ein
So schreiben Sie eine GUI mit dem Befehl maya
Wie man Pferderenndaten mit pandas read_html kratzt
So senden Sie Microsoft Forms automatisch mit Python (Mac-Version)
Wie man ein praktisches Seminar mit Jupyter mit Docker abhält
Wie klicke ich mit der rechten Maustaste über die Tastatureingabe in RPA?
So erstellen Sie ein Python-Paket mit VS Code
[Blender] So legen Sie die Auswahlelemente von EnumProperty dynamisch fest
Stellen Sie PATH in der Umgebung von Ansible auf "sudo su-" ein
Beenden bei Verwendung von Python in Terminal (Mac)
[Einführung in die Udemy Python3 + -Anwendung] 30. Verwendung des Sets
Analysieren mit Google Colaboratory mithilfe der Kaggle-API
So rufen Sie mehrere Arrays mit Slice in Python ab.
[Einführung in Python] Wie stoppe ich die Schleife mit break?
So führen Sie einen Befehl mit einem Unterprozess in Python aus
So richten Sie die Cython-Umgebung ein und kompilieren sie
Wie man schneller schreibt, wenn man numpy wie deque verwendet
[Einführung in Python] So schreiben Sie sich wiederholende Anweisungen mit for-Anweisungen
Verwendung von xml.etree.ElementTree
Verwendung von virtualenv
Schaben 2 Wie man kratzt
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
So installieren Sie Python
Verwendung von Pandas 2
Wie man PyPI liest
So installieren Sie pip
Verwendung von Virtualenv
Verwendung von numpy.vectorize
So aktualisieren Sie easy_install
So installieren Sie archlinux
Verwendung von pytest_report_header