机器学习|分类入门

news2024/9/19 10:34:42

顾名思义,分类就是把事物“分类”成子类别的任务。但是,被一台机器!如果这听起来并不多,想象一下你的电脑能够区分你和陌生人。在土豆和西红柿之间。在A和F之间。现在听起来很有趣。分类是监督机器学习的一部分,我们将标记的数据用于训练。在机器学习和统计学中,分类是基于包含观察的训练数据集并且其类别成员是已知的,来识别新观察属于类别(子群体)集合中的哪一个的问题。

什么是分类?

分类是根据数据或对象的特征或属性将其分类为预定义的类或类别的过程。在机器学习中,分类是一种监督学习技术,其中在标记的数据集上训练算法,以预测新的、看不见的数据的类或类别。

分类的主要目标是建立一个模型,可以准确地分配一个标签或类别的基础上,其功能的新的观察。例如,分类模型可以在标记为狗或猫的图像的数据集上训练,然后用于基于它们的特征(例如颜色、纹理和形状)来预测狗或猫的新的、看不见的图像的类别。

分类分为两种类型:

  • 二元分类:在二元分类中,目标是将输入分类为两个类别或类别中的一个。例如-根据一个人的健康状况,我们必须确定该人是否患有某种疾病。
  • 多元分类:在多元分类中,目标是将输入分类为若干类或类别中的一个。例如-根据不同种类的花的数据,我们必须确定我们观察到的花属于哪个种类。

在这里插入图片描述

分类算法的类型

有各种类型的分类器。其中一些是:

  • 线性分类器:线性模型在类之间创建线性决策边界。它们简单且计算效率高。一些线性分类模型如下:
    逻辑回归
    具有内核='linear’的支持向量机
    单层感知器
    随机梯度下降(SGD)分类器
  • 非线性分类器:非线性模型在类之间创建非线性决策边界。它们可以捕获输入特征和目标变量之间更复杂的关系。一些非线性分类模型如下:
    K-近邻
    核SVM
    朴素贝叶斯
    决策树分类
    集成学习分类器:
    随机森林
    AdaBoost
    装袋分级机,
    投票分类器,
    ExtraTrees分类器
    多层人工神经网络

分类算法中的学习者类型

在机器学习中,分类学习者也可以被分类为“懒惰”或“渴望”学习者。

  • 懒惰的学习者:懒惰学习者也被称为基于实例的学习者,懒惰学习者在训练阶段不学习模型。相反,它们只是存储训练数据,并在预测时使用它来分类新实例。它在预测时间非常快,因为它在预测期间不需要计算。但是在高维空间中或者当训练实例的数量很大时,其效果较差。懒惰学习者的例子包括k-最近邻和基于案例的推理。
  • “渴望”学习者:急切学习者也被称为基于模型的学习者,急切学习者在训练阶段从训练数据中学习模型,并在预测时使用该模型对新实例进行分类。它在具有大型训练数据集的高维空间中更有效。急切学习器的例子包括决策树、随机森林和支持向量机。

分类模型评价

评估分类模型是机器学习中的重要步骤,因为它有助于评估模型在新的、看不见的数据上的性能和泛化能力。有几种度量和技术可以用于评估分类模型,这取决于具体的问题和需求。以下是一些常用的评估指标:

  • 分类精度:正确分类的实例占测试集中实例总数的比例。这是一个简单直观的度量标准,但在不平衡的数据集中可能会产生误导,其中大多数类占主导地位的准确性得分。
  • 混淆矩阵:显示每个类别的真阳性、真阴性、假阳性和假阴性数量的表格,可用于计算各种评估指标。
  • 精度和召回:精确度衡量真阳性占预测阳性总数的比例,而召回率衡量真阳性总数的比例。这些度量在其中一个类别比另一个更重要的场景中,或者当存在误报和误报之间的权衡时是有用的。
  • F1分数:精确度和召回率的调和平均值,计算为2 x(精确度x召回率)/(精确度+召回率)。对于精确度和召回率都很重要的不平衡数据集,这是一个有用的度量。
  • ROC曲线和AUC:受试者操作特征(ROC)曲线是针对分类器的决策函数的不同阈值的真阳性率(召回率)相对于假阳性率(1-特异性)的图。曲线下面积(AUC)测量分类器的整体性能,其值范围从0.5(随机猜测)到1(完美分类)。
  • 交叉验证:一种将数据分成多个折叠并在每个折叠上训练模型的技术,同时在其他折叠上进行测试,以获得对模型性能的更稳健的估计。

