У меня есть следующий код для классификатора повышения градиента, который будет использоваться для задачи двоичной классификации.
import numpy as np
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
#Creating training and test dataset
X_train, X_test, y_train, y_test =
train_test_split(X,y,test_size=0.30,random_state=1)
#Count of goods in the training set
#This count is 50000
y0 = len(y_train[y_train['bad_flag'] == 0])
#Count of bads in the training set
#This count is 100
y1 = len(y_train[y_train['bad_flag'] == 1])
#Creating the sample_weights array. Include all bad customers and
#twice the number of goods as bads
w0=(y1/y0)*2
w1=1
sample_weights = np.zeros(len(y_train))
sample_weights[y_train['bad_flag'] == 0] = w0
sample_weights[y_train['bad_flag'] == 1] = w1
model=GradientBoostingClassifier(
n_estimators=100,max_features=0.5,random_state=1)
model=model.fit(X_train, y_train.values.ravel(),sample_weights)
Я думаю о написании этого кода следующим образом: -
sample_weights позволит model.fit выбрать все 100 плохих товаров и 200 товаров из учебного набора, и этот же набор из 300 клиентов будет использован для подбора 100 оценщиков в поэтапном порядке.Я хочу исследовать свой тренировочный набор, потому что два класса ответов очень несбалансированы.Пожалуйста, дайте мне знать, если мое понимание кода правильное?
Также я хотел бы подтвердить, что n_estimators = 100 означает, что 100 оценщиков будут соответствовать одному и тому же набору из 300 клиентов.,Это также означает, что в классификаторе повышения градиента нет начальной загрузки, как видно в классификаторе упаковки.