Как научиться водить механику с нуля


Уроки вождения на механике для начинающих: советы, видео, инструкции

В России пару лет назад количество автомобилей с АКПП и механической трансмиссией было примерно одинаковым, хотя предыдущие годы наблюдался бурный рост покупок транспортных средств с вариатором. Для сравнения: в США на «автоматах» ездит 94% водителей, ибо они появились гораздо раньше, чем у нас. И нетрудно догадаться, что навыки управления машиной с «механикой» там практически утеряны, чего не скажешь о РФ. Однако молодое поколение, как и женщины, уже нуждаются в подробных инструкциях того, как нужно управлять подобными авто. Но прежде, чем начинать подробное описание данного процесса, вначале нужно назвать причины, по которым машины с МКПП в России по-прежнему пользуются популярностью:

-  такими трансмиссиями всегда оснащаются мощные, спортивные автомобили;

-  автомобили с механической коробкой передач стоят дешевле;

-  «механика» позволяет лучше чувствовать машину и быстрее управлять ею;

-  оснащение транспортного средства подобной «коробкой» позволяет экономить горючее;

-  в плане ремнотопригодности МКПП тоже предпочтительней в сравнении с АКПП, и стоит восстановление работоспособности агрегата значительно меньше.

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

 

1. О передачах

Владея машиной с механической «коробкой», вы должны отработать навык самостоятельного переключения скоростей до автоматизма. Здесь нет электроники, которая без участия водителя уравнивает скорости вращения шестерней на валу коробки. Зато имеется педаль сцепления, которая за счет нажатия на нее ногой временно отключает трансмиссию специально для того, чтобы передвинуть рычаг в нужное положение и переключить скорость. Только помните: выжимать эту педаль нужно до конца! Кстати, основная масса машин оснащается 4-5- скоростными МКПП, дополнительно есть одна задняя скорость. Давайте разберемся, для чего они нужны.

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

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

Вторая скорость – это рабочая лошадка, которая позволяет спускаться со склона и маневрировать в дорожной «пробке». Она является переходной к так называемым пониженным 3-5 передачам, позволяющим развивать более высокую скорость. Акцентироваться на них мы не будем, так как переключаются они одинаково.

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

 

 

2. Процесс освоения передач

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

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

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

В этой практике можно пользоваться тахометром, если он имеется «на борту». Конечно, в зависимости от модели, марки и модификации автомобиля порядок переключения может быть разным, однако доказано на практике, что новая передача должна задействоваться тогда, когда обороты мотора достигли 3000 об./мин. Дополнительно рекомендуется наблюдать за спидометром. Например, переключайте скорости каждые 20-25 км/ч, однако помните, что это общее правило. Если у авто мощный мотор, то эти цифры могут быть однозначно большими.

 

3. Запускаем двигатель!

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

 

4. Педаль сцепления используем правильно

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

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

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

 

5. Учимся координировать действия

Машина с МКПП при умелом управлении доставляет водителю массу немало драйва. Ведь она предоставляет возможность резкого ускорения, что недоступно машине с АКПП. Уроки вождения для женщин помогают довести это действия до автоматизма, четко координируя манипуляции с органами управления. Приведем пример правильного алгоритма при езде на 1-2 скоростях.

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

6. Дауншифтинг

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

Зачем уроки вождения на механике для начинающих включают в себя умение «дауншифтить»?

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

выжав сцепление, включите третью передачу, передвинув правую ногу с акселератора на тормоз;

медленно отпускайте сцепление – это позволит избежать повышенных оборотов;

перед остановкой повторно выжмите сцепление;

первую скорость в качестве понижающей не активируйте.

 

7. Задний ход

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

 

8. Трогание в гору

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

1) Загоните автомобиль на наклонный участок дороги, поставьте на ручной тормоз, включите «нейтралку».

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

3) В определенный момент вы почувствуете: машина назад не съезжает. Значит, вам удалось удержать авто на горке, не применяя тормоз.

 

9. Тайны парковки

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

 

10. Практикуйтесь чаще!

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

Когда вы почувствуете, что более-менее приспособились к авто с «механикой», переходите к практическому опыту в реальных дорожных условиях. Начинайте с простых упражнений, предварительно изучив местность, по которой вы будете ездить чаще всего. Рекомендуется заниматься рано-рано утром, часов в 5, либо после полуночи – в это время машин на дороге меньше всего, что придаст дополнительную уверенность.

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

