[机器学习]分类算法系列①:初识概念

目录

1、概念

2、数据集介绍与划分

2.1、数据集的划分

2.2、sklearn数据集介绍

2.2.1、API

2.2.2、分类和回归数据集

分类数据集

回归数据集

返回类型

3、sklearn转换器和估计器

3.1、转换器

三种方法的区别

3.2、估计器

3.2.1、简介

3.2.2、API

3.3、工作流程


1、概念

整个系列中总共需要掌握的内容:

知道数据集的分为训练集和测试集
知道sklearn的转换器和估计器流程
了解sklearn的分类、回归数据集
说明K-近邻算法的距离公式
说明K-近邻算法的超参数K值以及取值问题
说明K-近邻算法的优缺点
应用KNeighborsClassifier实现分类
了解分类算法的评估标准准确率
说明朴素贝叶斯算法的原理
说明朴素贝叶斯算法的优缺点
应用MultinomialNB实现文本分类
应用模型选择与调优
说明决策树算法的原理
说明决策树算法的优缺点
应用DecisionTreeClassifier实现分类
说明随机森林算法的原理
说明随机森林算法的优缺点
应用RandomForestClassifier实现分类

当谈到机器学习的分类算法时,我们通常可以将其分为以下几个主要类别:监督学习、无监督学习、半监督学习和强化学习。每个类别都有其独特的特点和适用场景。

1、监督学习(Supervised Learning): 在监督学习中,模型从有标签的训练数据中学习,目标是根据输入特征预测输出标签。最常见的监督学习算法包括:

  • 回归(Regression):用于预测连续值输出,例如线性回归、岭回归、Lasso回归等。
  • 分类(Classification):用于预测离散类别输出,例如逻辑回归、决策树、支持向量机、随机森林等。

2、无监督学习(Unsupervised Learning): 在无监督学习中,模型从无标签的数据中寻找模式和结构,帮助我们理解数据的内在关系。常见的无监督学习算法包括:

  • 聚类(Clustering):将数据分成组别,例如K均值聚类、层次聚类。
  • 降维(Dimensionality Reduction):将高维数据映射到低维空间,例如主成分分析(PCA)、独立成分分析(ICA)。

3、半监督学习(Semi-Supervised Learning): 半监督学习结合了监督学习和无监督学习,使用有标签和无标签数据来训练模型。这对于数据标注困难的情况下可能很有用。

4、强化学习(Reinforcement Learning): 强化学习是让模型通过与环境的互动来学习,以最大化累积奖励。它适用于需要做出一系列决策的问题。主要包括智能体、环境、行动和奖励信号。

2、数据集介绍与划分

学习目标

目标

知道数据集的分为训练集和测试集

知道sklearn的分类、回归数据集

拿到的数据是否全部都用来训练一个模型?

2.1、数据集的划分

机器学习一般的数据集会划分为两个部分:

  • 训练数据:用于训练,构建模型
  • 测试数据:在模型检验时使用,用于评估模型是否有效

划分比例:

  • 训练集:70% 80% 75%
  • 测试集:30% 20% 30%

API:

sklearn.model_selection.train_test_split(arrays, *options)

  1. x 数据集的特征值
  2. y 数据集的标签值
  3. test_size 测试集的大小,一般为float
  4. random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
  5. return ,测试集特征训练集特征值值,训练标签,测试标签(默认随机取)

结合后面的数据集作介绍

2.2、sklearn数据集介绍

2.2.1、API

sklearn.datasets:

  1. 加载获取流行数据集
  2. datasets.load_*()
    1. 获取小规模数据集,数据包含在datasets
  1. datasets.fetch_*(data_home=None)
    1. 获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/

2.2.2、分类和回归数据集

分类数据集

sklearn.datasets.load_iris():加载并返回鸢尾花数据集

sklearn.datasets.load_digits():加载并返回数字数据集

sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)

subset: 'train'或者'test','all',可选,选择要加载的数据集。

训练集的“训练”,测试集的“测试”,两者的“全部”

回归数据集

sklearn.datasets.load_boston():加载并返回波士顿房价数据集

sklearn.datasets.load_diabetes():加载并返回糖尿病数据集

返回类型

load和fetch返回的数据类型datasets.base.Bunch(字典格式):

  1. data:特征数据数组,是 [n_samples * n_features] 的二维 numpy.ndarray 数组
  2. target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
  3. DESCR:数据描述
  4. feature_names:特征名,新闻数据,手写数字、回归数据集没有
  5. target_names:标签名

3、sklearn转换器和估计器

3.1、转换器

想一下之前做的特征工程的步骤?

  1. 实例化 (实例化的是一个转换器类(Transformer))
  2. 调用fit_transform(对于文档建立分类词频矩阵,不能同时调用)

