Python数据科学:线性回归

news2025/1/20 1:42:58

4.5线性回归

线性回归是解决回归问题的常用模型。

实例:简单线性回归

def skLearn13():

    '''

    线性回归

    :return:

    '''

    #简单的一元一次方程

    #斜率为a,截距为b

    #y=ax+b

    #创建线性数据

    rng = np.random.RandomState(0)

    x = 10 * rng.rand(50)

    y = 2*x - 5 + rng.randn(50)

    #绘制数据集

    plt.scatter(x,y)



    #使用线性回归模型

    from sklearn.linear_model import LinearRegression

    model = LinearRegression(fit_intercept=True)

    #拟合数据

    model.fit(x[:,np.newaxis],y)

    #获取训练的斜率和截距

    print(model.coef_)

    print(model.intercept_)

    #构建测试数据

    xtest = np.linspace(0,10,1000)

    ymodel = model.predict(xtest[:,np.newaxis])

    #绘制预测线

    plt.plot(xtest,ymodel)

    #显示图片

    plt.show()

实例2:多项式基函数

将线性回归模型转换为非线性回归模型。

y=a0+a1x1+a2x2+a3x3………

将一个变量x,转换为多维的x1,x2,x3等;

def skLearn14():

    '''

    多项式基函数

    :return:

    '''

    from sklearn.preprocessing import  PolynomialFeatures

    x = np.array([2,3,4])

    print(x)

    poly = PolynomialFeatures(3,include_bias=False)

    #转换为多维数据

    #获取1,2,3次方数据矩阵

    x_trans = poly.fit_transform(x[:,np.newaxis])

    print(x_trans)



    #使用管道,组合多个操作

    from sklearn.pipeline import make_pipeline

    from sklearn.linear_model import  LinearRegression

    #使用5次方多项式

    model = make_pipeline(PolynomialFeatures(5),LinearRegression())



    #构建数据

    rng = np.random.RandomState(1)

    x_data = rng.rand(50) * 10

    y_data = np.sin(x_data) + 0.2 * rng.randn(50)

    #拟合数据

    model.fit(x_data[:,np.newaxis],y_data)

    #预测数据

    x_test = np.linspace(0,10,1000)

    y_model = model.predict(x_test[:,np.newaxis])



    #绘制数据图及预测图

    plt.scatter(x_data,y_data)

    plt.plot(x_test,y_model)

    #显示图片

    plt.show()

实例3:正则化

当基函数过于灵活,相邻基函数相互影响会导致模型过拟合。为了抑制模型波动,引入正则化机制。常用的正则化:岭回归;Lasso正则化

注意:Lasso倾向于构建稀疏矩阵,将模型系数置为0,所以效果差异大。

def skLearn15():

    '''

    正则化,避免多项式次数过多导致过拟合

    :return:

    '''

    #使用管道,组合多个操作

    from sklearn.pipeline import make_pipeline

    from sklearn.preprocessing import PolynomialFeatures

    from sklearn.linear_model import  LinearRegression

    #使用5次方多项式

    model = make_pipeline(PolynomialFeatures(10),LinearRegression())

    #构建数据

    rng = np.random.RandomState(1)

    x_data = rng.rand(50) * 30

    y_data = np.sin(x_data) + 0.2 * rng.randn(50)

    #拟合数据

    model.fit(x_data[:,np.newaxis],y_data)

    #预测数据

    x_test = np.linspace(0,30,1000)

    y_model = model.predict(x_test[:,np.newaxis])



    #使用岭回归

    from sklearn.linear_model import  Ridge

    model_rid = make_pipeline(PolynomialFeatures(10),Ridge(alpha=0.1))

    #拟合数据

    model_rid.fit(x_data[:,np.newaxis],y_data)

    #测试数据

    y_model_rid = model_rid.predict(x_test[:,np.newaxis])



    #使用Lasso正则化

    from sklearn.linear_model import  Lasso

    model_lasso = make_pipeline(PolynomialFeatures(10),Lasso(alpha=0.001))

    #拟合数据

    model_lasso.fit(x_data[:,np.newaxis],y_data)

    #测试数据

    y_model_lasso = model_lasso.predict(x_test[:,np.newaxis])



    #绘制数据图及预测图

    plt.scatter(x_data,y_data)

    plt.plot(x_test,y_model,label='base line',color='k')

    plt.plot(x_test,y_model_rid,label='rid line',color='g')

    plt.plot(x_test,y_model_lasso,label='lasso line',color='r')

    plt.legend()

    #显示图片

    plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1458106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

osqp-eigen学习

OSQP文档学习 参考博客: (1)二次规划(QP)与OSQP求解器 (2)如何使用OSQP-Eigen osqp-eigen 1 osqp-eigen接口 以下列问题的求解为例: s.t. 1 ≤ x 1 ≤ 1.5 1≤x_1≤1.5 1≤x1​≤…

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…

Linux-目录I/O-004

学习重点: 1.目录I/O的函数接口 2.目录的遍历,目录的递归遍历 1.【mkdir】 1.1函数原型 【int mkdir(const char *pathname, mode_t mode);】1.2函数功能 创建目录文件1.3函数参数 1.3.1【pathname】 文件路径1.3.2【mode】 文件的权限1.4返回值 …

区块链 之 默克尔树

默克尔树简介 欢迎阅读 BTC网络 之 区块裁剪 什么是默克尔树? 默克尔树(Merkle Tree)是一种树状数据结构,被广泛用于比特币等区块链系统中,用于高效地组织和验证数据的完整性。这个树状结构由唯一的根哈希值标识&am…