Как разработать модель машинного обучения с нуля | Виктор Роман

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

Конкретно в статье будет рассмотрено, как:

  • Определить адекватно нашу проблему (цель, желаемые результаты…).
  • Соберите данные.
  • Выберите меру успеха.
  • Установите протокол оценки и различные доступные протоколы.
  • Подготовьте данные (имея дело с пропущенными значениями, с категориальными значениями…).
  • Спилите правильно данные.
  • Проведите различие между переоборудованием и недостаточным соответствием, определив, что это такое, и объяснив, как их избежать.
  • Обзор того, как модель учится.
  • Что такое регуляризация и когда целесообразно ее использовать.
  • Разработайте эталонную модель.
  • Выберите подходящую модель и настройте ее на максимальную производительность.

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

  • Какова основная цель? Что мы пытаемся предсказать?
  • Каковы целевые функции?
  • Какие входные данные? Это доступно?
  • С какими проблемами мы сталкиваемся? Бинарная классификация? Кластеризация?
  • Какое улучшение ожидается?
  • Каков текущий статус целевой функции?
  • Как будет измеряться целевой объект?

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

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

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

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

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

Обычно наши данные будут иметь следующую форму:

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

Питер Друкер, преподаватель Гарвардского университета и автор книги «Эффективный руководитель и управление собой», сказал знаменитую поговорку:

«Если вы не можете измерить это, вы не сможете улучшить это».

Если вы хотите контролировать что-то, это должно быть наблюдаемым, и для достижения успеха важно определить, что считается успехом: Может быть, точность? точность? Уровень удержания клиентов?

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

  • В задачах регрессии используются определенные метрики оценки, такие как среднеквадратичная ошибка (MSE).
  • В задачах классификации используются такие показатели оценки, как точность, точность и отзывчивость.

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

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

4.1 Поддержание набора проверки удержания

Этот метод состоит в выделении некоторой части данных в качестве набора для тестирования.

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

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

4.2 Проверка K-Fold

K-Fold состоит в разбиении данных на K разделов равного размера. Для каждого раздела i модель обучается с оставшимися разделами K-1 и оценивается на разделе i.

Итоговая оценка - это среднее значение из полученных К. Этот метод особенно полезен, когда производительность модели значительно отличается от разделения поезд-тест.

4.3 Итерированная проверка K-Fold с перетасовкой

Этот метод особенно актуален при наличии небольшого количества данных и необходимости оценки модели как можно точнее (это стандартный подход на соревнованиях Kaggle).

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

Этот метод может быть очень дорогостоящим с точки зрения вычислений, так как количество обученных и оценивающих моделей будет I x K раз. Это I количество итераций и K количество разделов.

Примечание. При выборе протокола оценки важно учитывать следующие моменты:

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

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

5.1 Работа с недостающими данными

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

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

  1. Удаление образцов или объектов с пропущенными значениями. (мы рискуем удалить релевантную информацию или слишком много выборок)
  2. Ввод недостающих значений с помощью некоторых встроенных оценщиков, таких как класс Imputer из scikit learn. Мы сопоставим наши данные, а затем преобразуем их, чтобы оценить их. Один из распространенных подходов - установить пропущенные значения как среднее значение для остальных образцов.

5.2 Работа с категориальными данными

При работе с категориальными данными мы работаем с порядковыми и номинальными признаками. Порядковые признаки - это категориальные признаки, которые можно сортировать (размер ткани : L ). А по номиналу не подразумевается какой-либо заказ ( цвет ткани: желтый, зеленый, красный ).

Методы работы с порядковыми и номинальными признаками:

  • Отображение порядковых признаков : чтобы убедиться, что алгоритм правильно интерпретирует порядковые признаки, нам необходимо преобразовать категориальные строковые значения в целые числа.Часто мы делаем это сопоставление вручную. Пример: L: 2, M: 1, S: 0.
  • Кодирование меток номинального класса : Наиболее распространенным подходом является выполнение однократного кодирования, которое заключается в создании нового фиктивного объекта для каждого уникального значения в столбце номинального признака. Пример: в столбце цвета, если у нас есть три класса: желтый, красный, зеленый и выполняется одноразовое кодирование, мы получим три новых столбца, по одному для каждого уникального класса. Тогда, если у нас есть желтая рубашка, она будет выбрана как: желтый = 1, зеленый = 0, красный = 0.Это сделано для обеспечения хорошей производительности алгоритма, поскольку они намного более эффективны при работе с разреженной матрицей (матрицы с низкой плотностью, с большим количеством значений 0).

