机器学习概要
文章目录
一、什么是机器学习
二、机器学习的种类
1. 有监督学习
2. 无监督学习
3.强化学习
三、机器学习的应用
四、机器学习的步骤
1. 数据的重要性
2. 数据和学习的种类
3. 可视化
一、什么是机器学习
机器学习指的是计算机根据给定的问题、课题或环境进行学习,并利用学习结果解决问题或课题等的一整套机制。

与机器学习共同成为热门话题的还有人工智能和深度学习。这里梳理一下它们之间的关系。 人工智能的含义很广泛,是一个综合性系统。机器学习是实现人工智能的一种方法。也就是说,机器学习并非实现人工智能的唯一方法,但是近年来人工智能的研究一般使用机器学习。实现人工智能的方法还有很多,比如根据事先定好的规则进行数理统计预测等方法。
近年来,一种被称为深度学习的机器学习算法备受关注,以至于出现了这样的误解:提起人工智能,人们想到的就是深度学习。然而,深度学习只不过是机器学习算法的其中一种而已。深度学习在图像识别领域取得了划时代的成果,是当前热门的算法。目前在图像识别领域之外,深度学习也取得了许多成绩。
在进行机器学习时会用到各种各样的算法,需要根据机器学习对象的不同进行选择。本系列文章的目标就是帮助读者学会选择合适的算法。在理解了各算法的特性后,读者就能实际处理机器学习问题了。
二、机器学习的种类
机器学习包含不同的种类。根据不同的输入数据,分类如下:
1. 有监督学习
2. 无监督学习
3. 强化学习
1. 有监督学习
有监督学习是将问题的答案告知计算机,使计算机进行学习并给出机器学习模型的方法。这种方法要求数据中包含表示特征的数据和作为答案的目标数据。如图所示,已有表示特征的身高和体重数据,作为答案的数据是性别(男/女)。我们向计算机提供这些数据的组合,使计算机进行学习并给出预测模型。然后,将新的身高和体重数据提供给模型,由模型预测出性别。

预测性别这样的类别的问题叫作分类问题。由于这次是将数据分类到两个类别中,所以叫二元分类;还有将数据分类到更多类别,比如10个类别的情况,这样的情况叫作多元分类。这种答案变量不是连续值,而是作为类别数据的离散值的问题就是分类问题。
此外,表示特征的数据叫作特征值或者特征变量,作为答案的数据叫作目标变量或者标签。我们身边的一个分类问题的例子就是垃圾邮件过滤。用户判断邮件是否为垃圾邮件的过程就是打标签的过程,标签数据就是目标变量,邮件的发件人和内容则为特征值。打了标签的数据越多,机器学习的效果就越好,得到的结果的精度越高。
除了分类问题之外,有监督学习还包括回归问题。如图所示,已有表示特征的性别和身高数据,以及答案数据——鞋的尺码。在分类问题中,男和女的标签分别被数值化为0和1,这两个数值之间的大小关系是没有意义的。与之相对,鞋的尺码26.5 cm和24 cm之间的大小关系则是有意义的。对这样的数据进行预测的问题就是回归问题。在回归问题中,目标变量是作为连续值处理的,所以预测值有可能是23.7 cm这种不存在的尺码。


2. 无监督学习
有监督学习是将特征值和目标变量(答案)作为一套数据进行学习的方法,而无监督学习的数据中没有作为答案的目标变量。
没有答案,该如何去学习呢?无监督学习将表示特征的数据作为输入,通过将数据变形为其他形式或者找出数据中的部分集合,来理解输入数据的构造。此外,与有监督学习相比,无监督学习的结果难以解释,或者要求分析者基于经验加以主观的解释。有监督学习以“能否正确预测目标变量”为指标,相比之下,为了能够对结果进行解释,在进行无监督学习时,用户需要对输入数据的前提知识有一定程度的了解。
这里举一个无监督学习的例子。我们思考一下对某个中学的学生成绩进行分析的场景。假设各科目之间存在着这样的关联性:擅长数学的学生也擅长理科,但不擅长语文和文科。对于这样的输入数据,在使用无监督学习的代表性算法主成分分析(Principal Component Analysis,PCA)时,我们引入了新的轴,以说明被称为第一主成分的数据。在第一主成分上的坐标可以解释为“小值表明该生擅长理科,大值表明该生擅长文科”,如表所示,可以将数学、理科、语文、文科这4个特征值归纳在1个轴上加以展示。

