Machine Learning 初探

前置知识

pandas

  • 读取文件:read_csv
  • 查看信息
    • describe:查看整体信息,包括每列的平均值、最大最小值、标准差等
    • head:输出头部几行数据
    • columns:输出所有列名
    • loc:查询数据,或是根据索引取对应的数据
    • dropna:去掉所有为空NA的数据

Machine Learning

大体上来说,机器学习就是给定一部分数据,让机器去“学习”这部分有什么特征,每个特征上有什么规律,以此形成一个模型model,然后用这个model去预测新的数据的结果

scikit-learn

简单高效的python包,可用于可预测的数据分析,官网在这里,可以自行查阅相关模型的原理或是API
下面以决策树模型的使用过程来大致展示一下机器学习的整体过程

决策树:DecisionTree

非常简单易懂的监督模型,可理解为给定一系列相关特征(比如n个),每个特征的结果只有两个(不确定是不是只能有两个),整个决策树就像是二叉树,预测时根据每个特征的是或否的回答选择路径,一次决策就像是二叉树从根节点到某个叶子节点的一条路径
可用于classification(DecisionTreeClassifier)或是regression(DecisionTreeRegressor)

训练模型的整体流程:以回归模型为例

  1. 准备数据:用pandas读取数据,并挑选出所需要的特征列和想预测的目标列
    • 数据分离train_test_split:注意不要把所有数据都拿来用于训练,要从中选出一部分数据用于验证训练出来的模型是否可信
    import pandas as pd
    from sklearn.model_selection import train_test_split
    src_data = pd.read_csv('...')
    features = ['column_1', ...]
    X = src_data[features]		# 特征列
    y = src_data.target_column	# 目标列
    train_X, val_X, train_y, val_y = train_test_split(X, y, random_state = 0)	# 分离成用于训练的 train_... 和用于预测的 val_...
    
  2. 初始化模型:直接导入后创建即可
    • 可指定随机数种子random_state,相同的值能保证每次运行脚本时得到相同的结果
    from sklearn.tree import DecisionTreeRegressor
    ...
    dt_model = DecisionTreeRegressor(random_state=N)
    
  3. 数据拟合fit:用训练数据去训练模型
    dt_model.fit(train_X, train_y)
    
  4. 预测结果predict:用检验数据进行预测
    predicted_data = dt_model.predict(val_X)		# val_X: 用于预测的数据的特征列
    
  5. 评估结果:检验预测的结果与实际结果之间的差距,可以有不同的方法,在此仅介绍一种MAE

评估结果:mean_absolute_error(MAE)

计算方式为:依次计算预测结果与实际结果的差值的绝对值,最后求和后除以结果数量
即与实际结果间的平均差值

On average, our predictions are off by about X.

代码也很简单,导入后调用即可

from sklearn.metrics import mean_absolute_error
...
mean_absolute_error(y, predicted_data)	# y: 实际结果

两个问题

  • 过拟合 overfitting:与训练数据贴合得过于完美,可能会学到一些实际数据中并不存在的特性,导致预测结果与实际数据相差较大(就像是下图竖线的右边部分,训练数据上的评估结果很好但实际表现不好)
  • 欠拟合 underfitting:与训练数据贴合得不够,可能是特征学习得不足,导致不能很好地判定实际数据的特征,所以预测结果与实际数据相差也很大(就像下图竖线的左边部分,在两个数据集上的表现都不好)
  • 寻找最佳点:可通过梯度测试等方式,不断调试参数,找到能让在实际数据上的表现最好的参数(就像下图的黄色感叹号处)

MAE中拟合预见的两个情况