5.3 Масштабирование функций

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

  • Нормализация: это изменение масштаба функций в диапазоне [0,1], что является частным случаем масштабирования min-max.Чтобы нормализовать наши данные, нам просто нужно применить метод масштабирования min-max к каждому столбцу функций.
  • Стандартизация: она заключается в центрировании столбцов признаков по среднему значению 0 со стандартным отклонением 1, чтобы столбцы признаков имели те же параметры, что и стандартное нормальное распределение (нулевое среднее и единичное отклонение). Это значительно упрощает алгоритмам обучения определение весов параметров. Кроме того, он сохраняет полезную информацию о выбросах и делает алгоритмы менее чувствительными к ним.

5.4 Выбор значимых функций

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

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

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

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

5.5 Разделение данных на подмножества

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

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

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

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

а) Процесс обучения

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

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

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

Формула прямой: y = B0 + B1x + u . Где x - входные данные, B1 - наклон, B0 - точка пересечения по оси Y, u - остаток и y - значение линии в позиции x .

Доступные для обучения значения: B0 и B1 , которые являются значениями, которые влияют на положение строки, поскольку единственными другими переменными являются x (вход и y, выход (остаток не учитывается). ).Эти значения ( B0 и B1 ) являются «весами» функции прогнозирования.

Эти веса и другие, называемые смещениями, представляют собой параметры, которые будут организованы вместе в виде матриц ( W, для весов и b для смещений).

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

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

b) Переоснащение и недостаточное оснащение

Одной из наиболее важных проблем при рассмотрении обучения моделей является противоречие между оптимизацией и обобщением.

  • Оптимизация - это процесс настройки модели для получения максимальной производительности на обучающих данных (процесс обучения).
  • Обобщение - насколько хорошо модель работает с невидимыми данными.Цель состоит в том, чтобы получить наилучшую способность к обобщению.

В начале обучения эти две проблемы коррелируют: чем меньше потери данных обучения, тем меньше потери тестовых данных. Это происходит, когда модель еще недостаточно приспособлена: еще предстоит научиться, еще не смоделированы все соответствующие параметры модели.

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

Есть два способа избежать этого переобучения: получение дополнительных данных и регуляризация.

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

Регуляризация выполняется в основном следующими методами:

  1. Уменьшение размера модели: уменьшение количества обучаемых параметров в модели, а вместе с ними и ее способности к обучению. Цель состоит в том, чтобы найти золотую середину между слишком большой и недостаточной способностью к обучению. К сожалению, нет никаких волшебных формул для определения этого баланса, его нужно проверять и оценивать, задав различное количество параметров и наблюдая за его работой.
  2. Добавление регуляризации веса: В целом, чем проще модель, тем лучше. Пока она может хорошо учиться, более простая модель вряд ли переобучится. Обычный способ добиться этого - ограничить сложность сети, заставив ее веса принимать только небольшие значения, упорядочивая распределение значений весов. Это делается путем добавления к функции потерь сети стоимости, связанной с большими весами. Стоимость возникает двумя способами:
  • Регуляризация L1: Стоимость пропорциональна абсолютному значению весовых коэффициентов (норма весов L1).
  • Регуляризация L2: Стоимость пропорциональна квадрату значения весовых коэффициентов (норма весов l2)

Чтобы решить, какие из них применить к нашей модели, рекомендуется иметь в виду следующую информацию: примите во внимание природу нашей проблемы:

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

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

Как показано на «https://blog.dominodatalab.com/benchmarking-predictive-models/»

«Часто бывает полезно сравнить улучшение модели с упрощенной базовой моделью, такой как kNN или наивный байесовский метод для категориальных данных. или EWMA значения в данных временного ряда.Эти базовые показатели дают представление о возможной прогнозирующей способности набора данных.

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

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