重要的是要根据具体问题和要求选择适当的评估指标,并通过评估独立测试数据的模型来避免过拟合。

分类是如何工作的?

分类背后的基本思想是在标记数据集上训练模型,其中输入数据与其对应的输出标签相关联,以学习输入数据和输出标签之间的模式和关系。一旦模型被训练,它就可以用于预测新的未见数据的输出标签。
分类过程通常涉及以下步骤:

  1. 了解问题:在开始分类之前,了解您要解决的问题是很重要的。你试图预测的类别标签是什么?输入数据和类标签之间的关系是什么?
    假设我们必须根据7个自变量(称为特征)来预测患者是否患有某种疾病。这意味着,只有两种可能的结果:
    病人得了病,意思是“真的”。
    患者无疾病。意思是“假的”
    这是一个二元分类问题。
  2. 数据准备:一旦你对问题有了很好的理解,下一步就是准备你的数据。这包括收集和预处理数据,并将其划分为训练集、验证集和测试集。在这个步骤中,数据被清理、预处理并转换成可由分类算法使用的格式。
    X:它是独立特征,以N*M矩阵的形式存在。N是否。M是特征的数量。
    y:对应于针对N个观察中的每一个的预测类别的N向量。
  3. 特征提取:从数据中提取相关特征或属性,其可用于区分不同类别。
    假设我们的输入X有7个独立的特征,只有5个特征影响标签或目标值,其余2个特征可忽略不计或不相关,那么我们将仅使用这5个特征进行模型训练。
  4. 模型选择:有许多不同的模型可用于分类,包括逻辑回归、决策树、支持向量机(SVM)或神经网络。考虑到数据的大小和复杂性以及可用的计算资源,选择适合您的问题的模型非常重要。
  5. 模型训练:一旦您选择了一个模型,下一步就是在您的训练数据上训练它。这涉及调整模型的参数以最小化训练数据的预测类别标签和实际类别标签之间的误差。
  6. 模型评估:评估模型:在训练模型之后,重要的是在验证集上评估其性能。这将使您很好地了解模型在新的、不可见的数据上的性能。
    对数损失或交叉熵损失、混淆矩阵、精度、召回率和AUC-ROC曲线是用于测量模型性能的质量度量。
  7. 模型调参:如果模型的性能不令人满意,您可以通过调整参数或尝试不同的模型对其进行微调。
  8. 部署模型:最后,一旦我们对模型的性能感到满意,我们就可以部署它对新数据进行预测。 它可以用于真实的世界问题。
    在这里插入图片描述

分类算法的应用

分类算法广泛应用于各个领域的许多现实应用中,包括:

  • 垃圾邮件过滤
  • 信用风险评估
  • 医学诊断
  • 图像分类
  • 情绪分析
  • 欺诈检测
  • 质量控制
  • 推荐系统

案例:
让我们来亲身体验一下Classification是如何工作的。我们将研究各种分类器,并在一个众所周知的标准数据集Iris数据集上看到它们的性能的相当简单的分析比较。
运行给定脚本的要求:

  • Python
  • Scipy和Numpy
  • Pandas
  • Scikit-learn
# Importing the required libraries
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn import datasets
from sklearn import svm
from sklearn.tree import DecisionTreeClassifier
from sklearn.naive_bayes import GaussianNB

# import the iris dataset
iris = datasets.load_iris()
X = iris.data
y = iris.target

# splitting X and y into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(
	X, y, test_size=0.3, random_state=1)

# GAUSSIAN NAIVE BAYES
gnb = GaussianNB()
# train the model
gnb.fit(X_train, y_train)
# make predictions
gnb_pred = gnb.predict(X_test)
# print the accuracy
print("Accuracy of Gaussian Naive Bayes: ",
	accuracy_score(y_test, gnb_pred))

