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

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



scikit-learn: машинное обучение на Python - документация scikit-learn 0.18.2
Изменить описание scikit-learn.org



Что такое алгоритм контролируемого обучения?

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

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



Теперь перейдем к самому интересному - написанию кода.

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

import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model

Позвольте мне быстро рассказать вам об используемых нами библиотеках. Если у вас их еще нет, вы можете установить их с помощью pip.

  • Matplotlib: это библиотека Python, используемая для построения двухмерных графиков и диаграмм. Мы будем использовать его для представления нашей модели.
  • Numpy: это пакет, который используется для выполнения научных вычислений в Python. Мы будем использовать его для создания массивов и матриц для нашего набора данных и выполнять с ними базовые вычисления.
  • S klearn - linear_model: мы будем использовать линейную модель sklearn для выполнения нашей линейной регрессии для данного набора данных.

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

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

Теперь мы поместим набор данных с использованием словарей в python (для учебных целей) и построим их с помощью библиотеки matplot.

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
house_price = [245, 312, 279, 308, 199, 219, 405, 324, 319, 255]
size = [1400, 1600, 1700, 1875, 1100, 1550, 2350, 2450, 1425, 1700]
plt.scatter (size,house_price, color=’black’)
plt.ylabel(‘house price’)
plt.xlabel(‘size of house’)
plt.show()

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

Теперь мы используем линейную модель scikit для обучения нашего набора данных следующим образом.

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
house_price = [245, 312, 279, 308, 199, 219, 405, 324, 319, 255]
size = [1400, 1600, 1700, 1875, 1100, 1550, 2350, 2450, 1425, 1700]
size2 = np.array(size).reshape((-1, 1))
#fitting into the model
regr = linear_model.LinearRegression()
regr.fit(size2, house_price)
print('Coefficients: \n', regr.coef_)
print('intercept: \n', regr.intercept_)
#############################
#formula obtained for the trained model
def graph(formula, x_range):
   x = np.array(x_range)
   y = eval(formula)
   plt.plot(x, y)
#plotting the prediction line 
graph('regr.coef_*x + regr.intercept_', range(1000, 2700))
print regr.score(size2, house_price)
#############################
plt.scatter (size,house_price, color=’black’)
plt.ylabel(‘house price’)
plt.xlabel(‘size of house’)
plt.show()

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

(‘Coefficients: \n’, array([ 0.10976774]))
(‘intercept: \n’, 98.248329621380833)

Здесь уравнение прогнозируемой линии имеет вид «y = mx + c» со значениями «m» и «c», вычисленными выше.

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

print regr.predict([2000])

Прогнозируемый выход будет 317,78380528 в 1000 $.

На этом мы завершаем руководство по линейной прогрессии. Тем, кто начинает заниматься машинным обучением, я бы посоветовал один раз пройти линейную регрессию без использования библиотеки scikit, просто чтобы лучше понять концепции. Попробуйте использовать такие алгоритмы, как Градиентный спуск, чтобы минимизировать функцию квадратичной ошибки. Если вы не хотите писать код на Python, вы можете использовать такие инструменты, как GNU-Octave или Matlab, которые очень хороши для прототипирования и аналитики. Также вам очень поможет хорошее знание матриц и вычислений.

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

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

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

Также, давайте станем друзьями в Twitter, Linkedin, Github и Facebook.