Я пытаюсь настроить параметр max_depth моего DecisionTreeClassifier
. Я пытаюсь использовать AU C (область под кривой) в качестве показателя оценки c. Вот мой код:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
def max_depth_prediction(X_train, y_train, X_test, y_test, y):
max_depths = np.linspace(1, 32, 32, endpoint=True)
train_results = []
test_results = []
for max_depth in max_depths:
dt = DecisionTreeClassifier(max_depth=max_depth)
dt.fit(X_train, y_train)
train_pred = dt.predict(X_train)
print(y_train)
print(train_pred)
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_train.astype(int), train_pred.astype(int))
roc_auc = auc(false_positive_rate, true_positive_rate)
# Add auc score to previous train results
train_results.append(roc_auc)
y_pred = dt.predict(X_test)
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, y_pred)
roc_auc = auc(false_positive_rate, true_positive_rate)
# Add auc score to previous test results
test_results.append(roc_auc)
Однако при его использовании я получаю сообщение об ошибке:
ValueError: y_true takes value in {'0', '1'} and pos_label is not specified: either make y_true take value in {0, 1} or {-1, 1} or pass pos_label explicitly.
Я проверил мои 2 вектора, и они кажутся хорошими:
y_train = ['0' '0' '0' ... '1' '1' '0']
train_pred = ['0' '0' '1' ... '1' '1' '0']