python机器学习12--Regression回归分析

news2024/12/30 2:13:48

1.数据准备

第一步:数据内容一定要有以下两种值域的因果数据。

· 特征(Feature):因,在统计学称为自变量(Independent Variable)。

· 标签答案(Label):果,在统计学称为因变量(Dependent Variable)。

比如,天气的温度和湿度值(因,Feature),是否下雨(果,Label),收集大量的数据后就被称为数据集Dataset,其数据量最少100个以上。若能有数百万或千万的数据量,所求出的结果会更好。利用算法进行分析,要准备两个这样的数据集,这两个数据集的值域格式都要一模一样,并且需要人工审查其内容的正确性。

· 训练用数据集(Training Dataset):通过特定的算法来找出Feature和Label之间的关系。

· 测试用数据集(Testing Dataset):测试用,用来验证刚刚用运算法和训练用数据集所找出的答案,通过测试用数据集来验证答案是否正确,并求出结果的正确率为多少。而训练和测试用的数据集内容几乎一样,差别就在条数多寡,通常的比例是80∶20。

        收集后的数据会推荐依照数据内容的分布形式,来挑选合适的算法。机器学习大数据分析中最重要的就是数据的搜集,如果收集的数据是错误的,不管用什么样的算法都找不到答案。

        举个例子来说问题:机器学习如何区分柠檬和橙子

(1)Feature特征值。

我们可以测量它的相关信息(专业用词是Feature特征值),如颜色、甜度、酸度、体积、重量、长度、宽度等。

· 但会发现体积和重量应该不是好的特征值,因为两者太过相近。

· 甜度和酸度虽然可以找出区别,但会破坏商品和成品的完整性。

· 可以用长度、宽度、外形是否为趋近于圆形。

· 颜色来区分:柠檬偏黄色或绿色,而橙子偏橘色。

所以特征值的挑选,就会影响到结果。

(2)Label标签,就是柠檬和橙子,通常都会用一个数字来代表,如1为橙子,2为柠檬。

以实际的图表方法来看,就是把柠檬和橙子的长度、宽度用图表的方法画出来,就会看到这些特征值的位置区分当然。画得好坏叫作机器学习(Machine Learning)的过程,改善准确率的方法叫数据挖掘(Data Mining)。完成之后,就能用这一条蓝线当成判断点,用来作为未来新水果的判断,也就是Regression回归分析。

运行结果如图19-2所示。

        回归分析(Regression Analysis)是一种统计学上解析数据的方法,目的在于了解两个或多个变量之间是否相关,并创建数学模型以便观察特定变量来预测研究者感兴趣的变量。更具体地说,回归分析会依照自变量,产生另外因变量。

回归分析根据自变量的数量,可分为以下两种:

(1)简单回归分析:用一个自变量来解释一个因变量回归分析。

(2)复回归分析:用两个或两个以上的自变量来解释一个因变量的回归分析。

回归模型亦可视其函数的模式区分为线性与非线性两种。

· Y=a+bX为线性模式。

· Y=a+Xb则为非线性模式。

import matplotlib.pyplot as plt 
plt.plot([1,2,3,4],[0,0.3,0.6,0.9],'gx')
plt.plot([1,2,3,4],[0,0.3,0.6,0.9],'r--')
plt.axis([0,5,0,1])
plt.ylabel('Y')
plt.xlabel('X')
plt.show()

         残差答案趋近于零,就代表这个回归分析得出的答案非常符合实际的数据。如果是0,很可能出现了问题,要进行仔细检查。

import pandas as pd
# 导入 pandas 模块

from sklearn import linear_model
# 导入 sklearn 的线性回归模型

import matplotlib.pyplot as plt
# 导入 matplotlib 的 pyplot 模块

# 准备训练和测试的数据
x_values = pd.DataFrame([0, 1, 2])
# 特征 Features
y_values = pd.DataFrame([0, 0.3, 0.6])
# 标签答案 Label

x_test = pd.DataFrame([-1, 3, 5])
# 测试用的特征 Features

# 创建线性回归模型实例
body_reg = linear_model.LinearRegression()