7.1 Поиск хорошей модели

Одним из наиболее распространенных методов поиска хорошей модели является перекрестная проверка.При перекрестной проверке мы установим:

  • Количество складок, по которым мы разделим наши данные.
  • Метод подсчета баллов (зависит от природы проблемы - регрессия, классификация…).
  • Некоторые подходящие алгоритмы, которые мы хотим проверить.

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

  # Параметры тестирования и метрики оценки  
num_folds = 10
scoring = "neg_mean_squared_error" # Алгоритмы выборочной проверки
models = []
models.append (('LR', LinearRegression ()))
models.append (('LASSO', Lasso ()))
models.append (('EN', ElasticNet ()))
models.append (('KNN ', KNeighborsRegressor ()))
models.append ((' CART ', DecisionTreeRegressor ()))
models.append ((' SVR ', SVR ()))

results = []
names = []
для имени , модель в моделях:
kfold = KFold (n_splits = num_folds, random_state = seed)
cv_results = cross_val_score (model, X_train, y_train, cv = kfold, scoring = scoring)
results.append (cv_results)
имен.append (name)
msg = "% s:% f (% f)"% (name, cv_results.mean (), cv_results.std ())
print (msg)

   # Сравнить алгоритмы   
fig = pyplot.figure ()
fig.suptitle ('Сравнение алгоритмов')
ax = fig.add_subplot (111)
pyplot.boxplot (результаты)
ax.set_xticklabels (имена)
pyplot.show ()

7.2 Настройка Гиперпараметры модели

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

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

Процесс будет следующим:

  • Установите сетку параметров, которую мы будем оценивать. Мы сделаем это, создав словарь всех параметров и соответствующих им наборов значений, которые вы хотите протестировать на лучшую производительность.
  • Задайте количество складок, случайное состояние и метод оценки.
  • Постройте объект K-Fold с выбранным количеством складок.
  • Создайте объект поиска по сетке с выбранной моделью и подогнайте его.
  # Построить масштабатор  
scaler = StandardScaler (). Fit (X_train)
rescaled X = scaler.transform (X_train) # Построить сетку параметров
c_values ​​= [0,1, 0,3, 0,5, 0,7, 0,9, 1,0 , 1.3, 1.5, 1.7, 2.0]
kernel_values ​​= ['linear', 'poly', 'rbf', 'sigmoid']
param_grid = dict (C = c_values, kernel = kernel_values) # Построить модель
model = SVC ()
kfold = KFold (n_splits = num_folds, random_state = seed)
grid = GridSearchCV (оценка = модель, param_grid = param_grid, scoring = scoring, cv = kfold)
grid_result = grid.fit (rescaledX, y_train) # Показать результаты
print ("Лучшее:% f с использованием% s"% (grid_result.best_score_, grid_result.best_params_))
means = grid_result.cv_results _ ['mean_test_score']
stds = grid .cv_results _ ['std_test_score']
params = grid_result.cv_results _ ['params']
для среднего, stdev, param в zip (означает, stds, params):
print ("% f (% f) with:% r" % (mean, stdev, param))

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

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

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

В следующей статье мы начнем с первого и наиболее распространенного типа задач машинного обучения: регрессии.

Спасибо за чтение и следите за обновлениями!

.

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

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

Не огорчайтесь, если сначала не поймете. Мне потребовалось время, чтобы привыкнуть к ручному переключению, но оно того стоило! Продолжайте практиковаться и практикуйтесь, и вы получите это! Радоваться, веселиться!

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

Мой опыт обучения управлению рычагом переключения передач

Я всегда хотел управлять рычагом переключения передач, потому что это казалось очень забавным и крутым. Когда я получил свой Mustang GT 2012 года с механической коробкой передач, я был так взволнован поездкой на нем. Я просмотрел несколько руководств по вождению автомобиля с механической коробкой передач и не думал, что это будет сложно научиться. Как я ошибался. Мой двигатель Coyote мощностью 412 лошадиных сил и 390 крутящего момента был трудным в управлении автомобилем. Я заглох влево и вправо.

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

Я играл со сцеплением и нащупал точку трения или точку укуса; то есть точка, в которой автомобиль катится, но сцепление просит вас добавить больше газа.В этот момент вы чувствуете небольшое сопротивление, небольшую вибрацию педали сцепления; автомобиль просит достаточно бензина, чтобы он мог работать, когда сцепление полностью выключено.

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

