Как научиться ориентироваться в лесу


Как ориентироваться в лесу без компаса: 8 лучших способов

Настоящий турист не теряется никогда, он просто разведывает новую территорию! Но что делать в незнакомой дикой местности, если с собой нет компаса или GPS? Существует ряд методов ориентирования, позволяющих обойтись без компаса и навигационных устройств.

Способы ориентирования на местности без компаса

Существуют разные приемы ориентирования в лесу. Не все методы являются точными, желательно определять стороны горизонта при помощи сразу нескольких из них (Рисунок 1).

Наиболее простыми и распространенными методами ориентирования являются:

  1. По деревьям.
  2. По мхам и лишайникам.
  3. По муравейникам.
  4. По крестам храмов (церквей).
  5. По просекам.
  6. По Солнцу.
  7. По звездам.
  8. По Луне. Рисунок 1. Основные методы ориентации в лесу без компаса, подробно о которых Вы узнаете ниже

Ориентирование по деревьям

Для более точной ориентации в лесу желательно присмотреться к нескольким древесным стволам, а не делать выводы по одному-двум.

Сориентироваться на местности по деревьям можно несколькими способами:

  1. Если присмотреться к деревьям, то можно увидеть, что листьев с южной стороны больше и они более густые, на северной же стороне листьев меньше. Причиной такому явлению то, что в северном полушарии планеты солнце проходит по южной стороне, и с этой стороны больше тепла (Рисунок 2).
  2. С северной стороны древесная кора более темная и грубая. Лучше всего это наблюдается у сосны, лиственницы, березы, осины.
  3. Обычно после дождя сосновые стволы темнеют с северной стороны дерева, что обуславливается вторичной коркой, быстрее нарастающей именно с северной стор

Cadence of Hyrule Lost Woods: Как ориентироваться в лесу

The Cadence of Hyrule Загадка Lost Woods - одна из самых сложных в игре, если вы не знаете, с чего начать, потому что неясно, как вы добираетесь до Затерянного болота. Вы найдете Затерянный лес на западной половине карты, прямо рядом с пляжем, но там только один вход, и когда вы попадете внутрь Каденции Хайрула Затерянных лесов, игра начинает шутить над вами, повторяя область, которую вы были в.Вот как пройти Cadence of Hyrule Lost Woods и добраться до Lost Swamp, или у нас также есть несколько советов Cadence of Hyrule, если вы только начинаете.

Не умеете плавать? Здесь можно найти Cadence of Hyrule Flippers, и у нас есть информация о том, следует ли выбрать Cadence of Hyrule Link или Zelda. И если вы спрашиваете, как долго длится Cadence of Hyrule, мы это тоже покрыли.

Подойдите к Затерянному лесу с дальнего левого края карты и войдите через пляж.Активируйте камень шейха, убейте врагов, затем войдите в комнату, где вы найдете Каденс. Поговорите с ней, и в третьей строке, по ее словам, будет сказано: «Если бы только была какая-то подсказка, куда идти ...»

Выйдите из комнаты, снова убейте всех тех же врагов, затем идите на юг. Убейте всех грибных врагов, затем войдите в пень, где вы найдете говорящего скраба и крепко спящего Тингла. Подойдите к статуе наверху, затем отойдите, чтобы она взорвалась и отправила каменный шар, катящийся по музыкальным нотам.Вам нужно согласовывать ритм песни с вашими движениями - как в бою, - но для того, чтобы мяч катился в нужное время. Это может занять пару попыток, но когда вы это сделаете, Тингл проснется и даст вам лозоискателя Тингла.

Это хитрое изобретение, которое посредством вибрации сообщает вам, куда идти. Назначьте его X, B, Y или A, затем оставьте пень и убейте врагов-грибов еще раз. Вы используете его, приближаясь к одному из четырех выходов в каждую комнату, активируя его, и если вы чувствуете четыре сильных вибрации в вашем контроллере, это правильный путь.Если вы чувствуете только две легкие вибрации, это неправильный путь.

