В этой статье я буду использовать модель простой линейной регрессии для прогнозирования заработной платы нанятых специалистов на основе их многолетнего опыта.
Простая линейная регрессия — это тип алгоритмов регрессии, который моделирует взаимосвязь между зависимой переменной и одной независимой переменной. Отношение, показанное моделью простой линейной регрессии, является линейным или наклонной прямой линией, поэтому оно называется простой линейной регрессией.
Ключевым моментом простой линейной регрессии является то, что зависимая переменная должна быть непрерывным/действительным значением. Однако независимая переменная может быть измерена на непрерывных или категориальных значениях.
Набор данных можно найти здесь: 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