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

bookПобудова Множинної Лінійної Регресії

Клас OLS дозволяє будувати множинну лінійну регресію так само, як і просту лінійну регресію. Але, на жаль, функція np.polyfit() не підтримує випадок з кількома ознаками.

Ми будемо використовувати клас OLS.

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

Маємо той самий набір даних, що й у прикладі з простою лінійною регресією, але тепер він містить зріст матері як другу ознаку. Завантажимо його та розглянемо змінну X:

123456789
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file # Assign the variables X = df[['Father', 'Mother']] y = df['Height'] print(X.head())
copy

Пам'ятайте, для ініціалізації об'єкта OLS(y, X_tilde) слід використовувати OLS. Як видно, змінна X вже містить дві ознаки в окремих стовпцях. Тому, щоб отримати X_tilde, потрібно лише додати стовпець з одиницями на початку. Функція sm.add_constant(X) виконує саме цю операцію!

1234567891011
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file # Assign the variables X = df[['Father', 'Mother']] y = df['Height'] # Create X_tilde X_tilde = sm.add_constant(X) print(X_tilde.head())
copy

Знаходження параметрів

Чудово! Тепер ми можемо побудувати модель, знайти параметри та зробити передбачення так само, як і в попередньому розділі.

12345678910111213141516171819202122
import pandas as pd import statsmodels.api as sm import numpy as np file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde # Initialize an OLS object regression_model = sm.OLS(y, X_tilde) # Train the object regression_model = regression_model.fit() # Get the paramters beta_0, beta_1, beta_2 = regression_model.params print('beta_0 is: ', beta_0) print('beta_1 is: ', beta_1) print('beta_2 is: ', beta_2) # Predict new values X_new = np.array([[65, 62],[70, 65],[75, 70]]) # Feature values of new instances X_new_tilde = sm.add_constant(X_new) # Preprocess X_new y_pred = regression_model.predict(X_new_tilde) # Predict the target print('Predictions:', y_pred)
copy
Note
Примітка

Оскільки наш навчальний набір тепер має 2 ознаки, необхідно вказати 2 ознаки для кожного нового екземпляра, для якого потрібно зробити передбачення. Саме тому у наведеному вище прикладі використовується np.array([[65, 62],[70, 65],[75, 70]]). Це дозволяє передбачити y для 3 нових екземплярів: [Father:65,Mother:62], [Father:70, Mother:65], [Father:75, Mother:70].

question mark

Що робить функція sm.add_constant(X)?

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain what the X_tilde matrix represents in multiple linear regression?

How does sm.add_constant(X) work and why is it necessary?

What do the beta_0, beta_1, and beta_2 parameters mean in this context?

Awesome!

Completion rate improved to 5.26

bookПобудова Множинної Лінійної Регресії

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

Клас OLS дозволяє будувати множинну лінійну регресію так само, як і просту лінійну регресію. Але, на жаль, функція np.polyfit() не підтримує випадок з кількома ознаками.

Ми будемо використовувати клас OLS.

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

Маємо той самий набір даних, що й у прикладі з простою лінійною регресією, але тепер він містить зріст матері як другу ознаку. Завантажимо його та розглянемо змінну X:

123456789
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file # Assign the variables X = df[['Father', 'Mother']] y = df['Height'] print(X.head())
copy

Пам'ятайте, для ініціалізації об'єкта OLS(y, X_tilde) слід використовувати OLS. Як видно, змінна X вже містить дві ознаки в окремих стовпцях. Тому, щоб отримати X_tilde, потрібно лише додати стовпець з одиницями на початку. Функція sm.add_constant(X) виконує саме цю операцію!

1234567891011
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file # Assign the variables X = df[['Father', 'Mother']] y = df['Height'] # Create X_tilde X_tilde = sm.add_constant(X) print(X_tilde.head())
copy

Знаходження параметрів

Чудово! Тепер ми можемо побудувати модель, знайти параметри та зробити передбачення так само, як і в попередньому розділі.

12345678910111213141516171819202122
import pandas as pd import statsmodels.api as sm import numpy as np file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde # Initialize an OLS object regression_model = sm.OLS(y, X_tilde) # Train the object regression_model = regression_model.fit() # Get the paramters beta_0, beta_1, beta_2 = regression_model.params print('beta_0 is: ', beta_0) print('beta_1 is: ', beta_1) print('beta_2 is: ', beta_2) # Predict new values X_new = np.array([[65, 62],[70, 65],[75, 70]]) # Feature values of new instances X_new_tilde = sm.add_constant(X_new) # Preprocess X_new y_pred = regression_model.predict(X_new_tilde) # Predict the target print('Predictions:', y_pred)
copy
Note
Примітка

Оскільки наш навчальний набір тепер має 2 ознаки, необхідно вказати 2 ознаки для кожного нового екземпляра, для якого потрібно зробити передбачення. Саме тому у наведеному вище прикладі використовується np.array([[65, 62],[70, 65],[75, 70]]). Це дозволяє передбачити y для 3 нових екземплярів: [Father:65,Mother:62], [Father:70, Mother:65], [Father:75, Mother:70].

question mark

Що робить функція sm.add_constant(X)?

Select the correct answer

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

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

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

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