这个例子使用PCA通俗易懂地解释了分析结果,但是需要根据输入数据选择合适的算法。近年来,无监督学习的研究在图像和自然语言处理方面取得了进展,是当前备受瞩目的领域。这里介绍的PCA属于降维算法。降维是以更少的特征值来理解数据的算法。无监督学习中也包括聚类算法。聚类是将数据分类为几个簇(相似数据的集合)的算法。人类很难直接理解多变量数据(由3个以上的变量构成的数据),通过聚类,数据能够以簇这种简单的形式进行展现。

3.强化学习
强化学习是以在某个环境下行动的智能体获得的奖励最大化为目标而进行学习的方法。
比如说:在主机游戏(环境)中,玩家(智能体)为了获得赛点(奖励)并取得最终的胜利,会无数次地重复尝试。我们也可以把强化学习看作有监督学习的目标变量被作为奖励提供的情况。拿主机游戏的例子来说,由于全部场景下所有操作的组合实在太多,很难通过人力进行评估,所以可以将游戏的场景和操作作为特征值,将游戏赛点作为目标变量,玩家无须依赖人力,通过无数次的游戏即可自行收集特征值和目标变量的数据组。强化学习在重复地玩游戏、查看结果中不断学习更恰当的行动。
三、机器学习的应用
机器学习在各领域的应用都取得了较大进展,比如自动驾驶领域的研究就很有名。在文章的自动分类和自动翻译方面,机器学习成果颇丰。在医疗领域,机器学习对X射线影像的分析有助于疾病的早期发现。此外,很早之前人们就将机器学习应用在气象信息领域了。
近年来,随着计算机越来越便宜,数量越来越多,机器学习的研究也在不断加速。互联网产业的发达和物联网(Internet of Things,IoT)等技术的应用也为机器学习带来了丰富的数据。 根据数据的特性选择合适的算法,就会有前所未有的发现,这是机器学习领域有意思的地方。
四、机器学习的步骤
1. 数据的重要性
在使用机器学习时,必须要有汇总并整理到一定程度的数据。以数据为基础,按规定的法则进行学习,最终才能进行预测。
没有数据,就不能进行机器学习。换言之,收集数据是首先要做的事情。
本系列文章使用的是主流机器学习库scikit-learn包内置的数据,这个数据便于入手,可自由使用。
在实际用机器学习解决问题之前,要先收集数据,有时还需要做问卷调查,甚至购买数据。然后,需要为收集到的数据人工标注答案标签,或者将其加工为机器学习算法易于处理的形式,删除无用的数据,加入从别的数据源获得的数据等。另外,基于平均值和数据分布等统计观点查看数据,或者使用各种图表对数据进行可视化,把握数据的整体情况也很重要。此外,有时还需要对数据进行正则化处理。这些操作被称为数据预处理。有这样一种说法:机器学习工作80%以上的时间花在了数据预处理上。
scikit-learn 是一个机器学习库,包含了各种用于机器学习的工具。这个库以BSD许可证开源,谁都可以免费、自由地使用。scikit-learn 实现了许多有监督学习和无监督学习的算法,是一套包含了用于评估的工具、方便的函数、示例数据集等的工具套件。在机器学习领域,scikit-learn已成为事实上的标准库,它具有两大优点:一是操作方法统一;二是易于在Python中使用。
2. 数据和学习的种类
机器学习需要的是二维的表格形式的数据(根据解决问题的目的不同,存在例外的情况)。表格的列中含有表示数据本身特征的多种信息,行则是由多个信息构成的数据集。接下来,看一 个更具体的例子:学校的某个社团有4名学生,下面的表是每个学生的姓名、身高、体重、出生日期和性别信息的数据。

