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

embedded/2025/2/6 21:40:18/

一、算法与模型的关系

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

二、机器学习项目流程

在这里插入图片描述

  • 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.ppmy.cn/embedded/160134.html

相关文章

Kafka SSL(TLS)安全协议

文章目录 Kafka SSL(TLS)安全协议1. Kafka SSL 的作用1.1 数据加密1.2 身份认证1.3 数据完整性1.4 防止中间人攻击1.5 确保安全的分布式环境1.6 防止拒绝服务(DoS)攻击 2. Kafka SSL 配置步骤(1)创建 SSL 证…

基于RTOS的STM32游戏机

1.游戏机的主要功能 所有游戏都来着B站JL单片机博主开源 这款游戏机具备存档与继续游戏功能,允许玩家在任何时候退出当前游戏并保存进度,以便日后随时并继续之前的冒险。不仅如此,游戏机还支持多任务处理,玩家可以在退出当前游戏…

第P7周-Pytorch实现马铃薯病害识别(VGG16复现)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标 马铃薯病害数据集,该数据集包含表现出各种疾病的马铃薯植物的高分辨率图像,包括早期疫病、晚期疫病和健康叶子。它旨在帮助开发和…

实验四 XML

实验四 XML 目的: 1、安装和使用XML的开发环境 2、认识XML的不同类型 3、掌握XML文档的基本语法 4、了解DTD的作用 5、掌握DTD的语法 6、掌握Schema的语法 实验过程: 1、安装XML的编辑器,可以选择以下之一 a)XMLSpy b)VScode,Vs…

3、参数化测试

一、什么是参数化测试? 参数化测试允许使用不同的输入参数多次运行同一个测试方法,从而减少重复代码并提高测试覆盖率。它通过 ParameterizedTest 注解标记测试方法,并通过指定参数来源(如值列表、CSV、方法等)提供输…

深度剖析 Veo2 工具:解锁 AI 视频创作新境界

在当下这个 AI 技术日新月异的时代,各种 AI 工具如雨后春笋般涌现,让人目不暇接。今天,我就来给大家好好说道说道谷歌旗下的 Veo2,这可是一款在 AI 视频创作领域相当有分量的工具。好多朋友都在问,Veo2 到底厉害在哪?好不好上手?能在哪些地方派上用场?别着急,今天我就…

NOTEPAD++编写abap

参考下面三个链接 Notepad ABAP代码高亮显示_notepad代码高亮颜色-CSDN博客 百度安全验证 ABAP Syntax Highlighting in Notepad Part 2 - SAP Community 最后XML文件看看你可以自己增加些新语法的高亮显示

Tomcat启动流程与前端请求处理详解

Tomcat启动流程与前端请求处理详解 一、Tomcat启动流程 Tomcat是一个Servlet容器,它负责将Web应用程序中的Servlet与外部HTTP请求进行交互。Tomcat启动时会加载所有的Web应用和Servlet,并通过扫描和反射机制将其映射到适当的Servlet类上。下面是Tomcat启…