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.rhkb.cn/news/28169.html

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

相关文章

linux第四讲----基础开发工具vim

1.软件安装 这里以ubuntu为例,安装sl软件,输入这个命令即可自动安装~ 使用一下,输入sl,屏幕上会出现一个移动的小火车 之后不想要了准备卸载就输入: 注意:1)下载软件时也可以进行搜索~ 2)cento…

【Wireshark 02】抓包过滤方法

一、官方教程 Wireshark 官网文档 : Wireshark User’s Guide 二、显示过滤器 2.1、 “数据包列表”窗格的弹出过滤菜单 例如,源ip地址作为过滤选项,右击源ip->prepare as filter-> 选中 点击选中完,显示过滤器&#…

在 macOS 使用 .pem 私钥免密登录腾讯云服务器

前言 在腾讯云上创建服务器时,如果选择了「密钥对」的登录方式,就会得到一个 .pem 文件作为私钥。很多小伙伴在使用 macOS 系统时,可能不清楚如何使用这个私钥文件来 SSH 免密登录远程服务器。本文将详细介绍如何在本地配置 .pem 私钥文件并…

Android U 分屏——SystemUI侧处理

WMShell相关的dump命令 手机分屏启动应用后运行命令:adb shell dumpsys activity service SystemUIService WMShell 我们可以找到其中分屏的部分,如下图所示: 分屏的组成 简图 分屏是由上分屏(SideStage)、下分屏(MainStage)以及分割线组…

【Python】——使用python实现GUI图书管理系统:Tkinter+SQLite实战

本文将通过一个完整的python项目——图书管理系统,演示如何利用Tkinter构建GUI 界面,结合SQLite数据库实现增删改查功能。代码简洁易懂,适合python初学者学习和二次开发。 一、项目功能概览 图书管理:添加、查看、修改、删除图书…

文件上传靶场(1--9关)

实验环境: 1,upload的靶场环境可以去GitHub上自行查找 2,打开小皮面板的nginx和数据库 3,将文件上传的靶场部署到本地: 放到小皮的phpstduy_pro的www下面 小提示: 另外如果你用的是php7的版本建议将版…

leetcode每日一题——1745分割回文串

给你一个字符串 s ,如果可以将它分割成三个 非空 回文子字符串,那么返回 true ,否则返回 false 。 当一个字符串正着读和反着读是一模一样的,就称其为 回文字符串 。 示例 1: 输入:s "abcbdd"…

Python的那些事第三十九篇:MongoDB的Python驱动程序PyMongo

PyMongo:MongoDB的Python驱动程序 摘要 PyMongo 是 MongoDB 的官方 Python 驱动程序,用于在 Python 应用程序中与 MongoDB 数据库进行交互。本文将详细介绍 PyMongo 的安装、基本操作、高级功能以及实际应用案例,并通过示例代码和表格展示其强大的功能和灵活性。 1. 引言 …

Windows 使用 Docker + WSL2 部署 Ollama(AMD 显卡推理)搭建手册‌

Windows 使用 Docker WSL2 部署 Ollama(AMD 显卡推理)搭建手册‌ ‌手册目标‌ 在 Windows 11 上通过 ‌Docker WSL2‌ 调用 AMD 显卡运行 Ollama 推理服务。 实现 ‌低延迟、高性能的本地模型推理‌,同时不影响 Windows 正常使用。 标记…

【大模型基础_毛玉仁】1.1 基于统计方法的语言模型

【大模型基础_毛玉仁】1.1 基于统计方法的语言模型 1.语言模型基础1.1 基于统计方法的语言模型1.1.1 n-grams 语言模型1.1.2 n-grams 的统计学原理 1.语言模型基础 语言是概率的。语言模型(LanguageModels, LMs)旨在准确预测语言符号的概率。 将按照语…

IDEA 2025最新版2024.3.3软件安装、插件安装、语言设置

IntelliJ IDEA是一款由JetBrains公司开发的集成开发环境(IDE),主要用于Java语言的开发,它通过提供丰富的功能如智能代码补全、代码分析、版本控制集成等来提高开发效率。 IDEA有社区版和专业版两个版本,社区版是免费开…

springbootWeb入门--创建springbootweb项目

步骤: 1.建立空工程 2.选择项目的jdk版本 3.在工程中建立模块,选择“spring initilazer”,类型勾选“maven” 4.勾选“spring web”之后,就无需再自行写dependcy了。 5.等待联网下载 6.生成的工程文件,如下绿色框中文件&…

Windows10系统构建本地安全私有化的个人知识库——采用DeepSeek+RAGFlow

一、为什么要构建本地私有化个人知识库 1.1、自身需求 1、需要相关隐私资料内容的安全保护可控; 2、需要根据自身的隐私资料内容构建出个性化的知识库; 一些常见的业务场景如:①希望我们的智能助手可以根据公司的管理制度回答问题,让员工可以随时了解公司相关制度内容信息;…

江协科技/江科大-51单片机入门教程——P[3-1] 独立按键控制LED亮灭

本文围绕51单片机开发中的独立按键控制技术展开,系统讲解其硬件结构、电平检测原理与C51编程实现方法。文章从开发板独立按键的物理构造与电路连接入手,剖析按键按下与松开时的电平变化规律,并结合单片机I/O口寄存器操作原理,阐释…

【QGIS二次开发】地图显示与交互-01

1. 系统界面设计 设计的系统界面如下,很好还原了QGIS、ArcGIS等软件的系统界面,充分利用了QT中顶部工具栏、菜单栏、底部状态栏,实现了图层管理器、鹰眼图、工具箱三个工具面板。 菜单栏、工具栏、工具箱集成了系统中实现的全部功能&#x…

第40天:安全开发-JavaEE应用SpringBoot框架JWT身份鉴权打包部署JARWAR

时间轴: 演示案例: SpringBoot-身份鉴权-JWT 技术 SpringBoot-打包部署-JAR&WAR SpringBoot-身份鉴权-JWT 技术 SpringBoot- 身份鉴权 -JWT 技术 JWT(JSON Web Token) 是由服务端用加密算法对信息签名来保证其完整性和不可伪 造; …

计算机毕业设计SpringBoot+Vue.js医院挂号就诊系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

Linux之命令记录【一】

文章目录 前言几个重要的热键1.[Tab]按键2.[Ctrl]-c 按键3.[Ctrl]-d 按键4.[shift]{[PageUP]|[Page Down]}按键 线上求助(查看帮助信息)1. --help2.man page3.info page 用户身份1.su 基础指令1.date2.cal3.bc 系统字符集相关1.locale 文本编辑器1.nano …

Ollama存在安全风险的情况通报及解决方案

据清华大学网络空间测绘联合研究中心分析,开源跨平台大模型工具Ollama默认配置存在未授权访问与模型窃取等安全隐患。鉴于目前DeepSeek等大模型的研究部署和应用非常广泛,多数用户使用Ollama私有化部署且未修改默认配置,存在数据泄露、算力盗…

Sourcetrail 代码分析工具

Sourcetrail 概述 Sourcetrail 是一个代码分析工具,它旨在帮助开发人员理解和导航复杂的代码库。它可以创建代码库的可视化图形,显示代码中的类、函数、变量、依赖关系等信息,从而帮助开发人员更好地理解代码结构和关系,降低维护…