Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Побудова Поліноміальної Регресії | Поліноміальна Регресія
Лінійна регресія з Python

bookПобудова Поліноміальної Регресії

Завантаження файлу

Завантажуємо poly.csv та переглядаємо його:

1234
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) print(df.head())
copy

Далі візуалізуємо залежність:

12345
import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
copy

Пряма лінія погано підходить, тому поліноміальна регресія є більш доречною.

Побудова матриці X̃

Щоб створити , можна вручну додати квадратні ознаки:

df['Feature_squared'] = df['Feature'] ** 2

Але для вищих ступенів зручніше використовувати PolynomialFeatures. Для цього потрібна двовимірна структура:

from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)

Вона також додає стовпець константи, тому sm.add_constant() не потрібен.

Якщо X є одномірним, перетворіть його:

X = X.reshape(-1, 1)

Побудова поліноміальної регресії

import statsmodels.api as sm
y = df['Target']
X = df[['Feature']]
X_tilde = PolynomialFeatures(n).fit_transform(X)
model = sm.OLS(y, X_tilde).fit()

Для прогнозування необхідно трансформувати нові дані таким самим чином:

X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)

Повний приклад

123456789101112131415161718
import pandas as pd, numpy as np, matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures df = pd.read_csv(file_link) n = 2 X = df[['Feature']] y = df['Target'] X_tilde = PolynomialFeatures(n).fit_transform(X) model = sm.OLS(y, X_tilde).fit() X_new = np.linspace(-0.1, 1.5, 80).reshape(-1,1) X_new_tilde = PolynomialFeatures(n).fit_transform(X_new) y_pred = model.predict(X_new_tilde) plt.scatter(X, y) plt.plot(X_new, y_pred) plt.show()
copy

Спробуйте різні значення n, щоб побачити, як змінюється крива та як поводяться передбачення поза початковим діапазоном ознаки — це підводить до наступного розділу.

question mark

Розгляньте наступний код. У якому випадку цей код виконається без помилок?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

What does the `PolynomialFeatures` class do in this context?

How do I choose the best degree `n` for my polynomial regression?

Can you explain why a straight line fits poorly in this example?

bookПобудова Поліноміальної Регресії

Свайпніть щоб показати меню

Завантаження файлу

Завантажуємо poly.csv та переглядаємо його:

1234
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/poly.csv' df = pd.read_csv(file_link) print(df.head())
copy

Далі візуалізуємо залежність:

12345
import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
copy

Пряма лінія погано підходить, тому поліноміальна регресія є більш доречною.

Побудова матриці X̃

Щоб створити , можна вручну додати квадратні ознаки:

df['Feature_squared'] = df['Feature'] ** 2

Але для вищих ступенів зручніше використовувати PolynomialFeatures. Для цього потрібна двовимірна структура:

from sklearn.preprocessing import PolynomialFeatures
X = df[['Feature']]
poly = PolynomialFeatures(n)
X_tilde = poly.fit_transform(X)

Вона також додає стовпець константи, тому sm.add_constant() не потрібен.

Якщо X є одномірним, перетворіть його:

X = X.reshape(-1, 1)

Побудова поліноміальної регресії

import statsmodels.api as sm
y = df['Target']
X = df[['Feature']]
X_tilde = PolynomialFeatures(n).fit_transform(X)
model = sm.OLS(y, X_tilde).fit()

Для прогнозування необхідно трансформувати нові дані таким самим чином:

X_new_tilde = PolynomialFeatures(n).fit_transform(X_new)
y_pred = model.predict(X_new_tilde)

Повний приклад

123456789101112131415161718
import pandas as pd, numpy as np, matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.preprocessing import PolynomialFeatures df = pd.read_csv(file_link) n = 2 X = df[['Feature']] y = df['Target'] X_tilde = PolynomialFeatures(n).fit_transform(X) model = sm.OLS(y, X_tilde).fit() X_new = np.linspace(-0.1, 1.5, 80).reshape(-1,1) X_new_tilde = PolynomialFeatures(n).fit_transform(X_new) y_pred = model.predict(X_new_tilde) plt.scatter(X, y) plt.plot(X_new, y_pred) plt.show()
copy

Спробуйте різні значення n, щоб побачити, як змінюється крива та як поводяться передбачення поза початковим діапазоном ознаки — це підводить до наступного розділу.

question mark

Розгляньте наступний код. У якому випадку цей код виконається без помилок?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 3
some-alt