В нашей игре направления были «Вправо», «Вниз», «Вправо», но поскольку карта мира «Каденция Хайрула» генерируется случайным образом каждый раз, она будет отличаться для вас, и вам потребуется использовать лозоискатель Тингла. Убейте врагов у входа в Затерянное болото, когда доберетесь туда, и поздравляю, вы нашли еще один храм!

.

Предоставление инструкций на английском языке - Lingokids

Одна из основных целей воспитания детей - помочь малышам стать независимыми. С такой задачей нелегко справиться, но обучение их тому, как давать и просить указания , приближает родителей на шаг к конечной цели. Благодаря этому они узнают, как передвигаться, и таким образом становятся более уверенными в себе.

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

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

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

Инструкции на английском языке

Go straight - Giving Directions

прямо

Идите прямо по Main Street.

Turn left -Giving Directions

повернуть налево

Поверните налево на супермаркет.

Turn right - Giving Directions

повернуть направо

На следующем повороте поверните направо.

Go past - Giving Directions

пройти

Пройдите мимо кинотеатра и вы найдете библиотеку.

Cross - Giving Directions

крест

Если перейти улицу, то там книжный магазин!

идти по

Идите по главной дороге, пока не найдете заправочную станцию.

за углом

Музей находится прямо за углом .;

между

Кафе находится между офисным зданием и кинотеатром.

позади

За автостоянкой красивый парк.

повернуть назад / вернуться

Если вы дойдете до моста, вы зашли слишком далеко, вам придется повернуть назад.

вниз

Спуститесь с холма, и вы найдете вход в парк.

больше

Чтобы попасть в здание, нужно перейти по дорожке.

пройти через

Сократите путь к школе через парк.

рост

Поднимитесь на холм, и вы найдете автобусную остановку.

перед

Рынок напротив мэрии.

у

Моя школа рядом с небольшим парком.

около

Живу недалеко от леса.

Спрашивать дорогу на английском

Простите, а где ...?

Простите, как мне добраться ...?

Извините, а поблизости есть ______?

Как мне добраться ...?

Какая дорога...?

Где находится _____?

Словарь направлений

Roundabout -Giving Directions

кольцевой

Sidewalk - Giving Directions

тротуар

Zebra crossing - Giving Directions

зебра

Traffic lights - Giving Directions

светофор

улица

проспект

дорога

угол

тротуар

шоссе

переулок

переход

Тройник

указатель

переход

перекресток

мост

проселочная дорога

съезд

автострада

переулок

эстакада

переулок

бульвар

туннель

Карточки для печати с указаниями

Flashcards: giving directions

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

Игры

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

Видео

Узнайте, как говорить по-английски с приложением Lingokids. Обучающие видео по английскому языку для детей от 2 до 8 лет.

Hqdefault Дом основных форм

Песен

Откройте для себя большой выбор детских песен для изучения английского

Задания

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

Camping Раскраски Кемпинг Раскраска Shapes coloring pages Фигуры .

гиперпараметров Настройка случайного леса в Python | by Will Koehrsen

Я включил код Python в эту статью, где он наиболее поучителен. Полный код и данные для отслеживания можно найти на странице проекта Github.

Лучше всего думать о гиперпараметрах, как о настройках алгоритма, которые можно настроить для оптимизации производительности, точно так же, как мы можем повернуть ручки AM-радио, чтобы получить четкий сигнал (или ваши родители могли бы это сделать!). В то время как параметры модели изучаются во время обучения, такие как наклон и пересечение в линейной регрессии, специалист по данным должен установить гиперпараметры перед обучением .В случае случайного леса гиперпараметры включают количество деревьев решений в лесу и количество функций, учитываемых каждым деревом при разделении узла. (Параметры случайного леса - это переменные и пороговые значения, используемые для разделения каждого узла, изученного во время обучения). Scikit-Learn реализует набор разумных гиперпараметров по умолчанию для всех моделей, но не гарантируется, что они будут оптимальными для проблемы. Лучшие гиперпараметры обычно невозможно определить заранее, а при настройке модели машинное обучение превращается из науки в разработку, основанную на пробах и ошибках.