我们把特征工程的接口称之为转换器,其中转换器调用有这么几种形式

  1. fit_transform
  2. fit
  3. transform

这几个方法之间的区别是什么呢?

三种方法的区别

StandardScaler是scikit-learn库中用于数据标准化的类。它有三个主要方法:fittransformfit_transform。这些方法的区别如下:

1、fit方法

  • fit方法用于计算数据的均值(mean)和标准差(standard deviation)。
  • 当调用fit方法时,StandardScaler会分析数据,计算每个特征的均值和标准差,并将这些值存储在StandardScaler对象的内部状态中。
  • 这个方法通常在训练数据上调用一次,以计算出用于标准化的参数。
  • 示例:std_scaler.fit(X_train),其中X_train是训练数据。

2、transform方法

  1. transform方法用于应用先前计算得到的均值和标准差对数据进行标准化。
  2. 当调用transform方法时,StandardScaler将使用存储在对象内部的均值和标准差,对传入的数据进行标准化操作。
  3. 这个方法通常在训练数据和测试数据上分别调用,以保证数据集在相同的标准化范围内。
  4. 示例:X_train_scaled = std_scaler.transform(X_train)

3、fit_transform方法

  • fit_transform方法是一个组合方法,等效于先调用fit再调用transform
  • 它在数据上执行计算均值和标准差的操作,然后使用这些计算结果对数据进行标准化。
  • 这个方法通常在训练数据上调用一次,以获取均值和标准差,并将训练数据标准化后的结果返回。
  • 示例:X_train_scaled = std_scaler.fit_transform(X_train)

通常情况下,fit方法应该在训练数据上调用一次,然后使用transform方法对训练数据和测试数据进行标准化。fit_transform方法在训练数据上调用一次即可。这样可以确保使用相同的均值和标准差来对所有数据进行标准化,避免了数据泄露和不一致性。

fit_transform的作用相当于transform加上fit。但是为什么还要提供单独的fit呢

虽然fit_transform的作用在很多情况下与分别调用fittransform相同,但是提供独立的fit方法的原因在于灵活性和适用性。

以下是为什么提供单独的fit方法的一些原因:

  1. 分步骤操作:有时候你可能需要在进行标准化之前先检查计算得到的均值和标准差。独立的fit方法允许你在进行标准化之前查看这些参数,以便更好地理解数据。
  2. 跨数据集使用:在实际情况中,你可能会在多个不同的数据集上使用相同的标准化参数。例如,如果你训练了一个模型并将其保存下来,然后在生产环境中使用,你可能会希望使用与训练数据相同的标准化参数。单独的fit方法允许你将标准化参数存储下来,并在不同的数据集上重复使用。
  3. 控制标准化参数:有时候,你可能希望手动调整标准化的参数,例如通过添加一个偏移或缩放因子。使用独立的fit方法允许你在标准化之前对参数进行调整。
  4. 定制化处理:独立的fit方法为开发者提供了更大的自由度,可以根据具体需求进行定制化的处理。

虽然在大多数情况下,fit_transform会更方便,但是独立的fit方法确保了库的灵活性和适应性,使其能够应对更广泛的使用情况。这种设计哲学允许开发者根据需求选择适当的方法来达到最佳效果。

3.2、估计器

3.2.1、简介

"估计器"(Estimator)是scikit-learn中一个重要的概念,它是一种用于机器学习模型的通用接口。估计器的目标是封装模型的训练和预测过程,使其能够统一地使用相似的方法,无论是分类、回归还是其他类型的任务。

估计器在scikit-learn中有两个基本的角色:

  1. Transformer(转换器):转换器是一种估计器,它可以从输入数据中计算特征、过滤或转换数据。例如,StandardScaler就是一个转换器,可以将数据标准化。转换器通常有fit方法用于学习变换所需的参数,以及transform方法用于应用学习到的变换。
  2. Predictor(预测器):预测器是一种估计器,它可以根据输入数据进行预测。例如,线性回归模型就是一个预测器,它可以根据输入特征预测目标变量。预测器通常有fit方法用于训练模型,以及predict方法用于进行预测。

使用估计器的一般步骤包括:

  1. 创建估计器对象:通过实例化一个估计器类,例如LinearRegression()RandomForestClassifier()
  2. 使用fit方法:使用训练数据调用fit方法来训练模型(对于预测器)或计算变换参数(对于转换器)。
  3. 使用估计器对象:根据需要使用估计器的其他方法,例如predict(对于预测器)或transform(对于转换器)来进行预测或转换。
  4. 评估和优化:根据模型表现进行评估,可能需要调整模型参数以优化性能。

