Введение в машинное обучение 04. Простая линейная регрессия

машинное обучение
Введение в машинное обучение 04. Простая линейная регрессия

Это 4-й день моего участия в Gengwen Challenge, смотрите подробности мероприятия:Обновить вызов

Как было сказано ранее, обучение с учителем в машинном обучении, обучение с учителем не только предоставляет размеченные данные, то есть часть известных вопросов и ответов (обучающий набор) сначала передается машине для обучения, а машина подгоняет данные в процессе процесс обучения., создать подходящую модель, а затем передать новую задачу машине, в это время машина вычисляет и решает новую задачу в соответствии с правилами ранее подобранной модели.

Например, например, мы сначала сообщаем машине значения роста, соответствующие разным возрастам и полу.После того, как машина обучает большое количество данных, мы предоставляем машине соответствующий возраст и пол.Согласно предыдущей модели, он вычисляет соответствующую возрасту и полу высоту задачи.

В контролируемом обучении есть две основные задачи, а именно регрессия и классификация.

  • проблема регрессии
  • проблема классификации

Регрессия — это не только задача прогнозирования непрерывных конкретных значений, но и проблема классификации заключается в классификации транзакций для дискретного прогнозирования.

Давайте сначала рассмотрим одну из проблем регрессии сегодня:Простая линейная регрессия

Простая линейная регрессия содержит независимую переменную (x) и зависимую переменную (y), а взаимосвязь между двумя вышеуказанными переменными моделируется прямой линией, то есть линией регрессии.

Формула может быть выражена как:

y=a+b*xy=a+b*x

где a — продольная точка пересечения оцененного линейного уравнения, а b — наклон оцененного линейного уравнения.

Но есть несоответствие между нашим предсказанным значением и фактическим значением, еслиx1x_1прогнозируется, чтоy1y_1, фактическое значение равноyy, мы называемyyиy1y_1Разница в остатке.

error=yy1error=y-y_1

Наша цель сделать прогнозируемое значение как можно ближе к фактическому значению, то есть чем меньше невязка, тем лучше. То есть, когда мы находим набор (a, b), который минимизирует сумму квадратов остатков, это означает, что в какой-то степени мы нашли простую модель линейной регрессии, которая предсказывает лучшее.

мы можем использоватьsklearn.linear_modelизLinearRegressionрешить простую задачу линейной регрессии

Если взять в качестве примера взаимосвязь между трудоспособным возрастом и заработной платой, то мы имеем следующие данные:

Year Salary
1.1 39343
1.3 46205
1.5 37731
2 43525
2.2 39891
2.9 56642
3 60150
3.2 54445
3.2 64445
3.7 57189
3.9 63218

Во-первых, данные делятся наX_train,y_trainтренировочный наборX_test,y_testтестовый набор.

# 对训练集进行简单线性回归集合
from sklearn.linear_model import LinearRegression
# 创建回归器
regressor = LinearRegression()
# 拟合回归器
regressor.fit(X_train,y_train)

Это можно предсказать на тестовом наборе, подобрав регрессор

# 通过回归器预测结果
y_pred = regressor.predict(X_test)

y_predОба результата предсказаны простой линейной регрессией.

Вы можете более интуитивно просматривать прогнозируемые результаты с помощью значков.

# 绘制测试集
plt.scatter(X_test,Y_test,color='red')
plt.plot(X_test,regressor.predict(X_test),color='blue')
plt.title('Salary Vs Experience - Training Set')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()

Мы завершили соответствующую обработку простой линейной регрессии, давайте посмотрим на другие проблемы регрессии, полный код выглядит следующим образом:

# 导入基础库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

### 导入数据
dataset = pd.read_csv('data.csv')

# 设置自变量列,因变量列
X = dataset.iloc[:,:-1]. values
Y = dataset.iloc[:,1].values

### 生成训练集与测试集
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=0)

# 对训练集进行简单线性回归集合
from sklearn.linear_model import LinearRegression
# 创建回归器
regressor = LinearRegression()
# 拟合回归器
regressor.fit(X_train,Y_train)

# 预测测试集结果
y_pred = regressor.predict(X_test)

# 可视化对比
# 绘制训练集
plt.scatter(X_train,Y_train,color='red')
plt.plot(X_train,regressor.predict(X_train),color='blue')
plt.title('Salary Vs Experience - Training Set')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()

# 绘制测试集
plt.scatter(X_test,Y_test,color='red')
plt.plot(X_test,regressor.predict(X_test),color='blue')
plt.title('Salary Vs Experience - Training Set')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()