Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Побудова Поліноміальної Регресії | Поліноміальна Регресія
Quizzes & Challenges
Quizzes
Challenges
/
Лінійна регресія з 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

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

Awesome!

Completion rate improved to 5.26

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