# DECISION TREE CLASSIFIER
dt = DecisionTreeClassifier(random_state=0)
# train the model
dt.fit(X_train, y_train)
# make predictions
dt_pred = dt.predict(X_test)
# print the accuracy
print("Accuracy of Decision Tree Classifier: ",
	accuracy_score(y_test, dt_pred))

# SUPPORT VECTOR MACHINE
svm_clf = svm.SVC(kernel='linear') # Linear Kernel
# train the model
svm_clf.fit(X_train, y_train)
# make predictions
svm_clf_pred = svm_clf.predict(X_test)
# print the accuracy
print("Accuracy of Support Vector Machine: ",
	accuracy_score(y_test, svm_clf_pred))

输出:

Accuracy of Gaussian Naive Bayes:  0.9333333333333333
Accuracy of Decision Tree Classifier:  0.9555555555555556
Accuracy of Support Vector Machine:  1.0

总结

分类是一个非常广阔的研究领域。尽管它只是机器学习的一小部分,但它是最重要的一部分。

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

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

相关文章

Linux内核中的链表、红黑树和KFIFO

lLinux内核代码中广泛使用了链表、红黑树和KFIFO。 一、 链表 linux内核代码大量使用了链表这种数据结构。链表是在解决数组不能动态扩展这个缺陷而产生的一种数据结构。链表所包含的元素可以动态创建并插入和删除。链表的每个元素都是离散存放的,因此不需要占用连…

红黑树深入剖析【C++】

目录 一、红黑树概念 二、红黑树节点结构设计 三、插入操作 处理情况1 处理情况2 处理情况3 插入总结: 四、插入操作源码 五、红黑树验证 一、红黑树概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色&#xff0…

备战秋招 | 笔试强训17

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、假设A为抽象类,下列声明()是正确的 A. int fun(A); B. A Obj; C. A fun(int); D. A *p; 2、虚函数可不可以重载为内联? A. 可以 B. 不可以 C. 语法…

WEB 文件包含 /伪协议

首先谈谈什么是文件包含 WEB入门——文件包含漏洞与PHP伪协议_文件包含php伪协议_HasntStartIsOver的博客-CSDN博客 文件包含 程序员在编写的时候 可能写了自己的 函数 如果想多次调用 那么就需要 重新写在源代码中 太过于麻烦了只需要写入 funcation.php然后在需要引用的地…

【HarmonyOS】ArkTS 组件内转场动画,动画播放时颜色异常问题

【关键字】 HarmonyOS、ArkTS、组件内转场动画、颜色异常 【问题描述】 根据组件内转场动画文档中示例编写代码,使用动画转场组件button,并给button设置背景色让button透明度为0,实现动画转场时,会先出现默认蓝色button&#xf…

图片转pdf手机版免费?这几款转换软件看看

图片转pdf手机版免费?将图片转换成PDF文件可以带来很多好处。首先,PDF文件可以更好地保护你的图片。相对于图片文件,PDF文件更难以编辑和改变,因此更适合用于存储重要的图片。其次,将多张图片合并成一个PDF文件可以更好…

LViT:语言与视觉Transformer在医学图像分割

论文链接:https://arxiv.org/abs/2206.14718 代码链接:GitHub - HUANGLIZI/LViT: This repo is the official implementation of "LViT: Language meets Vision Transformer in Medical Image Segmentation" (IEEE Transactions on Medical I…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(11)-Fiddler设置安卓手机抓包,不会可是万万不行的!

1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求。 Fiddler能截获 Android 和 Windows Phone 等设备发出的 HTTP/HTTPS 请求。 今天宏哥讲解和分享Fiddler 如何截获安卓移动端发出的 HTTP/HTTPS 请求。 2.环…

32路智能存储柜锁控板的功能有哪些?

智能存储柜是一款基于物联网可以完成柜门自动开启、物品监控、管理的设备,凭借着出色的智能化和自动化功能,智能柜已逐步取代传统的储物柜。但现有的智能存储柜锁控板性存在着一系列的问题,如控制路数少、稳定性差、成本高、线路连接不便等&a…

CTF线下赛AWD知识点【持续完善ing】