Заведите автомобиль на нейтрали

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

Перед отпусканием сцепления убедитесь, что автомобиль стоит на нейтрали. Нейтральный слот - это пустое пространство между шестернями, представленное полосой в середине буквы «H». Чтобы проверить, находитесь ли вы в нейтральном положении, осторожно пошевелите ручкой, чтобы проверить, можете ли вы двигать ее влево и вправо. Если можете, вы на нейтрали.

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

Переключитесь на первую передачу

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

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

Отпустите аварийный тормоз

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

Отпустите сцепление и дайте двигателю немного газа

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

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

Начните медленно добавлять немного газа, немного нажав на педаль газа. Подайте достаточно газа, чтобы стрелка тахометра сместилась в положение «1» или «2», то есть от 1000 до 2000 об / мин. Если вы дадите слишком мало газа, машина заглохнет. Если вы дадите слишком много, вы начнете сжигать сцепление, что для новичка не представляет большого труда, но со временем сцепление может изнашиваться.

Отпустите сцепление после включения передач

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

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

Видео о том, как водить автомобиль с механической коробкой передач

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

Переключение на более высокие передачи

Переключение передач, на мой взгляд, намного проще, чем начало движения автомобиля. Посмотрите на узор «H» на ручке переключения передач, чтобы изучить различные передачи.Вы переключаетесь с 1 на 2, на 3, на 4, на 5, а затем на 6, если у вас шестая передача.

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

Допустим, вы на первой передаче переходите на вторую. Следуйте этим процедурам.

  1. Включите сцепление, а затем переведите ручку на вторую. На большинстве автомобилей, чтобы перейти от первого к второму, вы тянете ручку на себя, то есть вниз к нижней ножке буквы «H».
  2. Медленно отпустите сцепление до точки захвата, а затем добавьте немного газа.
  3. Отпустите сцепление и продолжайте движение.

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

Переключитесь на более высокую передачу, когда двигатель достигает 2500 об / мин

Как узнать, когда нужно переключаться? Вы можете посмотреть на обороты или скорость, на которой вы движетесь. Обычно вам следует переключаться со скоростью от 2500 до 3000 об / мин.

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

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

Я заглохла машина! Что теперь?!

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

Так почему вы заглохли? Вы включили первую передачу, но не дали машине достаточно газа для движения. Он хотел двинуться, но не хватило газа, и он заглох. Если вы чувствуете, что машина вот-вот заглохнет, просто нажмите на педаль сцепления.

Почему Руководство по эксплуатации?

Итак, каковы преимущества вождения с механической коробкой передач?

  1. Поскольку вы сами управляете переключением передач, автомобиль может работать более экономично и эффективно в ручном режиме, чем в автоматическом.
  2. Поскольку вы сами управляете переключением передач, вы можете ускоряться быстрее, чем в автоматическом режиме, и переключать передачи в любое время.
  3. Руководство по вождению или ручное переключение передач поначалу будет несколько затруднительным, но через неделю или две после следования этому руководству и практики это станет вашей второй натурой.

Дай мне знать, как дела!

Это мои методы обучения управлению автомобилем с механической коробкой передач и (намного проще, но менее увлекательным) автомобилем с автоматической коробкой передач.Оставьте комментарий ниже с вопросом или комментарием!

,

Как стать программистом: 8 шагов к созданию приложения с нуля

Введение

«Как лучше всего научиться программировать?»

«Как стать программистом»

«Как создать приложение»

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

Если у вас нет, или если вы почему-то думаете, что я хочу сказать что-то новое и все равно хотите это услышать (я не знаю), вот короткий и почти бессмысленный ответ (я дам ему SEO-ориентированный клик - название приманки: «3 шага к тому, чтобы стать программистом»):

Шаг 1. Выберите язык

Шаг 2: Изучите язык

Шаг 3: Собирайте материал и продолжайте учиться

Эй, не бросайся в меня. Как бы я ни хотел сказать, что существует универсальный метод обучения программированию, на самом деле его нет.(Позвольте мне добавить Шаг 0: признаю, что все учатся по-разному).

