scikit-learn实现线性回归

要学习scikit-learn,我们必须要到scikit-clearn的官网中去查看公式和原理
scikit-learn 官网
scikit-learn 中文社区
进入官网一以后我们找到回归,然后再有监督学习中找到线性模型

scikit-learn实现简单的线性回归

公式:

在这里插入图片描述

L2范数是指向量中每个元素的平方和的平方根。在数学中,L2范数也称为欧几里得范数,通常用 ∣ ∣ x ∣ ∣ 2 ||x||_2 ∣∣x2 表示,其中x是一个向量。L2范数可用于衡量向量的大小或长度。

L2范数在机器学习和数据科学中经常用于正则化和优化问题中,例如岭回归和支持向量机等算法。在这些情况下,通过对损失函数添加L2正则化项,可以避免过拟合并提高模型的泛化能力。同时,L2范数也被用来作为相似性度量的度量标准,如余弦相似性。

L2范数公式:
∣ ∣ x ∣ ∣ 2 = ( ∑ ∣ x i ∣ 2 ) ||x||_2 = \sqrt{(∑|x_i|^2)} ∣∣x2=(xi2)

代码实现 :

import numpy as np 
import matplotlib.pyplot as plt 

模拟数据

X = np.linspace(0, 10, num=30).reshape(-1, 1)
# 斜率和截距,随机生成
w = np.random.randint(1, 5, size=1)
b = np.random.randint(1, 10, size=1)
# 根据一元一次方程计算目标值y并加上‘噪声’,数据有上下波动
y = X * w + b +np.random.randn(30,1)  # 注意要添加噪声避免出现过拟合
plt.scatter(X,y)  # 将图形展现出来

计算斜率和截距

from sklearn.linear_model import LinearRegression
# 创建对象 
model = LinearRegression(fit_intercept=True) # fit_intercept :是否计算裁距
model.fit(X,y)
print("算法求得的系数,斜率",model.coef_)
print('算法求得的截距',model.intercept_)

和算法求得的斜率和截距进行对比验证

print("这是真实的斜率和截距是",w,b)

获取拟合后的图形

plt.scatter(X,y,color='red')
plt.plot(X,model.coef_*X +model.intercept_,color='green')

拟合图形

这个时候我们要哦特别注意的是:
model = LinearRegression(fit_intercept=False) # fit_intercept
在使用 LinearRegression创建对象的时候,fit_intercept参数开启则计算裁距
如果不计算裁距情况,如何获得集合的图形

from sklearn.linear_model import LinearRegression
# 创建对象 
model = LinearRegression(fit_intercept=False) # fit_intercept :是否计算裁距
X_ = np.concatenate([X,np.full(shape=(30,1),fill_value=1)],axis=1)
model.fit(X_,y)
print("算法求得的系数,斜率",model.coef_)
print('算法求得的截距',model.intercept_)
plt.scatter(X,y,color='red')
plt.plot(X,model.coef_[0,0]* X +model.coef_[0,1],color='green')

在这里插入图片描述
获取系数

np.linalg.inv(X_.T.dot(X_)).dot(X_.T).dot(y)

获取系数

scikit-learn实现多元的线性回归

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D  # 绘制三维图像

模拟数据

# 转化为矩阵
x1 = np.random.randint(-150, 150, size=(300, 1))
x2 = np.random.randint(0, 300, size=(300, 1))
# 斜率和截距,都是随机生成的
w = np.random.randint(1, 5, size=2)
b = np.random.randint(1, 10, size=1)
# 根据二元一次方程计算目标值y 并且加上“噪声”,让数据上下波动
y = x1 * w[0] + x2 * w[1] + b + np.random.randn(300, 1)

创建对象

from sklearn.linear_model import LinearRegression
model = LinearRegression()
X = np.concatenate([x1,x2],axis = 1)
model.fit(X,y)
print(model.coef_,model.intercept_)

输出真实的斜率和系数用于与算法得出的数值进行对比

print(w,b)

生成拟合图形

# 特征1:x1
x_axis = np.linspace(-150,150,num=500)
# 特征2 :x2 
y_axis = np.linspace(0,300,num=500)
# 方程 斜率,截距
Z_axis = x_axis * model.coef_[0,0] +y_axis * model.coef_[0,1]+ model.intercept_
fig = plt.figure(figsize=(9,6))
ax = Axes3D(fig)
ax.scatter(x1,x2,y) #三维散点图
ax.plot(x_axis,y_axis,Z_axis)

多元线性回归
坚持学习,整理复盘
在这里插入图片描述

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

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

相关文章

Java+Swing: 主界面的窗体 整理8