决策树的改进

  1. 控制树高:树高相关的参数可以说直接影响决策树的效率和预测结果 —— 树越高,对应的就是特征越多,则源数据被分化得越细致,对于每个部分的训练数据都能进行贴合,但相应的每个叶子部分的数据就越少,也就是说对于该条路径的训练可能不够,导致学习到的特征不够贴合实际数据(过拟合);反之,则是源数据被分割的不够,每个叶子节点都存在大量数据,对于特征的学习可能不够细致(欠拟合)
    • 创建模型的时候可以通过max_leaf_node指定叶子个数限制,或是max_depth指定最大深度。那么经过测试不同叶子限制或是树高的情况下MAE的值,选取使其到达最低点的参数进行创建模型,就能达到最佳效果
  2. 使用更复杂的模型(比如随机森林RandomForestRegressor
    from sklearn.ensemble import RandomForestRegressor
    

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

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

相关文章

2025年2月个人工作生活总结

本文为 2025年2月工作生活总结。 工作记录 AI浪潮 AI非常火,春节至今,到处充斥着大量和AI、DeepSeek有关的新闻。领导也一再强调要用AI,甚至纳入到新一年的考核里。再往上,大领导开会的新闻稿里也作出要求,不能停下脚…

SpringBoot @ConfigurationProperties 注解使用

ConfigurationProperties 用于将配置文件(如 application.properties 或 application.yml)中的属性批量绑定到一个 Java Bean 中。 1. 定义配置文件 在 application.properties 或 application.yml 中定义一组具有相同前缀的属性。 application.yml &a…

刚安装docker并启动docker服务: systemctl restart docker报错解决

root:/home/lzw# sudo systemctl restart docker Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xeu docker.service" for details. 1、问题描述 启动doc…

JavaScript的this指向,一次彻底讲清楚

JavaScript 中的 this 指向是一个非常重要且容易混淆的概念。它的值取决于函数被调用的上下文,而不是函数定义的位置。以下是 this 指向的详细解析: 1. 默认绑定(Default Binding) 在非严格模式下,如果函数是直接调用(而不是作为对象的方法或构造函数等),this 默认指向…

MFC: 控件根据文本内容大小自动调整

背景: 针对不同语言下,控件显示不全的现象; 例如: 现象1:中文下显示全部信息,英语下只能显示部分文字 现象2:中文下显示不全## 实现思路: 控件绑定按钮计算控件文本长度根据文本长…

SpringBoot 整合mongoDB并自定义连接池,实现多数据源配置

要想在同一个springboot项目中使用多个数据源,最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…

软件测试中的BUG

文章目录 软件测试的生命周期BugBug 的概念描述 Bug 的要素案例Bug 级别Bug 的生命周期与开发产生争执怎么办?【高频面试题】先检查自身,Bug 是否描述的不清楚站在用户角度考虑并抛出问题Bug 的定级要有理有据提⾼自身技术和业务水平,做到不仅…

泵吸式激光可燃气体监测仪:快速精准守护燃气管网安全

在城市化进程加速的今天,燃气泄漏、地下管网老化等问题时刻威胁着城市安全。如何实现精准、高效的可燃气体监测,守护“城市生命线”,成为新型基础设施建设的核心课题。泵吸式激光可燃气体监测仪,以创新科技赋能安全监测&#xff0…

第J3-1周:DenseNet算法 实现乳腺癌识别

文章目录 一、前言二、前期准备1.设置GPU2.划分数据集 三、搭建网络模型1.DenseLayer模块2.DenseBlock模块3.Transition模块4.构建DenseNet5.构建densenet121 四、训练模型1.编写训练函数2.编写测试函数3.正式训练 五、结果可视化1.Loss与Accuracy图2.模型评估 总结&#xff1a…

【JAVA面试题】== 和 equals() 的区别与使用场景

在 Java 面试中, 和 equals() 的区别是一个高频考点。理解它们的底层原理和使用场景,对于掌握 Java 基础知识至关重要。本文将从 基本概念、底层实现 和 实际应用 三个方面,深入解析 和 equals() 的区别。 1. 基本概念 1.1 运算符 作用&a…

-bash: lsof: command not found

一、问题说明 执行如下命令时报错: # lsof |grep deleted > deleted_file -bash: lsof: command not found二、处理方法 # yum -y install lsof安装完成后可成功执行上面的命令。

摄像头应用编程(三):多平面视频采集

文章目录 1、前言2、环境介绍3、步骤4、应用程序编写5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 在查看摄像头类型时,大致可以分为两类:Video Capture 和 Video Capture Multiplanar。 本次应用程序主要针对类型为Video Capture Multi…

本地部署 Traefik 的完整教程

Traefik 是一款现代化的反向代理和负载均衡工具,专为云原生环境设计。它支持自动服务发现、动态配置更新以及多种后端(如 Docker、Kubernetes、Consul 等)。本教程将指导你如何在本地部署 Traefik,并配置其作为反向代理和负载均衡器。 1. 准备工作 在开始之前,请确保你的…

三维数据可视化与表面重建:Marching Cubes算法的原理与应用

1. 引言 随着现代医学影像技术的飞速发展,三维数据的可视化与重建已成为医学研究、临床诊断和手术规划的重要工具。在众多三维重建算法中,Marching Cubes算法因其高效、稳定的特性成为从离散数据场中提取等值面的经典方法。本报告将深入探讨Marching Cu…

MySql面试总结(二)

WHERE 子句优化 截至2024年7月,MySQL最新稳定版本是8.2,并不存在MySQL 8.4 。下面从常见的几个方面为你介绍 MySQL 8.x 中 WHERE 子句的优化方法: 1. 确保使用索引 原理:索引可以加快数据的查找速度,当 WHERE 子句中的条件列有索引时,MySQL 可以直接定位到符合条件的数…

【图论】判断图中有环的两种方法及实现

判断图中有环的两种方法及实现 在图论中,检测有向图是否存在环是常见问题。本文将介绍两种主流方法:DFS三色标记法和拓扑排序(Kahn算法),并提供对应的C代码实现。 方法一:DFS三色标记法 核心思想 通过深…

11.【线性代数】——矩阵空间,秩1矩阵,小世界图

十一 矩阵空间,秩1矩阵,小世界图 1. 矩阵空间交集 和 和集 2. 所有解空间3. r 1 r1 r1的矩阵4. 题目5. 小世界图 空间:组成空间的元素的线性组合都在这个空间中。 1. 矩阵空间 举例:矩阵空间( M M M 所有3x3的矩阵&…

【网络安全 | 渗透测试】GraphQL精讲一:基础知识

未经许可,不得转载, 文章目录 GraphQL 定义GraphQL 工作原理GraphQL 模式GraphQL 查询GraphQL 变更(Mutations)查询(Queries)和变更(Mutations)的组成部分字段(Fields)参数(Arguments)变量别名(Aliases)片段(Fragments)订阅(Subscriptions)自省(Introspecti…

关于虚拟环境中遇到的bug

conda和cmd介绍 介绍 Conda 概述: Conda是一个开源包管理系统和环境管理系统,尤其适用于Python和R语言的开发环境。它允许用户创建独立的虚拟环境,方便地管理依赖包和软件版本。 特点: 环境管理:可以创建、导入、导…

基于nginx的灰度发布解决方案

Nginx 在灰度发布中可以看作是一个精确的流量调度员,它充当着客户端与后端服务器之间的中介。通过配置好的规则,Nginx 会将用户请求智能地引导到不同版本的服务上。这样,Nginx 可以根据具体需求灵活地分配流量,确保新版本逐步推向…