这种统一的接口使得在scikit-learn中可以轻松地切换不同的估计器,并将其组合在一起以构建复杂的机器学习流水线。同时,它也有助于保持代码的整洁和一致性,使得不同算法的比较和实验更加便捷。

3.2.2、API

在sklearn中,估计器(estimator)是一个重要的角色,是一类实现了算法的API

1、用于分类的估计器:

  • sklearn.neighbors k-近邻算法
  • sklearn.naive_bayes 贝叶斯
  • sklearn.linear_model.LogisticRegression 逻辑回归
  • sklearn.tree 决策树与随机森林

2、用于回归的估计器:

  • sklearn.linear_model.LinearRegression 线性回归
  • sklearn.linear_model.Ridge 岭回归

3、用于无监督学习的估计器

  • sklearn.cluster.KMeans 聚类

3.3、工作流程

估计器(Estimator)在scikit-learn中是一个统一的接口,用于训练模型和进行预测。以下是估计器的基本工作流程:

  1. 选择估计器类: 首先,根据你的任务选择合适的估计器类。估计器类的选择取决于你要解决的问题,例如分类、回归、聚类等。你可以从scikit-learn的估计器列表中选择一个适合的类,例如LinearRegressionRandomForestClassifier等。
  2. 实例化估计器对象: 通过实例化选定的估计器类,创建一个估计器对象。这个对象将包含模型的参数和方法。
  3. 拟合(训练)模型: 对于预测器类(Predictor),使用训练数据调用估计器对象的fit方法,将模型适应到训练数据。这个过程涉及学习模型的参数,以使其能够在输入特征上预测目标值。
  4. 进行预测: 对于已经训练好的预测器,你可以使用predict方法来进行预测。将输入特征传递给predict方法,它会返回模型对这些特征的预测值。
  5. 转换数据(对于转换器类): 对于转换器类(Transformer),使用训练数据调用估计器对象的fit方法,学习需要用于数据转换的参数。然后,使用transform方法对新的数据进行转换,以应用已学习的转换规则。
  6. 评估和调整: 通过评估模型在测试数据上的性能,来衡量模型的质量。你可以使用各种评估指标,如准确率、均方误差等。如果需要,你可以调整估计器的参数,以优化模型的性能。

总结起来,估计器的工作流程涉及选择合适的类、实例化估计器对象、拟合(训练)模型、进行预测或转换数据,以及根据评估结果进行调整。这种统一的接口使得在scikit-learn中可以方便地使用不同的估计器,构建复杂的机器学习流水线,并进行模型选择和性能优化。

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

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

相关文章

【软考】系统集成项目管理工程师(一)信息化基础知识【6分】

一、信息与信息系统 1、信息技术 为解决信息的采集、加工、存储、传输、处理、计算、转换、表现等问题而不断繁荣发展 核心-传输技术(通常指通信、网络等) 2、信息的质量属性 特点:客观性、普遍性 属性描述精确性对事物状态描述的精准程度…

图书馆项目Java阅览室管理系统jsp源代码MySQL

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 图书馆项目 系统有1权限:管理员 用所技术…

Centos7 安装 docker

1、前提条件 目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS7 (64)上, 要求系统为64位、Linux系统内核版本为 3.8以上 查看自己系统的内核 cat /etc/redhat-release 或 uname -r 2、卸载旧版本 旧版本的 Docker 的名称为docker或doc…

【注册岩土】Python土力学与基础工程计算.PDF-摩尔-库伦强度理论

8.3 Python求解 Python求解代码如下: 1.import math 2. 3.sigma1 300 # 最大主应力,单位 kPa 4.sigma3 100 # 最小主应力,单位 kPa 5.alpha 30 # m-n面与最小主应力方向夹角,单位度 6. 7.rad_alph…

Matlab图像处理-图像旋转

基本概念 图像的旋转变换属于图像的位置变换,通常是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角度。旋转后,图像的大小一般会改变。图像的旋转变换是指以图像的中心为原点,将图像上的所有像素都旋转同一个角度的变…

ubuntu系统安装tensorRT-8.6.1版本(2023-8月最新版)