Гиперпараметры и параметры

Настройка гиперпараметров больше полагается на экспериментальные результаты, чем на теорию, и, таким образом, лучший метод определения оптимальных настроек - это попробовать множество различных комбинаций для оценки производительности каждой модели. Однако оценка каждой модели только на обучающей выборке может привести к одной из самых фундаментальных проблем машинного обучения: переобучению.

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

Модель overfit может выглядеть впечатляюще на обучающем наборе, но будет бесполезна в реальном приложении. Таким образом, стандартная процедура оптимизации гиперпараметров учитывает переоснащение посредством перекрестной проверки.

Технику перекрестной проверки (CV) лучше всего объяснить на примере с использованием наиболее распространенного метода - K-Fold CV. Когда мы подходим к проблеме машинного обучения, мы обязательно разделяем наши данные на обучающий и тестовый набор. В K-Fold CV мы дополнительно разбиваем наш обучающий набор на K подмножеств, называемых складками. Затем мы итеративно подбираем модель K раз, каждый раз обучая данные на K-1 складок и оценивая K-ю складку (называемую данными проверки). В качестве примера рассмотрим подгонку модели с K = 5.Первую итерацию мы тренируем на первых четырех складках и оцениваем на пятой. Во второй раз мы тренируемся в первом, втором, третьем и пятом раза и оцениваем в четвертом. Мы повторяем эту процедуру еще 3 раза, каждый раз оценивая по разному. В самом конце обучения мы усредняем производительность по каждой из складок, чтобы получить окончательные метрики проверки для модели.

Перекрестная проверка с 5 сгибами (источник)

Для настройки гиперпараметров мы выполняем множество итераций всего процесса K-Fold CV, каждый раз используя разные настройки модели.Затем мы сравниваем все модели, выбираем лучшую, обучаем ее на полном обучающем наборе, а затем оцениваем на тестовом наборе. Это звучит ужасно утомительно! Каждый раз, когда мы хотим оценить другой набор гиперпараметров, мы должны разделить наши обучающие данные на K раз, обучить и оценить K раз. Если у нас есть 10 наборов гиперпараметров и мы используем 5-кратное CV, это соответствует 50 циклам обучения. К счастью, как и большинство проблем в машинном обучении, кто-то решил нашу проблему, и настройка модели с помощью K-Fold CV может быть автоматически реализована в Scikit-Learn.

Обычно у нас есть лишь смутное представление о лучших гиперпараметрах, и поэтому лучший способ сузить наш поиск - это оценить широкий диапазон значений для каждого гиперпараметра. Используя метод Scikit-Learn RandomizedSearchCV, мы можем определить сетку диапазонов гиперпараметров и случайным образом выбрать из сетки, выполняя K-Fold CV с каждой комбинацией значений.

Вкратце, прежде чем мы перейдем к настройке модели, мы имеем дело с проблемой машинного обучения с контролируемой регрессией.Мы пытаемся предсказать температуру завтра в нашем городе (Сиэтл, Вашингтон), используя прошлые исторические данные о погоде. У нас есть 4,5 года тренировочных данных, 1,5 года тестовых данных, и мы используем 6 различных функций (переменных), чтобы делать наши прогнозы. (Полный код для подготовки данных см. В записной книжке).

Давайте быстро рассмотрим особенности.

Функции для прогнозирования температуры
  • temp_1 = максимальная температура (в F) за один день до
  • average = историческая средняя максимальная температура
  • ws_1 = средняя скорость ветра за один день до
  • temp_2 = максимальная температура за два дня до
  • friend = прогноз от нашего «верного» друга
  • год = календарный год

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

Чтобы посмотреть на доступные гиперпараметры, мы можем создать случайный лес и проверить значения по умолчанию.

 из sklearn.ensemble import RandomForestRegressorrf = RandomForestRegressor (random_state = 42) from pprint import pprint # Посмотрите на параметры, используемые нашим текущим лесом 
