Я собираюсь написать серию статей, начиная от базовых проектов машинного обучения и заканчивая продвинутыми.
# 100DaysOfMLCode # 100ProjectsInML
Лучший способ научиться чему-либо - это работать над примерами проектов. Каким бы простым ни был проект, он помогает мне лучше понять концепции. Так что я буду работать над небольшими мини-проектами в рамках этого учебного путешествия.
Есть сотни отличных ресурсов, которые помогут вам начать работу. Я наткнулся на этот курс машинного обучения от А до Я на Udemy, и в первые несколько недель я буду рассматривать эти примеры.
Сегодня я рассмотрю «Простую линейную регрессию».
Набор данных
Сначала давайте посмотрим на набор данных. Это Salary_Data.csv, его можно найти здесь.
В нем 2 столбца - Годы опыта и Зарплата для 30 сотрудников в компании. Итак, в этом примере мы обучим модель простой линейной регрессии, чтобы узнать корреляцию между количеством лет опыта каждого сотрудника и их соответствующей зарплатой. Как только модель будет обучена, мы сможем делать некоторые примерные прогнозы.
Ниже представлен набор данных.
Цель проекта
Мы должны спрогнозировать зарплату сотрудника с учетом того, сколько лет он имеет.
Итак, приступим.
Шаг 1. Загрузите набор данных
Ниже приведен фрагмент кода для загрузки набора данных.
Мы будем использовать фрейм данных pandas.
Здесь X - независимая переменная, которая представляет собой «Годы опыта»
, а y - зависимая переменная, которая является «Зарплатой».
Итак, для X мы указываем
dataset.iloc[:, :-1].values
что просто означает взять все строки и все столбцы, кроме последнего
А для y указываем
dataset.iloc[:, 1].values
что просто означает брать все строки и только столбцы с индексом 1 - в индексах python начинаются с 0, поэтому индекс 1 здесь второй столбец, который является зарплатой
Ниже приведен пример снимка экрана X и y.
Шаг 2. Разделите набор данных на обучающий набор и тестовый набор.
Затем нам нужно разделить набор данных на обучение и тестирование. Мы будем использовать обучающий набор данных для обучения модели, а затем проверим производительность модели на тестовом наборе данных.
Для этого мы будем использовать метод train_test_split из библиотеки model_selection
Мы предоставляем test_size 1/3, что означает, что набор тестов будет содержать 10 наблюдений, а обучающий набор будет содержать 20 наблюдений
random_state = 0 требуется только в том случае, если вы хотите сравнить свои результаты с моими.
Ниже приведен пример снимка экрана X_train, y_train, X_test и y_test.
Шаг 3. Подгоните модель простой линейной регрессии к обучающей выборке
Это очень простой шаг. Мы будем использовать класс LinearRegression из библиотеки sklearn.linear_model. Сначала мы создаем объект класса LinearRegression и вызываем метод fit, передавая X_train и y_train.
Шаг 4: спрогнозируйте набор тестов
Используя регрессор, который мы обучили на предыдущем шаге, теперь мы будем использовать его для прогнозирования результатов набора тестов и сравнения прогнозируемых значений с фактическими значениями.
Теперь у нас есть y_pred, которые являются предсказанными значениями из нашей модели, и y_test, которые являются фактическими значениями.
Давайте сравним и посмотрим, насколько хороша наша модель. Как видно на скриншоте ниже - наша базовая модель неплохо справилась.
Если мы возьмем первого сотрудника - фактическая зарплата составляет 37731, а наша модель предсказала 40835,1 - что неплохо. Некоторые прогнозы ошибочны, но некоторые довольно близки.
Шаг 5 - Визуализация обучающей выборки
Давайте визуализируем результаты.
Сначала мы построим фактические точки данных обучающего набора - X_train и y_train.
plt.scatter(X_train, y_train, color = ‘red’)
Затем мы построим линию регрессии, которая представляет собой прогнозируемые значения для X_train.
plt.plot(X_train, regressor.predict(X_train), color=’blue’)
Шаг 6 - Визуализация набора тестов
Давайте визуализируем результаты теста.
Сначала построим фактические точки данных обучающего набора - X_test и y_test.
plt.scatter(X_test, y_test, color = ‘red’)
Затем мы построим линию регрессии - такую же, как указано выше.
plt.plot(X_train, regressor.predict(X_train), color=’blue’)
Шаг 7 - Сделайте новые прогнозы
Мы также можем делать совершенно новые прогнозы для точек данных, которых нет в наборе данных. Как человеку с 15-летним стажем
The predicted salary of a person with 15 years experience is [167005.32889087]
Вот полный исходный код.