机器学习基本概念(附代码)

这里的“机器”指的是计算机软硬件组织,而非传统的机械装置;而“学习”,则是指软件通过训练过程,其性能得以提升的过程。

一、算法与模型的关系

在机器学习领域,算法和模型是两个核心概念。算法是一种偏抽象的概念,它定义了计算机解决问题的步骤和流程。而模型则是更加具体的概念,通过代码实现特定算法来完成任务。数学上,一个简单的模型可以表示为 y=f(x),其中 x 是样本特征,y 是样本标签,模型的目标就是将输入特征 x 映射到输出标签 y。

二、机器学习算法分类

机器学习可以根据样本是否包含标签分为两大类:有监督学习和无监督学习。

2.1 有监督学习(Supervised Learning)

在有监督学习中,样本不仅包含特征 X,还包含对应的标签 y。基于预测目标的不同,可以进一步细分为分类和回归问题。

  • 分类算法:用于预测离散量。

    • 逻辑回归:虽然名字中有“回归”,但它实际上是一种分类方法,常用于二分类问题。
    • KNN回归:K近邻算法不仅可以用于分类,还可以用于回归任务。
    • 朴素贝叶斯:基于贝叶斯定理并假设特征之间相互独立的一种简单快速的分类方法。
    • 决策树:通过构建树状模型来进行决策的算法,易于理解和实现。
    • 支持向量机(SVM):寻找能够最大化类别间间隔的超平面来分类数据点。
    • 集成学习:如随机森林、梯度提升等方法,通过组合多个弱学习器来提高预测性能。
  • 回归算法:用于预测连续量。

    • 线性回归:试图找到自变量与因变量之间的线性关系。
    • KNN回归:与KNN分类类似,但输出是连续值。
    • 决策树回归:使用决策树结构进行回归分析。
    • 支持向量机回归(SVR):SVM的一个变种,适用于回归任务。
    • 集成学习:同样适用于回归任务,如随机森林回归等。

2.2 无监督学习(Unsupervised Learning)

在无监督学习中,我们只有特征 X,没有标签 y。这类学习主要用于探索数据内部结构或模式。

  • 聚类算法

    • KMeans:一种常用的聚类技术,它试图将数据划分成K个簇,使得每个簇内的点尽可能相似。

三、机器学习项目流程

在这里插入图片描述

  • Step1: 项目分析

    首先明确项目的外部特性,包括输入和输出是什么,并确定这是一个分类还是回归问题。例如,在鸢尾花识别项目中,输入是一朵花的特征(如花萼长度、宽度等),输出是该花所属的子品种。

  • Step2: 数据采集
    数据采集是构建数据集的过程,基于输入和输出的需求进行。本质上是数理统计问题,采集总体的一个样本集,通过样本集的统计量来估计总体的统计量,

    人工智能项目的本质,通过对样本的分析,来评估/估计 总体的情况

    数据采集之后的结果是结构化数据:成行成列,确保每行代表一个样本,各行之间保持独立同分布,每列代表一个特征,各个特征之间是独立的,每一个列也代表一个变量,变量分为离散型变量连续型变量

    离散型变量:有限个状态,不同的状态值,状态之间无大小、程度等概念,状态之间是严格对立的!!!,比如男或者女,高或者矮,天晴或者下雨,

    连续型变量:无限个数值,数值之间是大小、程度的差异,内涵是一致的,长度,深度等程度问题,比如长度10.5米。

    怎么理解独立同分布?
    这包含2个意思,独立性同分布
    独立性指的是样本之间没有直接的关系或影响。具体来说,如果两个样本X1和X2是独立的,那么知道X1的信息不会给你关于X2的任何额外信息。换句话说,每个样本点的生成过程不受其他样本点的影响。
    同分布意味着所有样本都来自于同一个概率分布。这意味着每一个样本都有相同的分布函数,包括均值、方差等统计特性都是相同的。如果一个样本集是同分布的,那么无论你选择哪一个样本,它都应该具有相似的概率分布特征。

  • Step3: 数据预处理
    包括数据清洗(去除重复值、缺失值、异常值、无效特征)、数据切分(训练集、验证集、测试集)以及数据预处理(中心化、归一化、标准化)等步骤。

    训练集:训练过程中,用来训练模型(模型的学习数据)

    验证集:在训练过程中,用来验证模型的效果(不参与学习过程)

    测试集:训练完成后,用来评估模型的效果(不参与学习过程)

    在实际工作中,经常把验证集和测试集合并,一起使用

  • Step4: 模型选择
    根据问题是分类还是回归来选择合适的模型,主要是根据标签来判断是分类还是回归。例如,对于分类问题可以选择逻辑回归KNN朴素贝叶斯支持向量机决策树集成学习等;对于回归问题,则可能选择线性回归KNN支持向量机决策树集成学习等。

  • Step5: 训练模型
    使用训练集的数据对模型进行训练,即让模型学习如何将输入特征映射到输出标签。把训练集的特征 X_train 和标签 y_train 给模型 fit 方法,进行训练,

    本质:模型学习的过程!学习如何把 X 映射为 y

  • Step6: 评估模型
    评估模型的效果,分类问题可以通过准确率accuracy召回率recall精准率precisionF1-score等指标;回归问题则常使用MAE:平均绝对误差MSE:平均平方误差等指标。

  • Step7: 保存和部署模型
    最后,保存训练好的模型以便后续加载和部署应用。

