Как применить перекрестную проверку данных? - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу оценить модель ML, используя средний балл перекрестной проверки.

Я разделяю данные на поезд и набор тестов.

Но я не знаю, нужно ли мне использовать данные о поездах или тестах для оценки модели с использованием показателя перекрестной проверки.

Вот часть моего кода:

train, test = train_test_split(basic_df, test_size=0.3, random_state=42)  

# Separate the labels from the features and convert features & labels to numpy arrays
x_train=train.drop('successful',axis=1)
y_train=train['successful']

x_test=test.drop('successful',axis=1)
y_test=test['successful']

model = RandomForestClassifier()

model_random = RandomizedSearchCV(estimator = model, param_distributions = random_grid, n_iter = 100, cv = 5, verbose=2, random_state=42, n_jobs = -1)

model_random.fit(x_train, y_train)


print('Accuracy score: ', model_random.score(x_test,y_test))
print('Average Cross-Val-Score: ', np.mean(cross_val_score(model_random, x_train, y_train, cv=5))) # 5-Fold Cross validation

Y_predicted = model_random.predict(x_test.values)
print('f1_score (macro): ', f1_score(y_test, Y_pred, average='macro') )

Основной вопрос заключается в следующей строке кода:

print('Average Cross-Val-Score: ', np.mean(cross_val_score(model_random, x_train, y_train, cv=5))) # 5-Fold Cross validation

Правильно или мне следует использоватьтестовый набор там такой:

print('Average Cross-Val-Score: ', np.mean(cross_val_score(model_random, x_test, y_test, cv=5))) # 5-Fold Cross validation

1 Ответ

0 голосов
/ 21 декабря 2018

Вам не нужно снова подходить, чтобы узнать производительность вашей модели на тренировочных данных.Вы можете получить с помощью следующей команды

import pandas as pd
pd.DataFrame(model_random.cv_results_) 

посмотрите на столбец mean_test_score.Помните, что это производительность в тестовом цикле перекрестной проверки.Это даст вам представление о том, насколько хорошо работает модель для определенной комбинации гиперпараметров, выбранной RandomizedSearchCV.Наилучшая комбинация гиперпараметров и соответствующая модель могут быть извлечены с помощью

model_random.best_params_
model_random.best_estimator_

В соответствии с вашими фактическими данными испытаний, обычно люди не используют перекрестную проверку там.Просто сделайте прогноз там, например, как вы в этой части.В фоновом режиме он использует model_random.best_estimator_ для прогнозирования.

Y_predicted = model_random.predict(x_test.values)
print('f1_score (macro): ', f1_score(y_test, Y_pred, average='macro') )

Посмотрите эту документацию для получения дополнительных пояснений.

...