前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习第3天:线性回归

机器学习第3天:线性回归

作者头像
Nowl
发布2024-01-18 18:51:04
1140
发布2024-01-18 18:51:04
举报
文章被收录于专栏:NowlNowl_AI

文章目录

线性回归简介

线性回归公式

(1)基本公式

(2)公式向量化

模型评估

机器学习代码

环境安装

生成数据

机器学习线性模型拟合


线性回归简介

线性回归问题是机器学习中最基本的问题,它常用来预测一些和特征具有线性关系的值,我们在之前的文章中也提到过,可见这篇文章:机器学习第1天:概念与体系漫游-CSDN博客


线性回归公式

(1)基本公式

eq?y%3Da_%7B1%7Dx_%7B1%7D+a_%7B2%7Dx_%7B2%7D+a_%7B3%7Dx_%7B3%7D+...
eq?y%3Da_%7B1%7Dx_%7B1%7D+a_%7B2%7Dx_%7B2%7D+a_%7B3%7Dx_%7B3%7D+...

在这个公式中,y是预测值,a是参数,x是特征值,模型的学习目标就是拟合合适的a值,来预测y

(2)公式向量化

y = a·x

这里的a和x都是一组包含多个值的向量,为什么要这样做呢?因为在代码中,我们常常把数据组合成向量进行训练


模型评估

我们当然要判断模型的性能,这时我们需要一个指标,在回归任务中,最常见的指标是MSE(均方误差)

eq?MSE%3D%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%28a_%7Bi%7Dx_%7Bi%7D-y_%7Bi%7D%29%5E%7B2%7D
eq?MSE%3D%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%28a_%7Bi%7Dx_%7Bi%7D-y_%7Bi%7D%29%5E%7B2%7D

其中m是数据的个数,容易得到,MSE越小时模型性能更好,这代表着预测值和真实值的误差越小


机器学习代码

环境安装

sklearn,一个经典的机器学习库,在python命令行或conda虚拟环境命令行中运行以下代码(不知道怎么安装请自行搜索,这里不具体讲述)

代码语言:javascript
复制
pip install scikit-learn

numpy,一个常用的数据处理库

代码语言:javascript
复制
pip install numpy

matplotlib,一个好用的可视化库

代码语言:javascript
复制
pip install matplotlib

生成数据

我们先随机产生一些数据,并把它们绘制出来

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np


np.random.seed(42) # 设置随机数种子,以便结果复现

x = np.random.rand(100, 1) # 产生100个0-1的数据x
y = 2*x+np.random.rand(100, 1) # 与x有线性关系并加上误差的y

plt.scatter(x, y)
plt.show()

有必要简单解释一下np.random.rand函数,rand的参数个数代表维度,参数数字代表每个维度的大小,在这个例子中rand(100, 1)创建了一个二维数组,里面有100个一维数据,数据类型大概为[[x1], [x2], [x3], [x4]......],这样是方便我们之后的训练(机器学习库对样本格式有要求,不符合会报错),对于这个维度,我的理解是这样的,最外围代表训练数据这个整体,里面的每一个框代表一轮训练数据,框里的数字个数则代表数据特征个数,还有不懂的可以私信问我

效果如下

2bc89343deea4dc48567cdf89d1d5e73.png
2bc89343deea4dc48567cdf89d1d5e73.png

机器学习线性模型拟合

接下来我们使用机器学习模型来拟合

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression

np.random.seed(42)

x = np.random.rand(100, 1)
y = 2*x+np.random.rand(100, 1)

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


plt.scatter(x, y)
plt.plot(x, pre_y, "r-")
plt.show()

运行结果如下

c86ceb07f8ab48049a79f8978b316190.png
c86ceb07f8ab48049a79f8978b316190.png

这个红色的线就是机器学习模型拟合的线,可以看到效果还是不错的

重点代码

代码语言:javascript
复制
model = LinearRegression()
model.fit(x, y)
pre_y = model.predict(x)

这里先定义模型为线性回归模型

然后fit()函数就是用x,y数据训练模型

predict()函数就是用训练好的模型进行预测

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线性回归简介
  • 线性回归公式
    • (1)基本公式
      • (2)公式向量化
      • 模型评估
      • 机器学习代码
        • 环境安装
          • 生成数据
            • 机器学习线性模型拟合
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档