Побудова Лінійної Регресії за Допомогою NumPy
Ви вже знаєте, що таке проста лінійна регресія і як знайти пряму, яка найкраще підходить до даних. Тепер ви пройдете всі етапи побудови лінійної регресії для реального набору даних.
Завантаження даних
Маємо файл simple_height_data.csv
з даними з наших прикладів. Завантажимо файл і переглянемо його:
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file print(df.head()) # Print the first 5 instances from a dataset
Отже, набір даних має два стовпці: перший — це 'Father'
, який є вхідною ознакою, а другий — 'Height'
, що є нашою цільовою змінною.
Ми призначимо цільові значення змінній y
, а значення ознаки — X
та побудуємо діаграму розсіювання.
import pandas as pd import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Знаходження параметрів
NumPy має зручну функцію для знаходження параметрів лінійної регресії.
Лінійна регресія — це поліноміальна регресія першого ступеня (про поліноміальну регресію ми поговоримо в наступних розділах). Саме тому потрібно встановити deg=1
, щоб отримати параметри для лінійної регресії.
Ось приклад:
import pandas as pd import numpy as np file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the files X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Якщо ви не знайомі з синтаксисом beta_1, beta_0 = np.polyfit(X,y,1)
, це називається розпаковуванням. Якщо у вас є ітератор (наприклад, список, масив NumPy або серія pandas), який містить два елементи, запис
a, b = my_iterator
еквівалентний
a = my_iterator[0]
b = my_iterator[1]
Оскільки результат функції polyfit()
— це масив NumPy з двома значеннями, ми можемо так робити.
Створення прогнозів
Тепер ми можемо побудувати лінію та передбачити нові змінні, використовуючи отримані параметри.
import pandas as pd import numpy as np import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters plt.scatter(X,y) # Build a scatter plot plt.plot(X, beta_0 + beta_1 * X, color='red') # Plot the line plt.show()
Тепер, коли ми маємо параметри, можемо використати рівняння лінійної регресії для прогнозування нових значень.
import pandas as pd import numpy as np import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters X_new = np.array([65, 70, 75]) # Feature values of new instances y_pred = beta_0 + beta_1 * X_new # Predict the target print('Predicted y: ', y_pred)
Отримати параметри лінійної регресії досить просто. Однак деякі бібліотеки також можуть надати додаткову інформацію.
Дякуємо за ваш відгук!