Побудова Поліноміальної Регресії
Свайпніть щоб показати меню
Завантаження файлу
Завантаження poly.csv та перегляд вмісту:
1234import 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())
Далі візуалізація зв'язку:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
Пряма лінія погано підходить, тому поліноміальна регресія є більш доречною.
Побудова матриці X̃
Щоб створити 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)
Повний приклад
123456789101112131415161718import 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()
Спробуйте різні значення n, щоб побачити, як змінюється крива та як поводяться передбачення поза початковим діапазоном ознак — це веде до наступного розділу.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Побудова Поліноміальної Регресії
Завантаження файлу
Завантаження poly.csv та перегляд вмісту:
1234import 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())
Далі візуалізація зв'язку:
12345import matplotlib.pyplot as plt X = df['Feature'] y = df['Target'] plt.scatter(X, y) plt.show()
Пряма лінія погано підходить, тому поліноміальна регресія є більш доречною.
Побудова матриці X̃
Щоб створити 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)
Повний приклад
123456789101112131415161718import 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()
Спробуйте різні значення n, щоб побачити, як змінюється крива та як поводяться передбачення поза початковим діапазоном ознак — це веде до наступного розділу.
Дякуємо за ваш відгук!