matplotlib图例使用案例1.1:在不同行或列的图例上添加title

我们将图例进行行显示或者列显示后,只能想继续赋予不同行或者列不同的title来进行分类。比较简单的方式,就是通过ax.annotate方法添加标签,这样方法复用率比较低,每次使用都要微调ax.annotate的显示位置。比较方便的方法是在案例1…

PyTorch使用Tricks:Dropout,R-Dropout和Multi-Sample Dropout等 !!

文章目录 1、为什么使用Dropout? 2、Dropout的拓展1:R-Dropout 3、Dropout的拓展2:Multi-Sample Dropout 4、Dropout的拓展3:DropConnect 5、Dropout的拓展4:Standout 6、Dropout的拓展5:Gaussian Dropout …

微信小程序开发:通过wx.login()获取用户唯一标识openid和unionid

下面代码展示了 openid 的获取过程。 想获取 unionid 需要满足条件:小程序已绑定到微信开放平台账号下,不然只会返回 openid。 【相关文档】 微信小程序开发:appid 和 secret 的获取方法 wx.login({success (res) {if (res.code) {// 发起网…

十二:枚举与注解

文章目录 01、枚举类的使用1.1、枚举类的理解1.2、自定义枚举类1.3、使用enum关键字定义枚举类1.4、Enum类中的常用方法1.5、使用enum关键字定义的枚举类实现接口 02、注解的使用2.1、注解的理解2.3、如何自定义注解2.4、jdk中4个基本的元注解的使用12.5、jdk中4个基本的元注解…

解锁创意灵感,探索FlutterExampleApps项目的奥秘

解锁创意灵感,探索FlutterExampleApps项目的奥秘 项目简介 FlutterExampleApps项目是一个包含各种示例应用链接的仓库,旨在演示Flutter应用开发中的各种功能、特性和集成。 项目包含了以下几个部分,每个部分都涵盖了不同的内容和主题&…

VO、DTO、DO、BO、PO

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 VO、DTO、DO、BO1.概念阿里Java开发手册分层领域模型: 2. VO 和 DTO 使用场景以下是一个使用VO和DTO的典型案例: 3.BO和DTO的区别 案例 VO、…

分享两个版本的数字孪生技术栈,都是AI回答的,较为精准

版本一: 数字孪生应用到的技术栈包括但不限于: 3D建模:数字孪生需要建立虚拟的三维模型,因此需要使用3D建模软件如AutoCAD、SketchUp、3ds Max等。 数据采集:数字孪生需要采集大量实时的物理数据,如传感…

为什么从没有负值的数据中绘制的小提琴图(Violin Plot)会出现负值部分?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 小提琴图(Violin Plot) 是一种用于展示和比较数据分布的可视化工具。它结合了箱形图(Box Plot)和密度图(Kernel Density Plot)的特…

hive load data未正确读取到日期

1.源数据CSV文件日期字段值: 2.hive DDL语句: CREATE EXTERNAL TABLE test.textfile_table1(id int COMMENT ????, name string COMMENT ??, gender string COMMENT ??, birthday date COMMENT ????,.......) ROW FORMAT SERDE org.apache.…

QT中事件过滤器

Qt添加事件过滤器,设置拖放listWidget、TreeWidget、TableWidget控件。 #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this)…

UML---活动图

活动图概述 活动图(Activity Diagram)是UML(Unified Modeling Language,统一建模语言)中的一种行为建模工具,主要用于描述系统或业务流程中的一系列活动或操作。活动图通常用于描述用例中的行为&#xff0c…

SimpleDateFormat为什么是线程不安全的?

目录 在日常开发中,Date工具类使用频率相对较高,大家通常都会这样写:这很简单啊,有什么争议吗?格式化后出现的时间错乱。看看Java 8是如何解决时区问题的:在处理带时区的国际化时间问题,推荐使用…

[创业之路-88/管理者与领导者-128]:企业运行分层模型、研发管理全视野

目录 一、企业分层模型 1.1 愿景层 1.2 战略目标层 1.3 战术方法层 1.4 市场业务层 1.5 项目执行层 1.6 资源层 二、研发全视野、全流程 2.1 市场 2.2 战略规划 2.3 产品研发 2.3.1 概述 2.3.2 项目管理 2.3.3 研发业务管理(研发经理*N) – 管技术流程…

2024护眼大路灯哪个牌子好?6个挑选妙招助你选择优质落地灯!

如果大家平常关注大路灯,应该都会注意到一个情况——它确实大受众多用户的喜爱以及专业人士的认可,但是关于它的伤眼案例却从未减少。之所以如此矛盾,主要是因为市面上有太多的不专业大路灯,它们的选材用料以及品质非常糟糕&#…

Spring Boot 笔记 028 文章列表

1.1 导入中文语言包 1.2 显示文章分类 //回显文章分类 import { articleCategoryListService } from /api/article.js const articleCategoryList async () > {let result await articleCategoryListService();categorys.value result.data; }articleCategoryList() 1.3…

蓝牙BLE安全-SSP简单安全配对

SSP的配对过程由于可以根据设备的IO能力选择不同的关联模型,因此十分灵活,其提供了四种方式:Numeric Comparison、Passkey Entry、Just Works以及Out of Band (OOB) 。这里关联方式的选择实质上对后面的流程是有一定影响的,如Just…