Бесчисленные более подробные ответы на шаги 1 и 2 уже существуют в Интернете, но общий ответ на первый шаг - изучить Python или Ruby в качестве своего первого языка (не слишком зацикливайтесь на языке, вы никогда не получите началось). Если вам нужны учебные ресурсы, мы подготовили несколько руководств, которые вы можете проверить:

Некоторые из вас дойдут до этого момента:

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

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

Но как создать собственное приложение?

Вы всегда можете следовать существующим руководствам о том, как создать клон Twitter / Pinterest / Instagram / и т. Д. На любом языке и технологиях, которые вы используете, но имейте в виду, что авторы этих руководств фактически сделали большую часть работы за вас, и все, что вы делаете, это понимаете код и их логику.

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

Предварительные требования

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

Более того, если вы хотите создать веб-приложение, вам нужно знать некоторые базовые навыки DevOps, чтобы иметь возможность настроить среду / сервер разработки и иметь возможность запускать приложение.

Если вы хотите стать только интерфейсным веб-разработчиком, вы можете отточить свои навыки HTML, CSS и JavaScript в Codepen или JSfiddle. Если вы знаете только JavaScript и не хотите изучать другой язык, вы можете попробовать Node.js, поскольку это платформа JavaScript для внутренней разработки (вы также можете использовать MongoDB в качестве базы данных, поскольку она также основана на JavaScript).

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

  • Рубин
  • Python
  • PHP
  • Ява
  • Перейти
  • C #

Если вы хотите создавать игры, вы можете рассмотреть возможность изучения Lua, хотя C # также является очень хорошим выбором благодаря движку Unity 3D и его огромному сообществу.Что касается разработки собственных мобильных приложений, вам необходимо знать Swift / Objective-C для разработки под iOS и Java для разработки под Android.

Без лишних слов, давайте перейдем к созданию приложения с нуля.

Шаг 0: Разберитесь в себе

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

Например:

  • Какие приложения вам больше всего нравятся?
  • Без каких приложений вы не можете жить?
  • Вы любите играть в игры?
  • Вам нравится конструировать вещи?
  • и т. Д.

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

Шаг 1. Выберите идею

Теперь, когда вы, надеюсь, разобрались, пора выбрать идею для воплощения. Простой старт .

Да ... даже если вы думаете о создании игры, прямо сейчас вам не следует думать о создании следующего CounterStrike, а вместо этого вам следует думать о том, как создавать игры, столь же простые, как печально известная Flappy Bird.Эй, не смотри свысока на Flappy Bird - это была сенсация, которая заставила людей во всем мире открыть для себя своего внутреннего мазохиста. Но я отвлекся.

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

Вот несколько указателей, которые помогут вам получить вдохновение:

  • Если вам нравится готовить, возможно, вы захотите создать приложение, в котором люди будут демонстрировать свои домашние рецепты.
  • Если вы всегда хотели знать, как работает Twitter, попробуйте создать суперпростой клон Twitter.
  • Если вы забывчивый человек, который полагается на менеджеров задач, попробуйте создать их самостоятельно.
  • Если вы пристрастились к League of Legends, вы можете попробовать использовать Riot API и создать сайт, который сможет получать и отображать информацию об игре.
  • Если вам нравится играть в карточные игры, попробуйте собрать простую (например, Блэк Джек).
  • Если вы сидите на диете, попробуйте создать приложение, которое будет регистрировать количество потребляемых вами калорий.

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

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

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

Шаг 2: Определите основные функции

Подумайте, что ваше приложение должно уметь делать, и перечислите их.Если вы в конечном итоге перечисляете кучу вещей, присмотритесь и спросите себя, ДЕЙСТВИТЕЛЬНО ли этому приложению требуется, например, вход в Facebook для работы? Неужели для работы ДЕЙСТВИТЕЛЬНО нужно загружать данные в какое-то облако?

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

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

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

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

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

Для образца основной список функций для клона Reddit:

  • пользователи могут создать учетную запись
  • пользователей могут восстановить утерянные пароли
  • пользователей могут менять свои пароли
  • пользователей могут размещать новые ссылки
  • пользователей могут комментировать ссылки
  • пользователей могут голосовать за / против ссылки
  • пользователей имеют профиль, показывающий их историю / активность