四、示例:鸢尾花识别项目

  1. 项目分析
    项目需求:鸢尾花有3个子品种,想通过机器学习算法来做分类预测!进一步思考:
- 任务:给定一朵花,让模型识别到底是哪个子品种!
- 输入:一朵花- 一朵花是不能直接输入计算机中- 特征工程:- 数字化转型- 抽取/构建跟这朵花的类别有关系的特征来代表这朵花!!!- 跟业务专家详细咨询:- 花萼长度 x1- 花萼宽度 x2- 花瓣长度 x3- 花瓣宽度 x4
- 输出:子品种:- 分类问题:- 对状态进行编码:- N个状态:- 0, ..., N-1- 3个类别:- 0- 1- 2

目标是对鸢尾花的3个子品种进行分类预测。输入为花朵的四个特征(花萼长度、宽度,花瓣长度、宽度),输出为目标子品种编码。

  1. 加载数据
    使用sklearn.datasets.load_iris()加载鸢尾花数据集,并检查其基本信息。
from sklearn.datasets import load_iris
result = load_iris()
dir(result)
print(result.DESCR)
X, y = load_iris(return_X_y=True)
# X.shape
# (150, 4)
# y.shape
# (150,)
['DESCR','data','data_module','feature_names','filename','frame','target','target_names']

在这里插入图片描述

  1. 切分数据
    利用train_test_split函数按比例分割数据集。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
  1. 套用模型
    采用K近邻算法作为模型,并对其进行训练。
from sklearn.neighbors import KNeighborsClassifier
# 实例化对象
knn = KNeighborsClassifier()
# 训练模型
knn.fit(X=X_train, y=y_train)
# 模型预测
y_pred = knn.predict(X=X_test)
# 预测结果
y_pred
# 真实结果
y_test
  1. 模型评估
    计算预测结果的准确性。
acc = (y_pred == y_test).mean()
# 0.9666666666666667
  1. 模型的保存和加载
    使用joblib库保存和加载模型。
import joblib
# 模型的保存
joblib.dump(value=knn, filename="knn.model")
# 模型的加载
model = joblib.load(filename="knn.model")

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

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

相关文章

前端开发知识梳理 - HTMLCSS

1. 盒模型 由内容区(content)、内边距(padding)、边框(border)和外边距(margin)组成。 (1)标准盒模型(box-sizing默认值, content-box&#xff…

.NET周刊【1月第4期 2025-01-26】

国内文章 低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解 https://www.cnblogs.com/lyhabc/p/18660810/linux-sql-server-database-mirroring-configuration-guide 本文详细介绍了如何在Linux系统下配置SQL Server数据库镜像,以实现…

Nutz Dao与Spring集成

一、集成方式 1、采用Spring的IOC,但是事务还是采用Nutz自己管理控制; 2、采用Spring的声明式事务管理控制; 二、IOC 直接依据数据源注入即可 Beanpublic NutDao nutz(DataSource dataSource) {return new NutDao (dataSource);;} 此时N…

利用 Python 爬虫获取按关键字搜索淘宝商品的完整指南

在电商数据分析和市场研究中,获取商品的详细信息是至关重要的一步。淘宝作为中国最大的电商平台之一,提供了丰富的商品数据。通过 Python 爬虫技术,我们可以高效地获取按关键字搜索的淘宝商品信息。本文将详细介绍如何利用 Python 爬虫技术获…

白嫖RTX 4090?Stable Diffusion:如何给线稿人物快速上色?

大家都知道,在设计的初期,我们通常会先绘制草图,然后再进行上色处理,最终才开始进行最终的设计工作。在这个上色的过程中,配色是至关重要的一环。这不仅方便了内部同事的评审,也让产品方和客户可以直观地了…

libdrm移植到arm设备

一、环境资源要求 下载libdrm Index of /libdrm 这边使用的是2.4.114版本,版本太高对meson版本要求也很高,为了省事用apt安装meson就不用太高版本了,1.x版本虽然使用makefile编译方便但是太老,对应用支持不太好。 https://dri…

C# 比较两个List集合内容是否相同

在 C# 中&#xff0c;要比较两个 List<T> 集合的内容是否相同&#xff0c;可以通过以下几种方法&#xff1a; 一、非自定义类的元素比较 1. 使用 SequenceEqual 方法&#xff08;顺序和内容都相等&#xff09; 顺序和内容都相等&#xff1a;使用 SequenceEqual。 usin…

Win10环境使用ChatBox集成Deep Seek解锁更多玩法

Win10环境使用ChatBox集成Deep Seek解锁更多玩法 前言 之前部署了14b的Deep Seek小模型&#xff0c;已经验证了命令行及接口方式的可行性。但是纯命令行或者PostMan方式调用接口显然不是那么友好&#xff1a; https://lizhiyong.blog.csdn.net/article/details/145505686 纯…

力扣 239.滑动窗口最大值

思路 滑动窗口 遍历 解题思路 基本思路&#xff1a;使用滑动窗口法遍历数组&#xff0c;动态维护当前窗口的最大值。 特殊情况&#xff1a;该方法有一个缺陷&#xff0c;如果出窗口的元素是当前窗口的最大值max时&#xff0c;接下来的窗口中的最大值就无法确定了&#xff0c;所…

【Pandas】pandas Series sum

Pandas2.2 Series Computations descriptive stats 方法描述Series.abs()用于计算 Series 中每个元素的绝对值Series.all()用于检查 Series 中的所有元素是否都为 True 或非零值&#xff08;对于数值型数据&#xff09;Series.any()用于检查 Series 中是否至少有一个元素为 T…

kafka服务端之日志磁盘存储

文章目录 页缓存顺序写零拷贝 Kafka依赖于文件系统&#xff08;更底层地来说就是磁盘&#xff09;来存储和缓存消息 。 那么kafka是如何让自身在使用磁盘存储的情况下达到高性能的&#xff1f;接下来主要从3各方面详细解说。 页缓存 页缓存是操作系统实现的一种主要的磁盘缓存…

ES6 Map 数据结构是用总结

1. Map 基本概念 Map 是 ES6 提供的新的数据结构&#xff0c;它类似于对象&#xff0c;但是"键"的范围不限于字符串&#xff0c;各种类型的值&#xff08;包括对象&#xff09;都可以当作键。Map 也可以跟踪键值对的原始插入顺序。 1.1 基本用法 // 创建一个空Map…

计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)

