# 机器学习2

机器学习2

提示:适合初学者使用


提示:记得点点关注,持续更新机器学习系列


一、什么是回归?

回归的目的是为了预测,比如预测明天的天气温度,预测股票的走势…
回归之所以能预测是因为他通过历史数据,摸透了“套路”,然后通过这个套路(或者说规律)来预测未
来的结果。

二、什么是线性回归?

线性回归的位置如上图所示,它属于机器学习 – 监督学习 – 回归 – 线性回归。
先从定义看起:线性回归分析(Linear Regression Analysis)是确定两种或两种以上变量间相互依赖的定
量关系的一种统计分析方法。本质上说,这种变量间依赖关系就是一种线性相关性,线性相关性是线性
回归模型的理论基础。
例如:
身高:由父亲的身高、母亲的身高、家庭收入、所在地区等因素决定
房价:由地段、面积、周围配套、时间等因素决定
房子」越大,「租金」就越高
「汉堡」买的越多,花的「钱」就越多
杯子里的「水」越多,「重量」就越大
线性回归要做的是就是找到一个数学公式能相对较完美地把所有自变量组合(加减乘除)起来,得到的
结果和目标接近

三、线性回归 VS 逻辑回归

线性回归和逻辑回归是 2 种经典的算法。经常被拿来做比较,下面整理了一些两者的区别
在这里插入图片描述

  • 线性回归只能用于回归问题,逻辑回归虽然名字叫回归,但是更多用于分类问题
  • 线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是离散的变量
  • 线性回归要求自变量和因变量呈线性关系,而逻辑回归不要求自变量和因变量呈线性关系
  • 线性回归可以直观的表达自变量和因变量之间的关系,逻辑回归则无法表达变量之间的关系
    定义:
    自变量(特征变量):主动操作的变量,可以看做「因变量」的原因
    因变量(目标变量):因为「自变量」的变化而变化,可以看做「自变量」的结果。也是我们想要预测
    的结果。
    在这里插入图片描述
    在下一篇中学习逻辑回归,暂时只需要在这里做了解即可。

四、数据类型

如需分析数据,了解我们要处理的数据类型非常重要。我们可以将数据类型分为三种主要类别:

  1. 数值(Numerical)
  2. 分类(Categorical)
  3. 序数(Ordinal)

数值数据是数字,可以分为两种数值类别:

  • 离散数据(Discrete Data):限制为整数的数字。例如:经过的汽车数量。
  • 连续数据(Continuous Data):具有无限值的数字。例如:一件商品的价格或一件商品的大小。
    分类数据是无法相互度量的值。例如:颜色值或任何 yes/no 值;猫和狗
    序数数据类似于分类数据,但可以相互度量。示例:A 优于 B 的学校成绩,依此类推。

五、线性回归

5.1 简单介绍

线性回归使用数据点之间的关系在所有数据点之间画一条直线。这条线可以用来预测未来的值。
在这里插入图片描述

5.2 工作原理

例如:x 轴表示车龄,y 轴表示速度。我们已经记录了 13 辆汽车通过收费站时的车龄和速度。让我们看
看我们收集的数据是否可以用于线性回归:

import matplotlib.pyplot as plt
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
plt.scatter(x, y) # 绘制散点图
plt.show()

如图:


在这里插入图片描述
线性回归线具有Y = a + bX形式的方程,其中X是解释变量(自变量,特征变量),Y是因变量。直线的
斜率为b,a是截距。
核心思想是获得一条最适合数据的线。最佳拟合线是总预测误差(所有数据点)尽可能小的那一条。误
差是点到回归线的距离。

六、案例

6.1 sklearn中的线性回归

sklearn中的线性回归模型如下:

from sklearn.linear_model import LinearRegression
sklearn.linear_model.LinearRegression()

它表示普通最小二乘线性回归。线性回归拟合具有系数 w = (w1, …, wp) 的线性模型,以最小化数据集中
观察到的目标与通过线性近似预测的目标之间的残差平方和。它的完整参数如下:

sklearn.linear_model.LinearRegression(fit_intercept=True,
normalize=False, copy_X=True)

参数解释:

  • fit_intercept, 是否计算此模型的截距,默认True。如果设置为 False,则不会在计算中使用截距
  • normalize:数据标准化,默认为False。官方给的建议是用StandardScaler。
  • copy_X:如果为 True,则 X 将被复制;否则,它可能会被覆盖。默认为True.
    该模型的方法:
  • fit(X, y[, sample_weight]):拟合线性模型(也可以叫做训练线性模型)
  • predict(X):使用线性模型进行预测。
  • score(X, y[, sample_weight]):返回预测的确定系数,即R^2。

6.2 案例实现:价格预测

假设有例子,x和y分别表示某面积和总价,需要根据面积来预测总价。
第一步导入模块:

import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

第二步:导入数据并绘制散点图

# 创建数据
x = np.array([6, 16, 26, 36, 46, 56]).reshape((-1, 1))
y = np.array([4, 23, 10, 12, 22, 35])
plt.scatter(x, y) # 绘制散点图
plt.show()

第三步:创建模型并拟合

model = LinearRegression().fit(x, y)

第四步:评估模型

r_sq = model.score(x, y)
print('确定系数:', r_sq)

第五步:获取线性回归模型中的参数

# 打印截距:
print('截距:', model.intercept_)
# 打印斜率
print('斜率:', model.coef_)
# 预测一个响应并打印它:
y_pred = model.predict(x)
print('预测结果:', y_pred, sep='\n')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值