机器学习之回归模型-调用sklearn库求解线性回归

本文介绍了如何使用Python的sklearn库进行线性回归模型的训练。首先展示了sklearn库的结构,接着通过加载数据、绘制散点图,详细解释了如何构建损失函数。然后,利用sklearn的LinearRegression类拟合数据,并提取模型参数。最后,计算了损失函数并绘制了拟合曲线,证明模型的有效性。推荐学习资源包括Numpy和sklearn的使用教程。
摘要由CSDN通过智能技术生成

机器学习之回归模型-调用sklearn库求解线性回归

在使用sklearn库之前,我们先看一下这个库的结构,该库经常用于监督学习和无监督学习,sklearn共分为6大部分,分别用于完成分类任务,回归任务,聚类任务,降维任务,模型选择以及数据的预处理。由图中,可以看到库的算法主要有四类:分类,回归,聚类,降维。其中:
常用的回归:线性、决策树、SVM、KNN ;集成回归:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees
常用的分类:线性、决策树、SVM、KNN,朴素贝叶斯;集成分类:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees
常用聚类:k均值(K-means)、层次聚类(Hierarchical clustering)、DBSCAN
常用降维:LinearDiscriminantAnalysis、PCA

在这里插入图片描述

我是使用pychram工具实现的,在调用库之前需要下载安装该库到本地,下载安装方法如下所示:

1-选择文件,点击设置
在这里插入图片描述
2-选择project interpreter,点击右上角的“+”号,然后确定
在这里插入图片描述
3-在搜索栏输入sklearn,选中该库,点击install Package,等待就可以,等待时间有点久,不用着急。。。
在这里插入图片描述
4-安装成功会提示install successful,回到project interpreter也可以查看到sklearn库。
在这里插入图片描述
代码如下:
就是利用机器学习库sklearn中训练好的模型去计算参数w,b,然后带入求出损失函数,使得损失函数最小,拟合的更好。
demo同步上传到github,包含代码和数据集,链接如下:
https://github.com/wgdwg/-sklearn-

#使用机器学习库sklearn求解线性回归

import numpy as np #导入计算包
import matplotlib.pyplot as plt #导入绘图包
#1.加载数据源,并画出散点图
points = np.genfromtxt('data.csv', delimiter=',')

#提取points的两列数据,分别作为x,y
x = points[:,0] #第一列数据
y = points[:,1] #第2列数据

#用plt画出散点图
plt.scatter(x,y)
plt.show()

#2.定义损失函数,损失函数是系数的函数
def cost_function(w, b, points):
    total_const = 0 #初始化损失函数
    m = len(points) #数据个数
    #逐点计算平方误差,然后求平均数
    for i in range(m):
        x = points[i,0] #第i行,第1列
        y = points[i,1] #第i行,第2列
        total_const += (y - w * x - b) ** 2
    return total_const / m

from sklearn.linear_model import LinearRegression
lr = LinearRegression()

x_new = x.reshape(-1,1) #改造成n行1列的二维数组
y_new = y.reshape(-1,1)
lr.fit(x_new,y_new) #拟合

#从训练好的模型中提取系截距
w = lr.coef_[0][0]
b = lr.intercept_[0]

cost = cost_function(w,b,points)

print("参数w = ", w)
print("参数b = ", b)
print("损失函数 = ", cost)

plt.scatter(x,y)
pred_y = w * x + b
plt.plot(x, pred_y, c = 'r')
plt.show()

控制台运行结果如下:我们会发现这个损失函数与最小二乘法求出来的损失函数更接近一点。
在这里插入图片描述
散点图和拟合直线如下:
在这里插入图片描述
注:关于sklearn库的使用和numpy库的使用,推荐几篇好的博文!!!
戳这里,去看Numpy 和 sklearn库的使用 !
戳这里,去看sklearn的快速使用!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nuist__NJUPT

给个鼓励吧,谢谢你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值