Это 4-й день моего участия в Gengwen Challenge, смотрите подробности мероприятия:Обновить вызов
Как было сказано ранее, обучение с учителем в машинном обучении, обучение с учителем не только предоставляет размеченные данные, то есть часть известных вопросов и ответов (обучающий набор) сначала передается машине для обучения, а машина подгоняет данные в процессе процесс обучения., создать подходящую модель, а затем передать новую задачу машине, в это время машина вычисляет и решает новую задачу в соответствии с правилами ранее подобранной модели.
Например, например, мы сначала сообщаем машине значения роста, соответствующие разным возрастам и полу.После того, как машина обучает большое количество данных, мы предоставляем машине соответствующий возраст и пол.Согласно предыдущей модели, он вычисляет соответствующую возрасту и полу высоту задачи.
В контролируемом обучении есть две основные задачи, а именно регрессия и классификация.
- проблема регрессии
- проблема классификации
Регрессия — это не только задача прогнозирования непрерывных конкретных значений, но и проблема классификации заключается в классификации транзакций для дискретного прогнозирования.
Давайте сначала рассмотрим одну из проблем регрессии сегодня:Простая линейная регрессия
Простая линейная регрессия содержит независимую переменную (x) и зависимую переменную (y), а взаимосвязь между двумя вышеуказанными переменными моделируется прямой линией, то есть линией регрессии.
Формула может быть выражена как:
где a — продольная точка пересечения оцененного линейного уравнения, а b — наклон оцененного линейного уравнения.
Но есть несоответствие между нашим предсказанным значением и фактическим значением, еслипрогнозируется, что, фактическое значение равно, мы называемиРазница в остатке.
Наша цель сделать прогнозируемое значение как можно ближе к фактическому значению, то есть чем меньше невязка, тем лучше. То есть, когда мы находим набор (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()