print ('Параметры, используемые в настоящее время: \ n')
pprint (rf.get_params ()) Используемые в настоящее время параметры:

{'bootstrap': True,
'criterion': 'mse',
'max_depth': None,
'max_features': 'auto',
'max_leaf_nodes': None,
'min_impurity_decrease' : 0.0,
'min_impurity_split': Нет,
'min_samples_leaf': 1,
'min_samples_split': 2,
'min_weight_fraction_leaf': 0.0,
'n_estimators': 10,
'n_jobs': 1,
'oobse_score ,
'random_state': 42,
'verbose': 0,
'warm_start': False}

Вау, это довольно обширный список! Как узнать, с чего начать? Хорошее место - документация по случайному лесу в Scikit-Learn. Это говорит нам о том, что наиболее важными параметрами являются количество деревьев в лесу (n_estimators) и количество функций, рассматриваемых для разделения на каждом листовом узле (max_features).Мы могли бы прочитать исследовательские статьи о случайном лесу и попытаться теоретизировать лучшие гиперпараметры, но более эффективно использовать наше время - просто попробовать широкий диапазон значений и посмотреть, что работает! Мы попробуем настроить следующий набор гиперпараметров:

  • n_estimators = количество деревьев в прогнозе
  • max_features = максимальное количество функций, учитываемых для разделения узла
  • max_depth = максимальное количество уровней в каждом дереве решений
  • min_samples_split = минимальное количество точек данных, помещенных в узел до разделения узла
  • min_samples_leaf = минимальное количество точек данных, разрешенных в листовом узле
  • bootstrap = метод выборки точек данных (с заменой или без нее)

Сетка случайных гиперпараметров

Чтобы использовать RandomizedSearchCV, нам сначала нужно создать сетку параметров для выборки во время подбора:

 из sklearn.model_selection import RandomizedSearchCV # Количество деревьев в случайном лесу 
n_estimators = [int (x) for x in np.linspace (start = 200, stop = 2000, num = 10)]
# Количество функций, которые следует учитывать при каждом разбиении
max_features = ['auto', 'sqrt']
# Максимальное количество уровней в дереве
max_depth = [int (x) для x в np.linspace (10, 110, num = 11)]
max_depth.append (None)
# Минимальное количество образцов, необходимых для разделения узла
min_samples_split = [2, 5, 10]
# Минимальное количество образцов, необходимых для каждого конечного узла
min_samples_leaf = [1, 2, 4]
# Метод выбора образцов для обучения каждого tree
bootstrap = [True, False] # Создайте случайную сетку
random_grid = {'n_estimators': n_estimators,
'max_features': max_features,
'max_depth': max_depth,
'min_samples_split': min_samples_leaf_split ': min_samples47_split min_samples_leaf,
'bootstrap': bootstrap} pprint (random_grid) {'bootstrap': [True, False],
'max _depth ': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, None],
' max_features ': [' auto ',' sqrt '],
' min_samples_leaf ': [1, 2, 4],
'min_samples_split': [2, 5, 10],
'n_estimators': [200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000]}

На каждом итерация, алгоритм выберет разностную комбинацию признаков.Всего 2 * 12 * 2 * 3 * 3 * 10 = 4320 настроек! Однако преимущество случайного поиска заключается в том, что мы не пробуем каждую комбинацию, а выбираем случайным образом для выборки широкого диапазона значений.

Обучение случайному поиску

Теперь мы создаем случайный поиск и подгоняем его, как любую модель Scikit-Learn:

 # Используйте случайную сетку для поиска лучших гиперпараметров 
# Сначала создайте базовую модель для настройки
rf = RandomForestRegressor ( )
# Случайный поиск параметров с использованием трехкратной перекрестной проверки,
# поиск по 100 различным комбинациям и использование всех доступных ядер
rf_random = RandomizedSearchCV (Estimator = rf, param_distributions = random_grid, n_iter = 100, cv = 3, verbose = 2, random_state = 42, n_jobs = -1) # Подходит для модели случайного поиска
rf_random.fit (train_features, train_labels)