文章目录 CTF线下赛AWD知识点AWD规则前期准备SSH登录口令登录密钥登录 改密码SSH密码修改mysql密码修改 备份数据备份目录备份数据库 查找后门 自动提交flag防御思路基础查杀寻找最近20分钟修改过的文件寻找行数最短的文件关键字查杀查找命令执行函数 文件监控杀不死马0x01.杀进…

带你简单认识淘宝API及相关的业务场景介绍

淘宝API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范。通过开放接口,开发者可以不改变现有系统,直接在原有系统上实现新功能。该规范于2007年发布,是目前业界唯一完整覆盖电商系统各相关业务领域的接口标准&am…

RCU 使用及机制源码的一些分析

》内核新视界文章汇总《 文章目录 1 介绍2 使用方法2.1 经典 RCU2.2 不可抢占RCU2.3 加速版不可抢占RCU2.4 链表操作的RCU版本2.5 slab 缓存支持RCU 3 源码与实现机制的简单分析3.1 数据结构3.2 不可抢占RCU3.3 加速版不可抢占RCU3.4 可抢占RCU3.5 报告禁止状态3.6 宽限期的开…

tinkerCAD案例:16. Spin Circuit Assembly 自旋电路组装

tinkerCAD案例:16. Spin Circuit Assembly 自旋电路组装 原文 In this tutorial, you’ll learn how to make a monkey with spinning arms using the Spin Circuit Assembly, which combines a spinning hobby gearmotor with 2xAAA batteries. 在本教程中&#…

Intellij IDEA 双击启动报错ClassNotFoundException: com.licel.b.z@

项目场景: 新从官网下载了ideaIU-2023.2.win.zip ,安装后双击启动报错, 无法运行idea, 提示信息如下 问题描述 Internal error. Please refer to https://jb.gg/ide/critical-startup-errorsjava.lang.ExceptionInInitializerErrorat java…

会议OA系统会议管理模块开发思路(layui搭建)

目录 一.为什么要进行开发 1.开发目的 2.项目流程 A.发起会议请求过程 1.首先实现我们的多选下拉框功能! 2.时间组件功能,并且提交我们新增加的会议内容 3.在进行发起会议编码时遇到的问题,BUG 3.1.有点时候js访问不到路径 3.2在增加…

陪伴关爱,陪诊小程序源码开发带给您温暖服务

在现代社会,随着人们生活压力的增加和健康意识的提高,陪诊服务成为了越来越多人的需求。为了满足用户对于贴心陪诊服务的需求,陪诊小程序应运而生。陪诊小程序是基于微信小程序平台开发的应用程序,旨在为用户提供便捷高效的陪诊服…

列表排序按钮常用方法,实现“向前移动到第一个↑”、“向前移动∧”、“向后移动∨”、“向后移动到最后一个↓”

<el-button title"向前移动到第一个" size"mini" type"primary" icon"el-icon-top" :disabled"tableData.length scope.row.value tableData[0].value :true" click.stop"moveToFirst(scope.row)" circle pla…

螺环化合物:1380300-88-8,具有刚性结构,结构稳定

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ PART1----产品描述&#xff1a; 螺环化合物&#xff08;CAS号&#xff1a;1380300-88-8&#xff09;&#xff0c;螺环化合物具有刚性结构&#xff0c;结构稳定&#xff0c;其手性配体有较大的比旋光度&#xff0c;在不对称…

如何选择低代码/零代码平台(最全平台总结)

来谈论这个问题之前&#xff0c;我们先来看看到底什么是低代码/零代码—— 低代码 对于“低代码”的宣传其实已经很久很广泛了&#xff0c;但是争议从来都没有停止。 忘记之前在哪里看到过一个“低代码将会取代程序员”之类的说法&#xff0c;觉得很好笑&#xff0c;看了一些…

靶机精讲之Brainpan1

nmap扫描 主机发现 端口扫描 服务扫描 -sT 说明用tcp协议&#xff08;三次握手&#xff09;扫描 -sV扫描版本 O扫描系统 NULL是图片 10000端口是个python服务 UDP扫描 脚本扫描 web渗透 目录爆破 显示/bin/目录有东西 gobuster dir -w /usr/share/dirbuster/wordlists/di…