1

Я мало знаю о том, как работает случайный лес. Обычно в классификации я мог бы поместить данные поезда в случайный классификатор леса и попросить предсказать тестовые данные.Как интерпретировать классификатор случайных лесов от изучения sci-kit?

В настоящее время я работаю над титаническими данными, которые предоставляются мне. Это верхние ряды набора данных и 1300 (приблизительных) строк.

survived pclass sex age sibsp parch fare embarked 0 1 1 female 29 0 0 211.3375 S 1 1 1 male 0.9167 1 2 151.55 S 2 0 1 female 2 1 2 151.55 S 3 0 1 male 30 1 2 151.55 S 4 0 1 female 25 1 2 151.55 S 5 1 1 male 48 0 0 26.55 S 6 1 1 female 63 1 0 77.9583 S 7 0 1 male 39 0 0 0 S 8 1 1 female 53 2 0 51.4792 S 9 0 1 male 71 0 0 49.5042 C 10 0 1 male 47 1 0 227.525 C 11 1 1 female 18 1 0 227.525 C 12 1 1 female 24 0 0 69.3 C 13 1 1 female 26 0 0 78.85 S

Там нет данных испытаний, приведенных. Поэтому я хочу, чтобы случайный лес предсказывал выживание по всему набору данных и сравнивал его с фактической стоимостью (больше похоже на проверку оценки точности).

Итак, что я сделал, разделите мой полный набор данных на две части; один с функциями, а другой предсказал (выжил). Особенности включают в себя все столбцы, кроме выживших, и предсказание состоит из сохранившейся колонки.

dfFeatures = df['survived'] 
dfTarget = dfCopy.drop('survived', 1) 

Примечание: df - это весь набор данных.

Вот код, который проверяет оценку RandomForest

rfClf = RandomForestClassifier(n_estimators=100, max_features=10) 
rfClf = rfClf.fit(dfFeatures, dfTarget) 
scoreForRf = rfClf.score(dfFeatures, dfTarget) 

я получаю выход счет с чем-то вроде этого

The accuracy score for random forest is : 0.983193277311 

Я нахожу это немного трудно понять, что происходит позади кода в приведенном выше коде.

Прогнозирование выживания для всех кортежей, основанных на других функциях (dfFeatures), и сравнить его с данными испытаний (dfTarget) и дать оценку прогноза или сделать это случайным образом для создания данных поезда и испытаний на основе данных поезда и сравнить точность данных теста, сгенерированных позади?

Чтобы быть более точным, при вычислении оценки точности он прогнозирует выживаемость всего набора данных или всего лишь случайного частичного набора данных?

+0

Если вы вручную разделите набор данных на поезд и тест, да, это предсказанный сохранившийся столбец в наборе тренировок и попытайтесь сопоставить его с тестовым набором, и это ваша оценка точности. – Arman

+0

@Arman, если я не делюсь на тренировочный набор и тестовый набор. Разве это не случайно генерирует тестовый набор (67-23) за сценой? – Cybercop

+0

Я так думаю, что в отношении параметра, который описывает, насколько установлен набор тестов и сколько тренировок установлено, как бы я не был точно уверен, возможно, в этой ситуации точность оценки точности тренировки не соответствует точности теста – Arman

ответ

1

Как-то я не вижу, что вы пытаетесь разделить набор данных на поезд и испытания

dfWithTestFeature = df['survived'] 

dfWithTestFeature содержит только столбец выжила, что этикетки.

dfWithTrainFeatures = dfCopy.drop('survived', 1) 

dfWithTrainFeatures содержит всю функцию (класс, пол, возраст и т. Д.).

и теперь прыгает к коду,

rfClf = RandomForestClassifier(n_estimators=100, max_features=10) 

линия выше создает случайный лесной классификатор, n_estimator является глубиной дерева, большее число это приведет к overfit данных.

rfClf = rfClf.fit(dfWithTrainFeatures, dfWithTestFeature) 

линия выше процесс обучения, то .fit() потребности 2 параметра, первый для функции, а вторая метка (или целевое значение, которое является значением «» выжила столбец) из особенностей.

scoreForRf = rfClf.score(dfWithTrainFeatures, dfWithTestFeature) 

.score() потребность 2 параметра, первая является особенность и второе это этикетка. Это для использования модели, которую мы создали с помощью функции .fit(), чтобы предсказать функции в 1-м параметре, в то время как второй параметр будет значением валидации.

Из того, что я вижу, вы используете одни и те же данные для обучения и тестирования модели, которая не хороша.

Чтобы быть более точным, при расчете оценки точности он прогнозирует выживаемость всего набора данных или всего лишь случайного частичного набора данных?

Вы использовали все данные для проверки модели.

Я мог бы использовать проверку перекрестных ссылок, но затем снова вопрос: нужно ли мне для случайного леса? Также перекрестная проверка для случайного леса кажется очень медленной

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

Если вы считаете, что модель работает слишком медленно, уменьшите значение n_esimators.

+0

Прежде всего, num_estimators - это не глубина, а количество деревьев в случайном лесу. И я хочу, чтобы дерево было основано на характеристиках поезда, чтобы предсказать выживаемость. Я уже установил эти значения в соответствии с функцией – Cybercop

+0

@cybercop. О, извините, что вы правы, его номер дерева, ну, если вы хотите использовать все данные, которые вы тренируете для проверки вашей сети, правильно сделали, он дает 98,7% точности из всех 1300+ данных –

+0

@Om Prakash благодарит вас за исправление моей грамматической ошибки –