Самыми важными аргументами в RandomizedSearchCV являются n_iter, который контролирует количество различных комбинаций, которые нужно попробовать, и cv, которое представляет собой количество складок, используемых для перекрестной проверки (мы используем 100 и 3 соответственно). Больше итераций покроют более широкое пространство поиска, и большее количество кратных сокращений сокращает вероятность переобучения, но повышение каждого из них увеличит время выполнения. Машинное обучение - это область компромиссов, а производительность в зависимости от времени - одна из самых фундаментальных.

Мы можем просмотреть лучшие параметры, подбирая случайный поиск:

 rf_random.best_params_  {'bootstrap': True, 
'max_depth': 70,
'max_features': 'auto',
'min_samples_leaf': 4,
'min_samples_split': 10,
'n_estimators': 400}

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

Оценить случайный поиск

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

 def Assessment (model, test_features, test_labels): 
predictions = model.predict (test_features)
errors = abs (predictions - test_labels)
mape = 100 * np.mean (errors / test_labels)
precision = 100 - mape
print ('Характеристики модели')
print ('Средняя погрешность: {: 0,4f} градуса.'. формат (np.mean (errors)))
print ('Точность = {: 0,2f}%.'. format ( точность))

точность возврата

base_model = RandomForestRegressor (n_estimators = 10, random_state = 42)
base_model.fit (train_features, train_labels)
base_accuracy = оценить (base_model, test_features, test_labels) Производительность модели
Средняя ошибка: 3,9199 градусов.
Точность = 93,36%.
best_random = rf_random.best_estimator_
random_accuracy = оценить (best_random, test_features, test_labels) Производительность модели
Средняя ошибка: 3,7152 градуса.
Точность = 93,73%.
print ('Улучшение {: 0.2f}%.'. Формат (100 * (random_accuracy - base_accuracy) / base_accuracy)) Улучшение 0.40%.

Мы добились впечатляющего улучшения точности на 0,4%. Однако в зависимости от приложения это может быть значительным преимуществом. Мы можем улучшить наши результаты, используя поиск по сетке, чтобы сосредоточиться на наиболее многообещающих диапазонах гиперпараметров, обнаруженных при случайном поиске.

Случайный поиск позволил сузить диапазон для каждого гиперпараметра. Теперь, когда мы знаем, на чем сосредоточить наш поиск, мы можем явно указать каждую комбинацию настроек, чтобы попробовать. Мы делаем это с помощью GridSearchCV, метода, который вместо случайной выборки из распределения оценивает все комбинации, которые мы определяем.Чтобы использовать поиск по сетке, мы создаем другую сетку на основе лучших значений, предоставляемых случайным поиском:

 из sklearn.model_selection import GridSearchCV # Создаем сетку параметров на основе результатов случайного поиска 
param_grid = {
'bootstrap': [True ],
'max_depth': [80, 90, 100, 110],
'max_features': [2, 3],
'min_samples_leaf': [3, 4, 5],
'min_samples_split': [8, 10 , 12],
'n_estimators': [100, 200, 300, 1000]
} # Создание модели на основе
rf = RandomForestRegressor () # Создание экземпляра модели поиска по сетке
grid_search = GridSearchCV (Estimator = rf, param_grid = param_grid,
cv = 3, n_jobs = -1, verbose = 2)

Это попробует 1 * 4 * 2 * 3 * 3 * 4 = 288 комбинаций настроек.Мы можем подогнать модель, отобразить лучшие гиперпараметры и оценить производительность:

 # Подгоняем поиск по сетке к данным 
grid_search.fit (train_features, train_labels) grid_search.best_params_ {'bootstrap': True,
'max_depth': 80,
'max_features': 3,
'min_samples_leaf': 5,
'min_samples_split': 12,
'n_estimators': 100}
best_grid = grid_search.best_estimator_
grid_accuracy = Оценить (best_grid, Performance Model_abatures)
Средняя ошибка: 3.6561 градус.
Точность = 93,83%.
print ('Улучшение {: 0,2f}%.'. Format (100 * (grid_accuracy - base_accuracy) / base_accuracy)) Улучшение 0,50%.

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

  Производительность модели 
