В этой статье я буду использовать модель простой линейной регрессии для прогнозирования заработной платы нанятых специалистов на основе их многолетнего опыта.

Простая линейная регрессия — это тип алгоритмов регрессии, который моделирует взаимосвязь между зависимой переменной и одной независимой переменной. Отношение, показанное моделью простой линейной регрессии, является линейным или наклонной прямой линией, поэтому оно называется простой линейной регрессией.

Ключевым моментом простой линейной регрессии является то, что зависимая переменная должна быть непрерывным/действительным значением. Однако независимая переменная может быть измерена на непрерывных или категориальных значениях.

Набор данных можно найти здесь: https://www.kaggle.com/datasets/abhishek14398/salary-dataset-simple-linear-regression, а весь блокнот кода здесь: https://www.kaggle.com/ код/yashk12321423dsada/простая-линейная-регрессия

Начнем с импорта библиотек и набора данных:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

dataset = pd.read_csv('Salary_dataset.csv', usecols=["YearsExperience", "Salary"])
dataset.head()
#output:
  Years Experience Salary
0 1.2   39344.0
1 1.4   46206.0
2 1.6   37732.0
3 2.1   43526.0
4 2.3   39892.0

dataset.info()
#output:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 30 entries, 0 to 29
Data columns (total 2 columns):
 #   Column           Non-Null Count  Dtype  
---  ------           --------------  -----  
 0   YearsExperience  30 non-null     float64
 1   Salary           30 non-null     float64
dtypes: float64(2)
memory usage: 608.0 bytes

Набор данных содержит два столбца, а именно: «Годы опыта» и «Зарплата». В этом случае модель будет использовать YearsExperience для прогнозирования зарплаты. Таким образом, годы опыта являются независимой переменной, а заработная плата — зависимой переменной.

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values

Здесь X — независимая переменная, а y — зависимая переменная.

Теперь давайте разделим набор данных на обучающий набор и тестовый набор. Для этой цели я использовал train_test_split из sklearn.model_selection.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/3, random_state = 1)

После этого давайте создадим модель линейной регрессии и обучим ее на тренировочном наборе.

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)

#output:
LinearRegression()

Прогнозирование результатов набора тестов:

y_pred = regressor.predict(X_test)

y_pred
#output:
array([ 74676.37776747,  91161.02832519,  61854.98288925,  81087.07520659,
        67349.86640849,  88413.58656557, 113140.56240215,  44454.51841166,
       105814.05104316,  98487.53968418])

y_test
#output:
array([ 83089.,  98274.,  63219.,  93941.,  61112.,  91739., 116970.,
        43526., 109432., 101303.])

y_pred — это прогнозируемые результаты X_test, а y_test — фактические результаты.

Проверка точности модели:

Я буду использовать r2_score для проверки точности. Оценка R2 работает путем измерения степени дисперсии прогнозов, объясненных набором данных. Проще говоря, это разница между образцами в наборе данных и прогнозами, сделанными моделью.

from sklearn.metrics import r2_score
score = r2_score(y_test, y_pred)
print("The accuracy of our model is {}%".format(round(score, 2) *100))

#output:
The accuracy of our model is 92.0%

Точность модели составляет 92%.

Прогнозирование ввода отдельных данных:

regressor.predict([[1.2]])
#The actual value of the salary in the dataset for 1.2 yrs of experince was: 39344

#output:
array([36212.1931328])

Визуализация результатов набора тестов:

plt.scatter(X_test, y_test, color = 'red')
plt.plot(X_test, y_pred, color = 'blue')
plt.title('Salary vs Experience (Test set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()

#выход:

Получение окончательного уравнения линейной регрессии со значениями коэффициентов.

print(regressor.coef_)
print(regressor.intercept_)

#output:
[9158.13919873]
25222.426094323797

Следовательно, уравнение нашей простой модели линейной регрессии:

Заработная плата = 9158,13919873 × Годы стажа + 25222,426094323797

Таким образом, я использовал модель простой линейной регрессии для прогнозирования заработной платы на основе многолетнего опыта.

Проверьте мой профиль Kaggle: https://www.kaggle.com/yashk12321423dsada