Я пытаюсь вручную вычислить значения, показанные в каждом узле каждого дерева ансамбля, возвращаемого GradientBoostingRegressor.
Итак, вот как я обучаю модель:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import fetch_california_housing
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.tree import plot_tree
from sklearn.model_selection import train_test_split
X, y = fetch_california_housing(return_X_y=True, as_frame=True)
X = X.drop(columns=["Latitude", "Longitude"])
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=0)
# fit model
gbm = GradientBoostingRegressor(
criterion="squared_error",
n_estimators=2,
max_depth=3,
random_state=3,
)
gbm.fit(X_train, y_train)
Вопрос в том, как я могу вручную вычислить значение, скажем, первого узла первого, а затем второго дерева?
Я попробовал это, но результат не соответствует значениям на картинке:
# first node first tree
value = np.mean(y_train - y_train.mean())
# first node second tree
residuals = y_train - 0.1 * gbm.estimators_[0][0].predict(X_train)
np.mean((residuals - np.mean(residuals))
Я пытаюсь вручную вычислить значения, показанные в каждом узле каждого дерева ансамбля, возвращаемого GradientBoostingRegressor. Итак, вот как я обучаю модель: [code]import numpy as np import matplotlib.pyplot as plt import pandas as pd
from sklearn.datasets import fetch_california_housing from sklearn.ensemble import GradientBoostingRegressor from sklearn.tree import plot_tree from sklearn.model_selection import train_test_split
X, y = fetch_california_housing(return_X_y=True, as_frame=True) X = X.drop(columns=["Latitude", "Longitude"])
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=0)
gbm.fit(X_train, y_train) [/code] Теперь я рисую деревья: [code]plt.figure(figsize=(8, 8), dpi=300)
# first tree plt.subplot(2, 1, 1) plot_tree( decision_tree=gbm.estimators_[0][0], feature_names=X_train.columns.to_list(), filled=True, # color the squares rounded=True, # round squares precision = 20, ) plt.title("First tree")
# second tree plt.subplot(2, 1, 2) plot_tree( decision_tree=gbm.estimators_[1][0], feature_names=X_train.columns.to_list(), filled=True, # color the squares rounded=True, # round squares precision = 20, ) plt.title("Second tree")
plt.show() [/code] И вот результат: [img]https://i.sstatic.net /8jc2X.png[/img]
Вопрос в том, как я могу вручную вычислить значение, скажем, первого узла первого, а затем второго дерева? Я попробовал это, но результат не соответствует значениям на картинке: [code]# first node first tree value = np.mean(y_train - y_train.mean())
# first node second tree residuals = y_train - 0.1 * gbm.estimators_[0][0].predict(X_train)
Я хочу проверять значения потерь во время обучения, чтобы иметь возможность наблюдать за потерями на каждой итерации. До сих пор я не нашел простого способа, с помощью которого scikit научился бы предоставлять мне историю значений потерь, и я не...
У меня около 22 000 строк обучающих данных.
Я использую train_test_split для получения данных обучения и тестирования.
Я запускаю подгонку, а затем получаю некоторое представление о том, насколько хорошо прошла подгонка, используя различные методы...
У меня около 22 000 строк обучающих данных.
Я использую train_test_split для получения данных обучения и тестирования.
Я запускаю подгонку, а затем получаю некоторое представление о том, насколько хорошо прошла подгонка, используя различные методы...
У меня есть следующая схема источника данных:
Введите описание изображения здесь
Я кодирует 'Дату' Столбец на три отдельных столбца:
Год, месяц, дата.
Мои будущие -
device_id; enuration_energy; Год; месяц; день
Введите описание изображения здесь...
В настоящее время я нахожусь в середине своего путешествия по машинному обучению, и я освещал основы, такие как Python, Numpy, Pandas и Matplotlib. Теперь я хочу глубже погрузиться в Scikit-Learn-библиотека, которая широко используется для...