Перечисленные выше функции являются основными функциями, на которых вам следует сосредоточиться в первую очередь.Другие функции, такие как:

  • пользователей могут поделиться в социальных сетях
  • пользователей могут удалять комментарии
  • Пользователи могут редактировать комментарии
  • пользователей могут удалить свою учетную запись

Являются вторичными и могут быть сохранены для версии 1.x - работайте с ними только после того, как вы действительно сможете запустить версию 1.0

Шаг 3. Нарисуйте свое приложение

Лицензия CC

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

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

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

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

Шаг 4. Планирование пользовательского интерфейса вашего приложения

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

(лицензия CC)

Включите в блок-схему все действия, которые может выполнять пользователь. Например, если ваше приложение требует от пользователей входа в систему, как им создать учетную запись? Что делать, если пользователи забыли свой пароль? Что, если они ввели неправильный пароль? Что должен делать пользователь в каждом интерфейсе (добавить новый элемент списка> сохранить; изменить> сохранить / удалить)? И так далее. Быстрее всего это делается с помощью ручки и бумаги.

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

Шаг 5. Проектирование базы данных

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

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

Вы можете нарисовать диаграмму ERM (модель сущности-отношения), чтобы отобразить взаимосвязь данных.

Пример схемы Entity-Relationship Diagram сайта выбора курса Лицензия CC

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

Продвинутый

Если приложение, которое вы планируете, будет взаимодействовать с сервером (например,грамм. если вы создаете полнофункциональное веб-приложение) или если ваше приложение будет взаимодействовать с API (например, вы пытаетесь получить информацию от Yahoo! Weather), то, вероятно, будет хорошей идеей нарисовать диаграмму последовательности для вас, чтобы получить лучшее представление о том, как должны работать процессы.

Из Википедии

Шаг 6. Каркасы UX

Хорошо, у вас запланирована внутренняя часть. А теперь пора спланировать интерфейс.

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

Лицензия CC

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

К счастью, в Интернете существует множество инструментов для создания каркасов и макетов, которые помогут вам спланировать свой UX / UI поток (например, Gliffy, Mockflow, Framebox, Wireframe.cc, Invisionapp).

Шаг 6.5 (необязательно): разработка пользовательского интерфейса

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

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

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

UI ​​Cloud
Graphicburger
UI Dock

Для игр:
Spriters Resource

Однако не слишком зацикливайтесь на внешнем виде приложения.Прямо сейчас вам следует сосредоточиться на создании функций приложения.

Шаг 7: поиск решений

Отлично! Вы закончили этап планирования ... но как вы должны кодировать все это?

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

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

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

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

Ищем решения

Взгляните на все схемы, которые вы нарисовали, а также на список функций, который вы создали на шаге 2.

Какие вещи вы совершенно не представляете, как построить?

Например, нужно ли пользователям создавать учетную запись? Ваше приложение полагается на обновления в реальном времени? Какие функции вам нужны?

В большинстве случаев рекомендуется просто использовать существующее решение для больших функций, таких как обработка синхронизации в реальном времени (например, Firebase), работа в сети / маршрутизация (например, AFNetworking для приложений iOS), аутентификация и компоненты, связанные с пользовательским интерфейсом ( например, Flipboard или приложение в стиле pinterest).

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

В любом случае, лучший способ начать - это изучить, что другие разработчики сделали до вас, , и изучить логику их решений. GitHub - ваш лучший друг.

Чтобы увидеть реальный пример процесса исследования опытным разработчиком конкретной функции, вы можете посмотреть этот пост о том, как создатель Angular-Plunker создал директивы перетаскивания Plunker'а.

Выбор инструментов для начала работы

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

Если вы создаете приложение React, вы также можете проверить стартовые комплекты и существующие реализации Flux. HTML5Boilerplate и Bootstrap - популярные интерфейсные шаблоны для вашего приложения. Чаще всего шаблоны используют Gulp или Grunt для управления задачами.

Поскольку вы, вероятно, собираетесь использовать некоторые существующие компоненты или решения, вам также следует установить bower для управления зависимостями (npm для тех, кто использует Node.js и CocoaPods для разработчиков iOS). Не волнуйтесь - в большинстве случаев к этим инструментам прилагаются руководства, в которых вы узнаете, как их установить.

