Побудова Лінійної Регресії
Ви вже знаєте, що таке проста лінійна регресія та як знайти пряму, яка найкраще підходить до даних. Тепер ви пройдете всі етапи побудови лінійної регресії для реального набору даних.
Завантаження даних
Маємо файл simple_height_data.csv з даними з наших прикладів. Завантажимо файл і переглянемо його:
123456import 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 та побудуємо діаграму розсіювання.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Пошук параметрів
Для реалізації лінійної регресії у Scikit-learn використовується клас LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Параметри
Клас LinearRegression має кілька параметрів, які визначають, як буде навчатися модель.
fit_intercept(за замовчуванням=True): Визначає, чи обчислювати вільний член (зміщення) для цієї моделі. Якщо встановленоFalse, вільний член не використовується у розрахунках (тобто дані мають бути центровані).copy_X(за замовчуванням=True): ЯкщоTrue, X буде скопійовано; інакше може бути перезаписано.n_jobs(за замовчуванням=None): Кількість потоків для обчислень. Це дає приріст швидкості лише для n_targets > 1 та достатньо великих задач.Noneозначає 1, якщо не використовується контекстjoblib.parallel_backend.-1означає використання всіх процесорів.positive(за замовчуванням=False): Якщо встановленоTrue, коефіцієнти будуть лише додатними. Ця опція підтримується лише для щільних масивів.
Основні методи
fit(X, y): Навчання лінійної моделі.predict(X): Прогнозування за допомогою лінійної моделі.score(X, y): Повертає коефіцієнт детермінації для прогнозу.
Атрибути
coef_: Оцінені коефіцієнти для задачі лінійної регресії.intercept_: Незалежний член у лінійній моделі.
У Scikit-learn використовується клас LinearRegression з модуля linear_model. На відміну від NumPy, тут не потрібно визначати ступінь; цей клас спеціально призначений для лінійних моделей. Для обчислення параметрів використовується метод .fit().
Ось приклад:
1234567891011121314from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Якщо ви не знайомі з синтаксисом model.intercept_ та model.coef_, це конвенція Scikit-learn. Атрибути, які обчислюються (навчаються) під час процесу тренування, завжди закінчуються на підкреслення _ (наприклад, intercept_, coef_).
Атрибут intercept_ містить одне значення, а coef_ — масив коефіцієнтів для кожної ознаки (у простій лінійній регресії містить лише один елемент).
Створення прогнозів
Тепер можна побудувати лінію та передбачити нові змінні за допомогою навченої моделі.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Тепер, коли модель навчена, можна використовувати метод .predict() для прогнозування нових значень.
123X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(X_new) # Predict the target print('Predicted y: ', y_pred)
Отримати параметри лінійної регресії досить просто. Однак деякі бібліотеки також можуть надати додаткову інформацію.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
Completion показник покращився до 3.33
Побудова Лінійної Регресії
Свайпніть щоб показати меню
Ви вже знаєте, що таке проста лінійна регресія та як знайти пряму, яка найкраще підходить до даних. Тепер ви пройдете всі етапи побудови лінійної регресії для реального набору даних.
Завантаження даних
Маємо файл simple_height_data.csv з даними з наших прикладів. Завантажимо файл і переглянемо його:
123456import 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 та побудуємо діаграму розсіювання.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Пошук параметрів
Для реалізації лінійної регресії у Scikit-learn використовується клас LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Параметри
Клас LinearRegression має кілька параметрів, які визначають, як буде навчатися модель.
fit_intercept(за замовчуванням=True): Визначає, чи обчислювати вільний член (зміщення) для цієї моделі. Якщо встановленоFalse, вільний член не використовується у розрахунках (тобто дані мають бути центровані).copy_X(за замовчуванням=True): ЯкщоTrue, X буде скопійовано; інакше може бути перезаписано.n_jobs(за замовчуванням=None): Кількість потоків для обчислень. Це дає приріст швидкості лише для n_targets > 1 та достатньо великих задач.Noneозначає 1, якщо не використовується контекстjoblib.parallel_backend.-1означає використання всіх процесорів.positive(за замовчуванням=False): Якщо встановленоTrue, коефіцієнти будуть лише додатними. Ця опція підтримується лише для щільних масивів.
Основні методи
fit(X, y): Навчання лінійної моделі.predict(X): Прогнозування за допомогою лінійної моделі.score(X, y): Повертає коефіцієнт детермінації для прогнозу.
Атрибути
coef_: Оцінені коефіцієнти для задачі лінійної регресії.intercept_: Незалежний член у лінійній моделі.
У Scikit-learn використовується клас LinearRegression з модуля linear_model. На відміну від NumPy, тут не потрібно визначати ступінь; цей клас спеціально призначений для лінійних моделей. Для обчислення параметрів використовується метод .fit().
Ось приклад:
1234567891011121314from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Якщо ви не знайомі з синтаксисом model.intercept_ та model.coef_, це конвенція Scikit-learn. Атрибути, які обчислюються (навчаються) під час процесу тренування, завжди закінчуються на підкреслення _ (наприклад, intercept_, coef_).
Атрибут intercept_ містить одне значення, а coef_ — масив коефіцієнтів для кожної ознаки (у простій лінійній регресії містить лише один елемент).
Створення прогнозів
Тепер можна побудувати лінію та передбачити нові змінні за допомогою навченої моделі.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Тепер, коли модель навчена, можна використовувати метод .predict() для прогнозування нових значень.
123X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(X_new) # Predict the target print('Predicted y: ', y_pred)
Отримати параметри лінійної регресії досить просто. Однак деякі бібліотеки також можуть надати додаткову інформацію.
Дякуємо за ваш відгук!