主界面的写法跟之前登录界面的窗体写法大致相同,在主界面中主要是窗体的大小的设置 package com.student_view;import com.utils.DimensionUtil; import sun.applet.Main;import javax.swing.*; import java.awt.*; import java.net.URL;/*** Author:xie…

C# --线程的进化史

1.C# 线程的进化史可以追溯到 .NET Framework 的早期版本和 C# 语言的发展过程 Thread 类(.NET Framework 1.0):最初,C# 中使用 Thread 类来创建和管理线程。通过实例化 Thread 类并调用其 Start 方法,可以在应用程序…

全面覆盖,无所不包:C++ 编程必备指南 | 开源日报 No.99

fffaraz/awesome-cpp Stars: 51.0k License: MIT 这个项目是一个精心策划的 C(或者 C) 框架、库、资源和其他有趣东西的列表。它收集了各种标准库,如 STL 容器和算法;不同领域的框架,比如人工智能、异步事件循环等;以及一系列功…

【人工智能Ⅰ】实验7:K-means聚类实验

实验7 K-means聚类实验 一、实验目的 学习K-means算法基本原理,实现Iris数据聚类。 二、实验内容 应用K-means算法对iris数据集进行聚类。 三、实验结果及分析 0:输出数据集的基本信息 参考代码在main函数中首先打印了数据、特征名字、目标值、目标…

【上海大学数字逻辑实验报告】四、组合电路(三)

一、 实验目的 掌握多路选择器74LS151的原理。掌握译码器74LS138的原理。学会在Quartus II上使用多路选择74LS151设计电路。学会在Quartus II上使用译码器74LS138设计电路。 二、 实验原理 多路选择器又称数据选择器或多路开关,它是一种多路输入单路输出的组合逻…

HHDESK右键管理简介

在HHDESK管理文件,除了基本的打开、删除、复制、粘贴、重命名外,还有多种便捷编辑方式。 可以分别以下列模式打开文档: 文本模式即是以文本编辑器打开文档。 1 二进制模式 可进行二进制编辑。 2 JSON模式 可对JSON文件进行直观的解析…

机器学习中的特征工程

1 特征工程概述 特征工程是机器学习中的一个关键步骤,在机器学习领域中占有非常重要的地位,是机器学习中不可或缺的一部分,下图展示了一个常规的机器学习流程: 特征工程涉及从原始数据中提取、选择和转换特征,以改善模…

Lombok 处理异常@SneakyThrows 注解

文章目录 注解的介绍具体示例 注解的介绍 SneakyThrows 是 Lombok 框架提供的一个注解,它可以用于在方法中抛出受检异常时,不用显式地对异常进行处理,而是将异常包装成 RuntimeException 抛出 使用 SneakyThrows 注解后,编译器会…

“轻松管理文件,一键导出表格,让您的归档工作井井有条“

在忙碌的工作中,我们经常会被大量的文件和数据所困扰。如何有效地管理和整理这些资料,成为了一个让人头疼的问题。今天,我们向您介绍一款强大的文件管理工具——一键导出表格,帮助您轻松解决这个问题。 第一步,首先我们…

区块链实验室(30) - 区块链期刊:Distributed Ledger Technologies: Research and Practice

区块链涉及多学科及技术,众多期刊接收区块链文章。Distributed Ledger Technologies: Research and Practice是ACM出版集团的一本期刊。 Distributed Ledger Technologies: Research and Practice创刊历史很短,始于2022年,出版期数也不多。 载…

力扣面试150题 | 多数元素

力扣面试150题 | 多数元素 题目描述解题思路代码实现 题目描述 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示…

Leetcode 剑指 Offer II 056. 两数之和 IV - 输入二叉搜索树

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个二叉搜索树的 根节点 root 和一个整数 k , 请判断该二叉…

Java 使用oshi获取当前服务器状态cpu、内存、存储等核心信息

文章目录 简介相关资料maven依赖oshi-官方示例获取CUP信息代码获取内存信息获取磁盘信息 简介 OSHI 是基于 JNA 的(本地)操作系统和硬件信息库。它不需要安装任何其他额外的本地库,旨在提供一种跨平台的实现来检索系统信息,例如操…

[ROS2] --- action

1 action介绍 ROS通信机制也会被常常用到——那就是动作。从这个名字上就可以很好理解这个概念的含义,这种通信机制的目的就是便于对机器人某一完整行为的流程进行管理。 1.1 客户端/服务器模型 动作和服务类似,使用的也是客户端和服务器模型&#xf…

数据结构中处理散列冲突的四种方法

1 开放定址法 1.1 定义 开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址 1.2 要求 只要散列表足够大 空的散列地址总能找到,并将记录存入 1.3 线性探测法 使用该公式用于解决冲突的开放定址法称为线性探测法 对于线性探测法&#xff0c…

【异常】SpringBoot3.2.0 Description: Failed to configure a DataSource: ‘url‘ att

mybatisPlus 多数据源导致 异常 Description:Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver classAction:Consider the following:If you want an embed…

通过kubeadm方式安装k8s

虚拟机最少是 2 core,master内存最小3G,node内存最小2G. 要求的Docker版本是18.03,如果不是安装的docker ce,版本是过旧的,可以选择删除后重新安装; 也可以重新创建一个虚拟机执行以下命令。 简单方法&am…

线性代数基础【1】行列式

第一节 行列式的基本概念和性质 一、基本概念 ①逆序 1,2和2,1是一对逆序 ②逆序数 1,2,3,5,4的逆序数为1;1,3,2,5,4逆序数为4; ③行列式 ④余子数和代数余子数 行列式挖掉一个数(例如aij),将原行列式去掉i行j列的行列式M,则M为余子数,代数余子数记为Aij,如果(ij)为偶数…

云LIS实验室信息管理系统源码——实验室信息管理解决方案

云LIS(Cloud Laboratory Information System)是一种为区域医疗提供临床实验室信息服务的计算机应用程序,其主要功能是协助区域内所有临床实验室相互协调并完成日常检验工作,对区域内的检验数据进行集中管理和共享,通过…

uniapp引入插件市场echarts图表(l-echart)实现小程序端图表,并修改源码简化使用

使用的uniapp插件:l-echart https://ext.dcloud.net.cn/plugin?id4899 注意事项 1.因为小程序有主包分包大小限制,并且uni_modules中的包也会算在主包体积中,而我项目中的图表是在分包中使用的,所以我移动uni_modules中的l-echart图表组件…