# 训练模型
body_reg.fit(x_values, y_values)

# 预测
y_test_predict = body_reg.predict(x_test)

# 打印预测结果
print("body_reg.predict(x_test)", y_test_predict)

# 显示图形
plt.scatter(x_values, y_values)  # 画出原本的数据点
plt.scatter(x_test, y_test_predict, color='red')  # 画出预测的数据点,使用红色
plt.plot(x_test, body_reg.predict(x_test), color="blue")  # 画出预测的线,使用蓝色

# 显示图形
plt.show()

糖尿病实战

        通过以下的程序将数据下载取得糖尿病数据,并通过图形化的方法,了解这个糖尿病数据的样貌,数据来自scikit-learn糖尿病数据集。

import matplotlib.pyplot as plt  # 绘图函数库
import numpy as np  # 矩阵函数库
from sklearn import datasets, linear_model  # 线性回归函数库

# 取得糖尿病的数据
diabetes = datasets.load_diabetes()

# 只取第三个特征值BMI
diabetes_X = diabetes.data[:, np.newaxis, 2]

# 切分特征值BMI,将数据分为训练集和测试集
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

# 切分目标值,将数据分为训练集和测试集
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]

# 绘图
plt.scatter(diabetes_X_test, diabetes_y_test, color='black')  # 绘制黑点
plt.show()  # 显示绘图
import matplotlib.pyplot as plt  # 绘图函数库
import numpy as np  # 矩阵函数库
from sklearn import datasets, linear_model  # 线性回归函数库
diabetes=datasets.load_diabetes()
diabetes_X=diabetes.data[:,np.newaxis,2]
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

# 切分目标值,将数据分为训练集和测试集
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]
regr=linear_model.LinearRegression()
regr.fit(diabetes_X_train,diabetes_y_train)
print(regr.coef_)
print(np.mean(regr.predict(diabetes_X_test)-diabetes_y_test**2))
plt.scatter(diabetes_X_test,diabetes_y_test,color='blue')
plt.plot(diabetes_X_test,regr.predict(diabetes_X_test),color='blue',linewidth=3)
plt.xticks([])
plt.yticks([])
plt.show()

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

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

相关文章

4条社交规则,让你受益

一个人只要在社会生活中,那他就免不了社会交往。 有时候,我们在社交中之所以不受欢迎,主要还是因为方法和策略的问题,也就是说缺乏对社交的深入思考,没有去做正确的事情。要知道,只要思路和方向对了&#…

【计算机毕设论文】基于SpringBoot的语音识别系统的设计与实现

💗博主介绍:✌全平台粉丝5W,高级大厂开发程序员😃,博客之星、掘金/知乎/华为云/阿里云等平台优质作者。 【源码获取】关注并且私信我 感兴趣的可以先收藏起来,同学门有不懂的毕设选题,项目以及论文编写等相…

传统制造业物流管理有什么缺陷?智能供应链技术推动制造业转型!

在科技迅猛发展的今天,智能制造已成为推动工业转型和升级的关键力量。作为智能制造的重要组成部分,物流管理的智能化不仅关系到企业运营的效率,更直接影响到整个制造业的竞争力。随着中国社会物流总额的持续攀升,物流行业展现出了…

C语言内存函数超详解

文章目录 前言1. memcpy1. 1 memcpy 的使用1. 2 memcpy 的模拟实现 2. memmove2. 1 memmove 使用 3. memset3. 1 memset 函数的使用3. 2 memset 的模拟实现 4. memcmp4. 1 memcmp 函数的使用4. 2 memcmp 的模拟实现 前言 C语言为我们提供了字符串的一些函数,比如复…

arduino程序-面包板(电路搭建及上传程序控制led))(基础知识)