目录 前言pip安装可能出现的报错: tar.gz安装 前言 看了无数教程和b站视频,啊啊啊啊啊啊啊啊啊啊啊tensorRT要我狗命啊。我要写全网tensorRT最全的博客!!! 总体来说成功安装方式有两种,pip安装和tar.gz安装(其实官网安装方式居多…

Python基础算法——反转链表

视频详解:https://www.bilibili.com/video/BV1sd4y1x7KN/?spm_id_from333.788&vd_source11069f01f7471094186b646e3a184ca3 一、反转链表 LeetCode 206题:https://leetcode.cn/problems/reverse-linked-list/description/ 给你单链表的头节点 h…

NTP时钟同步服务器

目录 一、什么是NTP? 二、计算机时间分类 三、NTP如何工作? 四、NTP时钟同步方式(linux) 五、时间同步实现软件(既是客户端软件也是服务端软件) 六、chrony时钟同步软件介绍 七、/etc/chrony.conf配置文件介…

26.仪表板侧边栏菜单

效果 源码 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sidebar Menu</title> <link rel="stylesheet" type="text/css"…

微服务学习资料

文章目录 参考资料一. 微服务概述1. CAP理论2. BASE理论3. SpringBoot 与 SpringCloud对比 二. 服务注册&#xff1a;Zookeeper,Eureka,Nacos,Consul1. Nacos两种健康检查方式&#xff1f;2. nacos中负责负载均衡底层是如何实现的3. Nacos原理4. 临时实例和持久化(非临时)实例 …

第三届计算机、物联网与控制工程国际学术会议(CITCE 2023)

第三届计算机、物联网与控制工程国际学术会议&#xff08;CITCE 2023) The 3rd International Conference on Computer, Internet of Things and Control Engineering&#xff08;CITCE 2023) 第三届计算机、物联网与控制工程国际学术会议&#xff08;CITCE 2023&#xff09;…

相同二叉树判断

目录 题目题目要求示例 解答方法一、实现思路时间复杂度和空间复杂度代码 方法二、实现思路时间复杂度和空间复杂度代码 题目 相同二叉树判断 题目要求 题目链接 示例 解答 方法一、 递归 实现思路 如果两棵树从根结点一起访问&#xff0c;当有一个结点不相等时就返回f…

自动化运维工具—Ansible

一、Ansible概述1.1 Ansible是什么1.2 Ansible的特性1.3 Ansible的特点1.4 Ansible数据流向 二、Ansible 环境安装部署三、Ansible 命令行模块&#xff08;1&#xff09;command 模块&#xff08;2&#xff09;shell 模块&#xff08;3&#xff09;cron 模块&#xff08;4&…

【Tkinter系列07/15】小部件Message、下拉菜单、移动窗

17. 小部件Message 此小部件类似于小部件 &#xff08;请参见第 12 节 “标签小部件”&#xff09;&#xff0c;但它适用于 在多行上显示消息。所有文本将 以相同的字体显示;如果需要显示文本 使用多种字体&#xff0c;请参见第 24 节 “文本小部件”。Label 创建新构件作为子…

Linux安装Portainer(简洁版)

项目简介Docker安装 1.安装命令&#xff1a;curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun2.启动&#xff1a;systemctl start docker3.停止&#xff1a;systemctl stop docker4.重启&#xff1a;systemctl restart docker5.开机启动&#xff1a;system…

25.CSS自定义形状按钮与悬停效果

效果 源码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS Custom Shape Button</title><link rel="stylesheet" href="style.css"> </head> <body&…

新型安卓恶意软件使用Protobuf协议窃取用户数据

近日有研究人员发现&#xff0c;MMRat新型安卓银行恶意软件利用protobuf 数据序列化这种罕见的通信方法入侵设备窃取数据。 趋势科技最早是在2023年6月底首次发现了MMRat&#xff0c;它主要针对东南亚用户&#xff0c;在VirusTotal等反病毒扫描服务中一直未被发现。 虽然研究…

【高性能计算】opencl语法及相关概念(三)事件,内存

opencl中的事件概念 当谈到OpenCL中的事件时&#xff0c;它们代表了执行的各个阶段或操作的状态信息。通过使用事件&#xff0c;您可以跟踪和管理内核执行以及内存操作的进度和顺序。以下是与OpenCL事件相关的关键概念&#xff1a; 创建事件&#xff1a;您可以使用clCreateUse…

【MATLAB第70期】基于MATLAB的LightGbm(LGBM)梯度增强决策树多输入单输出分类预测模型(全网首发,敬请期待)

【MATLAB第70期】基于MATLAB的LightGbm(LGBM)梯度增强决策树多输入单输出分类预测模型&#xff08;全网首发&#xff0c;敬请期待&#xff09; (LGBM)是一种基于梯度增强决策树(GBDT)算法。 基于MATLAB的LightGbm即将研究测试上线。 下一个研究对象&#xff1a; ABCBOOST模型 一…

【AI】数学基础——数理统计(概念参数估计)

概率论 文章目录 3.6 数理统计概念与定理3.6.1 概率论与数理统计区别3.6.2 基本定理大数定理马尔科夫不等式切比雪夫不等式中心极限定理 3.6.3 统计推断的基本问题 3.7 参数估计3.7.1 频率派点估计法矩阵估计法极大似然估计点估计量的评估 区间估计 3.7.2 贝叶斯派贝叶斯定理条…