计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas) 文章目录 计算机视觉语义分割——Attention U-Net(Learning Where to Look for the Pancreas)摘要Abstract一、Attention U-Net1. 基本思想2. Attention Gate模块3. 软注意力与硬注意力4. 实验…

韶音科技:消费电子行业售后服务实现数字化转型,重塑客户服务体系

韶音科技&#xff1a;消费电子行业售后服务实现数字化转型&#xff0c;重塑客户服务体系 在当今这个科技日新月异的时代&#xff0c;企业之间的竞争早已超越了单纯的产品质量比拼&#xff0c;**售后服务成为了衡量消费电子行业各品牌实力与客户满意度的关键一环。**深圳市韶音…

机器学习之Transformer 模型

Transformer 模型详解 Transformer 是由 Vaswani et al. 在 2017 年 提出的模型,最初用于 机器翻译 任务,并迅速成为自然语言处理(NLP)领域的标准模型架构。与传统的 RNN(循环神经网络) 和 LSTM(长短期记忆网络) 不同,Transformer 的核心思想是 完全基于自注意力机制…

使用 CloudDM 和钉钉流程化管理数据库变更审批

CloudDM 是一个专为团队协同工作打造的数据库数据管控平台。在管控数据库安全变更的过程中&#xff0c;为提高效率&#xff0c;CloudDM 接入了钉钉&#xff0c;支持实时通知与移动办公&#xff0c;满足广大企业用户的实际需求。 本文将介绍如何使用 CloudDM 和钉钉实现高效的数…

【RabbitMQ的重试配置retry】重试配置不生效原因

在Spring Boot项目中&#xff0c;RabbitMQ的retry重试配置不生效可能由以下原因导致&#xff1a; 核心问题定位 retry:enabled: true # ✅ 配置已开启max-attempts: 3 # ✅ 参数有效但实际未触发重试&#xff0c;可能原因如下&#xff1a; 1. 容器类型不匹配 症状表现 配置…

如何在WPS和Word/Excel中直接使用DeepSeek功能

以下是将DeepSeek功能集成到WPS中的详细步骤&#xff0c;无需本地部署模型&#xff0c;直接通过官网连接使用&#xff1a;1. 下载并安装OfficeAI插件 &#xff08;1&#xff09;访问OfficeAI插件下载地址&#xff1a;OfficeAI助手 - 免费办公智能AI助手, AI写作&#xff0c;下载…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<7>

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。 今天我们一起来学习转移表&#xff0c;回调函数&#xff0c;qsort… 目录 一、转移表1.1 定义与原理1.3…

使用Jenkins实现鸿蒙HAR应用的自动化构建打包

使用Jenkins实现鸿蒙HAR应用的自动化构建打包 在软件开发领域&#xff0c;自动化构建是提高开发效率和确保代码质量的重要手段。特别是在鸿蒙&#xff08;OpenHarmony&#xff09;应用开发中&#xff0c;自动化构建更是不可或缺。本文将详细介绍如何使用Jenkins命令行工具实现…