arduino程序-面包板(电路搭建及上传程序控制led)(基础知识) 1-12 面包板(电路搭建及上传程序控制led)如何使用面包板使用实际元器件搭建电路上传程序到开发板作业 1-12 面包板(电路搭建及上传程…

esp-idf-v5.1.1 例程 ble_hid_device_demo 解析

目录 1. 获取ESP-IDF和示例代码 导航到示例代码 3. 示例代码结构 4. 关键文件解析 main.c 初始化和配置: 事件处理: esp_hidd_prf_api.c 和 esp_hidd_prf_api.h esp_hid_gap.c 和 esp_hid_gap.h 5. 编译和烧录 ESP-IDF(Espressif IoT Development Framework)是Es…

批量HEIC转JPG软件推荐:轻松处理大量苹果图片

HEIC格式是苹果设备专属的一种图片格式,它以其卓越的图像质量和高效的压缩能力受到用户的欢迎,但同时也带来了兼容性问题。在很多情况下,我们需要将HEIC格式转换为更为通用的JPG格式,以便在不同设备和平台上进行查看和编辑。对于有…

AttributeError: ‘str‘ object has no attribute ‘decode‘

AttributeError: ‘str‘ object has no attribute ‘decode‘ 目录 AttributeError: ‘str‘ object has no attribute ‘decode‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰&#x…

老照片AI上色JS开发包【Colorizer.js】

Colorizer.js适用于为人物、建筑、风景等各种老照片自动上色,直接在浏览器内运行, 提供前端JavaScirpt二次开发接口。官方下载地址:Colorizer.js SDK 1、目录组织 Colorizer.js开发包的目录组织说明如下: colorizerjs | - s…

2024电赛H题参考方案(+视频演示+核心控制代码)——自动行驶小车

目录 一、题目要求 二、参考资源获取 三、TI板子可能用到的资源 1、环境搭建及工程移植 2、相关模块的移植 四、控制参考方案 1、整体控制方案视频演示 2、视频演示部分核心代码 五、总结 一、题目要求 小编自认为:此次控制类类型题目的H题,相较于往年较…

【机器学习基础】机器学习的数学基础

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

源码编译安装,及nginx服务控制、监控块

1.源码编译安装: [root17dns ~]# wget https://nginx.org/download/nginx-1.27.0.tar.gz 2.解压: [root17dns ~]# tar -zxvf nginx-1.27.0.tar.gz 3.安装gcc等工具 [root17dns ~]# yum -y install gcc gcc-c [root17dns ~]# yum -y install make lrzsz …

Java的单元测试(@Test)的简单使用

只有Test注解的简单使用,没有其他注解 官网:JUnithttps://junit.org/Test是JUnit框架下的其中一个注解,框架下所有的注解如图所示,但我们现在只说Test的使用方法。 现在我们要在测试类中测试两个对象是否相等,如图所示…

高中数学,集合知识点及题型解答

高中数学,集合知识点及题型解答

《分析模式:可重用对象模型》学习笔记之四:企业财务分析中的观察和测量02

这个模型基本解决问题,可以方便定义层次,以及反映了三个不同的维数元素,也反映了企业部门单元和维数元素的关系,但是很快可以看到,在这里,维数被局限在三个:也就是说,如果维数需要改…

变量在内存中的表现形式

变量的存储在内存中,通常涉及以下几个部分: 栈区:变量名通常存储在栈区(空间小,运行速度快),栈区用来存储变量名、函数名、常量名等。当你声明一个变量(比如 $a)&#x…

OnlyOffice在线部署

部署服务环境:Centos7.6 curl -sL https://rpm.nodesource.com/setup_6.x | sudo bash 安装yum-utils工具 yum install yum-utils 添加nginx.repo源(Nginx官网有最新版,直接copy即可) vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx st…

29.jdk源码阅读之Exchanger

1. 写在前面 Exchanger 是 Java 并发包 (java.util.concurrent) 中的一个同步点工具类,用于在两个线程之间交换数据。它提供了一种简单而强大的方式来实现线程之间的数据交换。不知道大家在日常工作中或者面试中 有遇到它?下面几个问题可以一块来探讨下&…

028-GeoGebra中级篇-脚本的初步的探索

GeoGebra 的脚本功能允许用户通过不同的触发机制(如点击、更新、输入框变化、拖动结束)和全局 JavaScript 自定义图形和交互行为,实现动态数学模型和用户交互,同时 ggbOnInit() 函数可在应用初始化时设置默认状态,提供…