数据分析之线性回归,原理+实战代码,

本文讲解了线性回归的基本原理,通过实例演示如何使用sklearn库进行一元线性回归预测。重点介绍了如何通过训练数据拟合直线,划分训练集和测试集,以及损失函数的应用。涉及数据预处理、模型训练和预测过程。适合初学者理解线性回归的实战应用。
摘要由CSDN通过智能技术生成

数据分析之线性回归

线性回归用来预测数据的原理以及代码

我之前有些过一篇关于数据库预测的实战练习的,今天来讲一讲原理


在这里插入图片描述

  • 首先这一张代码的截图,我们看到
from sklearn.linear_model import LinearRegression #线性回归

这一行的代码:

​ 我们从sklearn这一个依赖库当中导入LinearRegression,这是最简单的一元线性回归。

​ 那么线性回归的原理是什么呢,为什么能用线性回归来预测数据呢?我们还是以疫情数据为例:

在这里插入图片描述

我们将新增个案单独拉出来

也就是这是以日期为横坐标,新增个案为纵坐标的值的一个笛卡尔坐标系。

  • 我们模拟出一条直线,让已知的数据点尽量落在直线上或直线周围。

小白入门线性回归:原理+代码

就当是类似于这一个图吧。

​ 那么我们要预测的下一天的数据也应该在这条直线上对不对?

​ 那么比如我们随手画的是这一条线,预测出了下一天或者是下个月一直的数据,但是一万个人有一万种画出这条线的方法,也就是说,每个人画的线都是不一样的。

​ 我们现在知道,线性回归就是要找一条直线,并且让这条直线尽可能地拟合图中的数据点

  • 所以,我们如何才能够绘出一条大家都认可的线呢?

    我们需要的是不断的训练数据,也就是所谓的训练集与测试集的划分(在我的程序里面还没有用到验证集)

    这其实就是所谓的损失函数,而利用线性回归来计算与利用损失函数是最简单的一种。


在训练数据之前,我们必不可少的需要获取数据吧:

data=pd.read_excel('香港疫情数据.xlsx')
data.index=data.iloc[:,0]
data=data.drop(['日期'],axis=1)

​ 这里的程序

第二行:data.index=data.iloc[:,0]

先将日期这一行数据储存在data.index中

第三行:data=data.drop([‘日期’],axis=1)

选择先不将日期那一列导入,先导入三个病例数据

  • 接着,我们划分训练集与测试集
model=LinearRegression()
##划分测试集和训练集7:3
m=data.shape[0]
train=data.iloc[:int(0.3*m),:]
test=data.iloc[int(0.7*m):,:]

接下来这些代码是进一步的训练数据,以及是整个算法思路的核心,利用循环来训练以及输出数据

for i in range(data.shape[1]):
    train_y,train_x=train[train.columns[i]],train.drop([train.columns[i]],axis=1)
    test_x,test_y=test.drop([test.columns[i]],axis=1),test[test.columns[i]]
    model.fit(train_x,train_y)#训练数据
    predict=model.predict(test_x)#返回样本结果
  • 输出数据:
    plt.plot(test_x.index,test_y,label='True',c='red')
    plt.plot(test.index,predict,label='prdict',c='black')
    plt.title('predict {}'.format(str(train.columns[i])))
    plt.show()

小弟刚刚入门不久,还望各路大神多多指点!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值