Шаг 8: Создание приложения

Да! Теперь вы готовы создать приложение! Вот несколько советов, которые следует учитывать при создании приложения.

Контрольный список

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

В целом, чтобы следить за своим прогрессом, вы можете составить список задач и использовать его в качестве контрольного списка.

Первая запись тестов

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

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

Тогда это (преувеличение того, что) может случиться:

Или не дай бог:

И это вы, пытаясь исправить приложение:

… Более-менее.

Итак, неплохо было бы начать с малого и выработать привычку заниматься разработкой через тестирование (TDD), тем более что вы начинаете с нуля и создаете что-то простое.

У вас сейчас не к дедлайну с вилами за спиной менеджера проекта, не так ли?

Советы по шаблонам модульного тестирования вы можете найти в этой статье. Еще один совет, который следует иметь в виду, - не утверждать слишком много банальностей.

На ваш выбор доступны многие инструменты тестирования, такие как Jasmine или Karma для JavaScript, Rspec для Ruby, PyTest для Python, PHPUnit для PHP, Quick в качестве альтернативы xCTest для разработки iOS или любой другой инструмент, с которым, по вашему мнению, будет работать ты.

Кроме того, если вы создаете приложение для iOS или Android, рекомендуется попробовать Crashlytics.

7 шагов для эффективной отладки

Используйте Git

Git - это система контроля версий и полноценный репозиторий с полной историей и полными возможностями отслеживания версий. Хорошей идеей будет начать учиться использовать Git при создании своего первого приложения. Таким образом, вы можете легко исправить свои ошибки, восстановить потерянные данные и многое другое. Кроме того, если вы планируете работать с командой разработчиков в будущем, вам все равно нужно будет использовать git.GitHub - самый популярный сервис хостинга репозиториев Git для проектов с открытым исходным кодом, а Bitbucket - для частных репозиториев.

Если у вас возникнут проблемы при использовании git, вам может помочь этот пост о 10 наиболее распространенных проблемах Git и способах их устранения .

Если вы застряли…

Как новичок, вы будете чаще чувствовать себя этим хомяком.

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

Если это все еще не работает, вот несколько способов отклеить себя:

Google

Я упомянул Google-fu в шаге 7, но позвольте мне еще раз подчеркнуть, что изучение работы с Google - важный навык, который необходимо приобрести всем программистам. Если вы столкнулись с ошибкой или не знаете, почему ваш код не работает, это хорошая идея для Google.

Спросите в StackOverflow

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

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

Альтернатива: найти наставника

Некоторые люди скажут, что StackOverflow не подходит для начинающих, потому что новички не знают, как сформулировать свои вопросы. Но что, если вы даже не знаете, в чем ваша проблема?

Если вы дойдете до грани управления головой (или если вы уже руководите работой…), вам не нужно злоупотреблять своим лбом (если вы сильно ударите головой, вы просто потеряете мозги).

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

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

Таким образом, вы можете получить помощь от опытных программистов через живые сеансы 1: 1 на Codementor, где ставки наставников начинаются от 15 долларов за минуту. Во время этих занятий вы можете пообщаться в видеочате с опытными разработчиками и поделиться с ними своим экраном / кодом, а наставник научит вас, как исправить ваш код, а также расскажет, что вы сделали неправильно, чтобы вы могли избежать ошибки. в будущем. Вы также можете просмотреть код сеанса или записать сеанс на локальный диск с помощью инструмента видеочата.Зарегистрируйтесь сейчас и попробуйте первые 15 минут бесплатно с наставниками, предлагающими сделку.

Последний совет

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

Кроме того, вы очень часто тратите часы или даже дни на одно дело, и все равно испытываете трудности с тем, чтобы заставить его работать так, как вы хотите. Если бы быстрое программирование новых функций было простым, миру не потребовались бы новые программисты. Черт возьми, у нас, вероятно, сейчас была бы безупречная iOS100, и мы бы построили цифровой мир, подобный тому, который существует в Матрице.

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

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

Удачного кодирования!


Автор Биография


Йи-Джирр Чен || Content Maketing & Operations
Типичный массивный компьютерщик, который играет и любит науку и технологии. Также издает художественную литературу под псевдонимом, который является псевдонимом по причине

.

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