思考一下用机器学习进行性别预测的问题。
因为要预测的是性别,所以性别列的男或女的数据就是预测对象。把预测对象的数据称为目标变量。不过,根据分类的场景的不同,有时也称为标签或类别标签数据,英文单词为target。除了性别之外的4个列(姓名、身高、体重、出生日期)是用于预测的原始数据。将用于预测的原始数据称为特征值,根据场景的不同,有时也称为特征变量或输入变量,英文单词为feature。
3. 可视化
使用常用的Python可视化工具Matplotlib。Matplotlib具有许多可视化功能。在可视化时,为了使图形美观,需要编写多行Python代码来设置坐标轴、标签、布局和配色等。代码行数的增加容易让人觉得晦涩难懂,但其实用于输出图形的重要部分的代码只有寥寥几行。
在使用Matplotlib实现可视化后,我们就能很容易地把握数据的偏差和特征等信息,所以要掌握它的用法。
Python 的可视化工具不只有Matplotlib,还有以下几种。
pandas 是处理数组数据的库,也具有可视化功能。
seaborn 在 Matplotlib 的基础上强化了表现力,用起来更简单。
Bokeh 使用了JavaScript,可用于显示动态图形。
相关文章:
机器学习概要
文章目录 一、什么是机器学习 二、机器学习的种类 1. 有监督学习 2. 无监督学习 3.强化学习 三、机器学习的应用 四、机器学习的步骤 1. 数据的重要性 2. 数据和学习的种类 3. 可视化 一、什么是机器学习 机器学习指的是计算机根据给定的问题、课题或环境进行学习&a…...
python:music21 与 AI 结合应用探讨
Python 的 music21 库与人工智能(AI)技术结合应用具有广泛的可能性,尤其是在音乐生成、分析和风格模拟等领域。以下是具体的结合方向与示例: 1. 音乐生成与 AI AI 模型驱动音乐生成: 使用深度学习模型(如 …...
【LangChain入门 2 Model组件】开始!LLM Models简单对话
文章目录 一、使用langchain_ollama二、采用DeepSeek的API三、Model 介绍3.1 OllamaLLM 预训练模型3.2 ChatOllama 聊天预训练模型3.3 OllamaEmbeddings 实现一个helloworld,跑通一个简单的对话。 后面章节会正式介绍LangChain的各个功能。 后台llm的端口可以任意选…...
7种寻址方式
1. 立即寻址 立即寻址也叫立即数寻址,操作数本身就在指令中给出,只要取出指令也就取到了操作数,这个操作数被称为立即数。立即数要求以 “#” 为前缀。 #0x1100:表示十六进制数#0b1100:表示二进制数#0d1100ÿ…...
C语言中,#define和typedef 定义int* 一个容易混淆的点
前言 首先来看一个代码: #include <stdio.h> #include <string.h>#define int_ptr int *int main() {int c 100;int_ptr a , b; // 等效于int * a,b; 那么b就是int类型,不是int*类型a &c;b &c; //报错return 0; } 原意&#x…...
C++20 中线程管理与取消机制的深度剖析
文章目录 std::jthread:更智能的线程管理背景与优势构造函数与 std::stop_token 的集成 std::stop_token、std::stop_source 和 std::stop_callback:灵活的取消机制std::stop_token:取消请求的指示器std::stop_source:取消请求的发…...
Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析
Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析 一、Teleport:突破组件层级的时空传送 1.1 实现原理图解 #mermaid-svg-75dTmiektg1XNS13 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…...
FPGA——实现LED流水灯
文章目录 一、Quartusll_18.1和VS Code软件的关联二、DE2-115的时钟电路三、流水灯的分层次设计四、总结 一、Quartusll_18.1和VS Code软件的关联 1.先打开Quartus II 软件,然后选择菜单栏“Tools”下的“Options…”。 2.点击“Options…”,在弹出的对…...
Excel 小黑第12套
对应大猫13 涉及金额修改 -数字组 -修改会计专用 VLOOKUP函数使用(查找目标,查找范围(F4 绝对引用),返回值的所在列数,精确查找或模糊查找)双击填充柄就会显示所有值 这个逗号要中文的不能英…...
6、说一下索引失效的场景?【中高频】
索引失效意味着 查询操作 不能利用索引进行数据检索,而是使用 全表扫描(也就是 数据库需要从磁盘上读取表的所有数据行),从而导致性能下降,下面一些场景会发生索引失效 对索引使用左或者左右模糊匹配(where…...
Noe.js 原生 http 模块 vs Express 框架对比
Noe.js 原生 http 模块 vs Express 框架对比 Noe.js 原生 http 模块 vs Express 框架对比 以下从多个维度对比两种方法,并提供详细示例,帮助初学者理解差异。 1. 基础架构对比 特性原生 http 模块Express 框架核心依赖Node.js 内置模块 (require(htt…...
滚动元素的新api
点击的时候需要双重视图滚动 itemClick(id) {// 滚动到对应位置this.$nextTick(() > {// 找到对应 id 在 initList2 中的索引const index this.initList2.findIndex((item) > item.id Number(id));if (index ! -1) {// 获取所有菜单项const menuItems document.queryS…...
多机调度问题(C语言)
代码如下: #include<stdio.h> #include<stdlib.h>int compare(void* a, void* b)//比较函数,用于qsort按处理时间从大到小排序 {return *(int*)a - *(int*)b; }int LPT(int jobs[], int n, int m)//多机调度问题的LPT算法 {qsort(jobs, n, …...
JS做贪吃蛇小游戏(源码)
一、HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel…...
烽火HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包及注意点说明
之前发布过这个固件包,关于烽火HG680-KA/HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包详细说明一下,汇总总结一些常遇到的情况,这次固件会分开发布,以免混淆。 上一个帖子地址:烽火HG680-KA࿰…...
Java数据结构相关知识
文章目录 1. 自动装箱和自动拆箱2. Object的equals方法3. Comparable和Comparator接口 1. 自动装箱和自动拆箱 自动装箱:将基本数据类型自动转换为对应的包装类。自动拆箱:将包装类自动转换为对应的基本数据类型。 显示装箱 int primitiveInt 10; //…...
996引擎 - 红点系统
996引擎 - 红点系统 总结NPC 红点(TXT红点)Lua 红点1. Red_Point.lua2. UI_Ex.lua参考资料以下内容是在三端 lua 环境下测试的 总结 红点系统分几个部分组成。 M2中设置变量推送。 配置红点表。 Envir\Data\cfg_redpoint.xls 2.1. UI元素中找到ID填写 ids 列。 主界面挂载…...
7种数据结构
7种数据结构 顺序表sqlite.hseqlite.c 单链表linklist.clinklist.h 双链表doulinklist.cdoulinklist.h 链式栈linkstack.clinkstack.h 队列SeqQueue.cSeqQueue.h 树tree.c 哈希表hash.c 顺序表 sqlite.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ typedef struct person…...
Redis的消息队列是怎么实现的
Redis 本身并不是一个专门的消息队列系统,但它的 List、Pub/Sub 和 Stream 数据结构可以用来实现消息队列的功能。以下是 Redis 实现消息队列的几种常见方式: 1. 基于 List 实现消息队列 Redis 的 List 是一个双向链表,支持在头部和尾部进行高效的插入和删除操作,非常适合…...
3.17BUUCTF练习day1
BUUCTF练习day1 [极客大挑战 2019]EasySQL1(字符型,账号密码型,get型) 判断闭合方式 在用户名输入1‘,此时密码先输入任何数字时,出现语法错误 说明闭合方式为单引号闭合,在判断完闭合方式后…...
【贪心算法】柠檬水找零
1.题目解析 860. 柠檬水找零 - 力扣(LeetCode) 2.讲解算法原理 分情况讨论 5---》直接收下 10---》找五元,收下 20----》105△ ----》555 由于5元更有用,则尽可能保留5元 3.代码 class Solution {public boolean lemonadeCh…...
黑马跟学.苍穹外卖.Day08
黑马跟学.苍穹外卖.Day08 苍穹外卖-day8课程内容1. 工作台1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码导入1.2.1 Controller层1.2.2 Service层接口1.2.3 Service层实现类1.2.4 Mapper层 1.3 功能测试1.3.1 接口文档测试1.3.2 前后端联调测试 1.4 代码提交 2. Ap…...
ABAP语言的动态编程(4) - 综合案例:管理费用明细表
本篇来实现一个综合案例:管理费用明细表。报表在实际项目中,也有一定的参考意义,一方面展示类似的报表,比如管理费用、研发费用等费用的明细,使用业务比较习惯的展示格式;另一方面正好综合运用前面学习的动…...
通过Geopandas进行地理空间数据可视化
目录 引言 安装与导入 数据加载与探索 数据预处理 基本地图可视化 添加其他数据到地图上 空间分析与查询 地图叠加与分组 空间缓冲区 交互式地图可视化 实际应用案例 城市规划 环境监测 结论 引言 在数据科学领域,地理空间数据可视化扮演着至关重要的角色。它不…...
【大语言模型_5】xinference部署embedding模型和rerank模型
一、安装xinference pip install xinference 二、启动xinference ./xinference-local --host0.0.0.0 --port5544 三、注册本地模型 1、注册embedding模型 curl -X POST "http://localhost:5544/v1/models" \ -H "Content-Type: application/json" \…...
CSS3学习教程,从入门到精通,CSS3 选择器权重问题语法知识点及案例代码(5)
CSS3 选择器权重问题语法知识点及案例代码 一、选择器权重概述 在 CSS 中,当多个选择器同时匹配同一个元素时,浏览器会根据选择器的权重来决定哪个样式生效。权重高的选择器的样式会覆盖权重低的选择器的样式。 二、选择器权重计算规则 1. 内联样式&…...
在Vue3中使用Echarts的示例
1.常用-引用ts文件方式 1.1 导出ts文件-一个简单的柱状图 export const baseBarChart (xdata: string[], data: number[][], legendData: string[]) > {if (data.length 0) {return noData;}// 定义颜色数组const color [#00CCCC,#FF9900,#1677DC,#FF6666,#B366FF,#666…...
Three.js 阴影 (Shadow) 知识点整理
阴影主要由 castShadow 和 receiveShadow 控制,并通过不同类型的光源 (DirectionalLight、SpotLight、PointLight) 生成。我们将系统地整理与阴影相关的知识点。 1️⃣ 基础概念 castShadow 🎭:物体是否投射阴影。receiveShadow Ἵ…...
GHCTF web方向题解
upload?SSTI! import os import refrom flask import Flask, request, jsonify,render_template_string,send_from_directory, abort,redirect from werkzeug.utils import secure_filename import os from werkzeug.utils import secure_filenameapp Flask(__name__)# 配置…...
Logic-RL:小参数qwen模型复现DeepSeek R1 zero
最近很多参照DeepSeek模型训练推理模型的工作,本文将深入 “Logic-RL: Unleashing LLM Reasoning with Rule-Based Reinforcement Learning” 的论文,该论文提出了一种Rule-Based Reinforcement Learning, Logic-RL框架,旨在提升 LLM 的逻辑推理能力,在qwen2.5-7b-instruct…...
