Да предположим, че имаме някои точки в декартова координатна система, например това, което виждате на следващата графика. Както се вижда, имаме 10 точки, всяка от които свързва тегло (нека го разглеждаме като x) към температура (нека го разглеждаме като y). Нашата цел е да познаем функцията, която подхожда най-добре на тези точки, така че да може да предскаже други точки, които сега не присъстват в графиката (например точка с x= 1.5). Тук терминът „най-подходящ“ може да е предизвикателство. Трябва ли идеалната функция да минава точно през всички тези точки?

Краткият отговор на горния въпрос е Не. Всъщност, в реалния свят, когато измерваме количество, не можем да гарантираме точността на измерването и поради това през повечето време нашите данни са шумни. От друга страна, ако се принудим да намерим функция, която минава през всички точки, се сблъскваме с проблем, който се нарича пренастройване. Когато една функция отговаря на всички точки на графиката, тя превишава тези точки и губи силата си да предсказва добре други точки. С други думи, губи своята общост!

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

В горната формула различни коефициенти (ws) ще генерират различни функции с различна степен. И така, нашият проблем ще бъде намирането на тези коефициенти, които ще бъдат обсъдени в следващата публикация. Но засега нека ви покажа как е лесно да начертаете горната графика с помощта на python. Нашите точки от данни са (0,0), (1,2), (1.1,2.1), (2,2.4), (2.1,2.4), (0.5,0.4), (2.5,1.99), (3,3.1 ), (3.3,4) и (3.7,5).

В следващия кодов фрагмент поставям тези точки в numpyмасив, който е една от най-важните структури от данни в машинното обучение с Python.

import numpy as np
data = np.array([[0.0,0.0],[1.0,2.00],[1.1,2.1],[2,2.4],[2.1,2.4],
                 [0.5,0.4],[2.5,1.99],[3.0,3.1],[3.3,4],[3.7,5.0]
               ])

Следващата стъпка е да прехвърлите тези данни във функцията scatter, която е налична в библиотеката matplotlib.pyplot:

import matplotlib.pyplot as plt

x=data[:,0]
y=data[:,1]

plt.scatter(x,y,label="data")
plt.xlabel("Mass (kg)")
plt.ylabel("Temperature (C)")
plt.title('Linear Regression')

Обърнете внимание, че нашата ос X и оста Y са свързани съответно с първата и втората колона на нашите данни. Така че разделяме нашите данни на две променливи x,y с инструкции x=data[:,0]и y=data[:,1].