Средняя ошибка: 3,6602 градуса.
Точность = 93.82%.
Улучшение 0,49%.

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

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

Сравнение всех моделей Модель

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

Это следующие модели:

  • среднее: исходная базовая линия, вычисленная путем прогнозирования исторической средней максимальной температуры для каждого дня в тестовом наборе
  • one_year: модель, обученная с использованием данных за один год
  • four_years_all: модель, обученная с использованием 4,5 лет данные и расширенные функции (подробности см. в первой части)
  • four_years_red: модель, обученная с использованием данных за 4,5 года и подмножества наиболее важных функций
  • best_random: лучшая модель из случайного поиска с перекрестной проверкой
  • first_grid: лучшая модель из поиска по первой сетке с перекрестной проверкой (выбрана в качестве окончательной модели)
  • second_grid: лучшая модель из поиска второй сетки

В целом, сбор дополнительных данных и выбор функций уменьшили ошибку на 17.69%, а гиперпараметр дополнительно снизил ошибку на 6,73%.

Сравнение моделей (код см. В Блокноте)

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

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

Сначала посмотрим, как влияет изменение количества деревьев в лесу. (см. тетрадь для обучения и построения кода)

Количество деревьев Обучающие кривые

По мере увеличения количества деревьев наша ошибка уменьшается до точки.Нет особого преимущества в точности увеличения количества деревьев сверх 20 (в нашей последней модели было 100), и время обучения постоянно увеличивается.

Мы также можем исследовать кривые для количества функций для разделения узла:

Количество функций Обучающие кривые

По мере увеличения количества сохраняемых функций точность модели увеличивается, как ожидалось. Время обучения также увеличивается, хотя и незначительно.

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

Как всегда, приветствую отзывы и конструктивную критику. Со мной можно связаться по адресу [email protected]

.

Как визуализировать дерево решений из случайного леса в Python с помощью Scikit-Learn | by Will Koehrsen

  1. Создайте поезд модели и извлеките: мы могли бы использовать одно дерево решений, но поскольку я часто использую случайный лес для моделирования, он используется в этом примере. (Деревья будут немного отличаться друг от друга!).
 из sklearn.ensemble import RandomForestClassifier 
model = RandomForestClassifier (n_estimators = 10) # Train
model.fit (iris.data, iris.target)
# Извлечь отдельное дерево
Estimator = model.estimators_ [5]

2. Экспорт дерева как .dot файл: Это использует функцию export_graphviz в Scikit -Учиться. Здесь есть много параметров, которые управляют внешним видом и отображаемой информацией. Взгляните на документацию для уточнения деталей.

 из sklearn.tree import export_graphviz # Экспортировать как точечный файл 
export_graphviz (Estimator_limited,
out_file = 'tree.точка ',
feature_names = iris.feature_names,
class_names = iris.target_names,
Round = True, ratio = False,
precision = 2, fill = True)

3. Преобразовать dot в png с помощью системной команды : запуск системных команд на Python может быть удобен для выполнения простых задач. Для этого требуется установка graphviz, в которую входит утилита dot. Полный список вариантов преобразования можно найти в документации.

 # Преобразовать в png 
из вызова импорта подпроцесса
call (['точка', '-Tpng', 'tree.dot', '-o', 'tree.png', '-Gdpi = 600'])

4. Визуализируйте : лучшие визуализации появляются в Jupyter Notebook. (Аналогично, вы можете использовать matplotlib для отображения изображений).

 # Отображение в jupyter notebook 
из IPython.display import Image
Image (filename = 'tree.png')

Замечания

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

Если у вас много объектов, полезно ограничить максимальную глубину в деревьях. В противном случае вы получите массивные деревья, которые выглядят впечатляюще, но совершенно не могут быть интерпретированы! Вот полный пример с 50 функциями.

.

Смотрите также