【机器学习】分类与回归——掌握两大核心算法的区别与应用

【机器学习】分类与回归——掌握两大核心算法的区别与应用

1. 引言

在机器学习中,分类和回归是两大核心算法。它们广泛应用于不同类型的预测问题。分类用于离散的输出,如预测图像中的对象类型,而回归则用于连续输出,如预测房价。本文将深入探讨分类与回归的区别,并通过代码示例展示它们在实际问题中的应用。
在这里插入图片描述

2. 什么是分类?

分类问题指的是将输入数据分配到预定义的离散类别中。常见的分类任务包括垃圾邮件检测、手写数字识别等。

分类的特征:

  • 输出为离散值:即数据属于某个特定类别。
  • 常用算法:如逻辑回归、支持向量机、决策树、随机森林、KNN等。

示例:逻辑回归(Logistic Regression)用于分类

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 训练逻辑回归模型
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)# 预测与评估
y_pred = model.predict(X_test)
print(f"分类准确率: {accuracy_score(y_test, y_pred)}")

在这里插入图片描述

3. 什么是回归?

回归问题指的是预测一个连续的数值输出。常见的回归任务包括房价预测、股票价格预测等。

回归的特征:

  • 输出为连续值:即预测结果是一个具体数值。
  • 常用算法:如线性回归、决策树回归、支持向量回归(SVR)、Lasso回归等。

示例:线性回归(Linear Regression)用于回归

import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 加载数据集
boston = load_boston()
X = boston.data
y = boston.target# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)# 预测与评估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差: {mse}")

4. 分类与回归的区别

1. 输出类型不同

  • 分类:输出为离散类别,例如[0, 1],或者多类别如[猫, 狗, 鸟]。
  • 回归:输出为连续的数值,例如预测房价为250,000元。

2. 评估指标不同

  • 分类常用指标:准确率(Accuracy)、混淆矩阵、ROC曲线、F1分数等。
  • 回归常用指标:均方误差(MSE)、均方根误差(RMSE)、R²等。

3. 模型不同

  • 分类:常用的模型如逻辑回归、KNN、支持向量机等。
  • 回归:常用的模型如线性回归、岭回归、支持向量回归等。
    在这里插入图片描述

5. 常见的分类算法

1. K 近邻算法(K-Nearest Neighbors, KNN)

KNN 是一种基于距离的分类算法,通过找到与输入数据最近的K个样本来进行分类。

KNN 示例代码:

from sklearn.neighbors import KNeighborsClassifier# 训练 KNN 模型
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)# 预测与评估
y_pred_knn = knn.predict(X_test)
print(f"KNN 分类准确率: {accuracy_score(y_test, y_pred_knn)}")

2. 支持向量机(SVM)

SVM 是一种分类算法,它通过找到一个超平面,将数据点划分到不同的类别中。

SVM 示例代码:

from sklearn.svm import SVC# 训练 SVM 模型
svm = SVC(kernel='linear')
svm.fit(X_train, y_train)# 预测与评估
y_pred_svm = svm.predict(X_test)
print(f"SVM 分类准确率: {accuracy_score(y_test, y_pred_svm)}")

6. 常见的回归算法

1. 决策树回归(Decision Tree Regressor)

决策树是一种基于树形结构的回归算法,通过递归划分特征空间来预测目标值。

决策树回归示例代码:

from sklearn.tree import DecisionTreeRegressor# 训练决策树回归模型
tree = DecisionTreeRegressor()
tree.fit(X_train, y_train)# 预测与评估
y_pred_tree = tree.predict(X_test)
print(f"决策树均方误差: {mean_squared_error(y_test, y_pred_tree)}")

2. 支持向量回归(SVR)

SVR 是支持向量机的回归版本,通过找到一个使得预测误差最小的超平面来进行回归预测。

SVR 示例代码:

from sklearn.svm import SVR# 训练支持向量回归模型
svr = SVR(kernel='linear')
svr.fit(X_train, y_train)# 预测与评估
y_pred_svr = svr.predict(X_test)
print(f"SVR 均方误差: {mean_squared_error(y_test, y_pred_svr)}")

7. 如何选择分类或回归算法?

  1. 数据的输出类型:首先根据输出是离散值还是连续值选择分类或回归算法。
  2. 数据的规模与维度:不同的算法对数据规模和维度有不同的处理效果,如 SVM 适用于高维数据,而线性回归适用于低维数据。
  3. 计算资源:一些复杂的算法如支持向量机和神经网络需要大量计算资源,而简单的模型如线性回归和 KNN 相对较快。
    在这里插入图片描述

8. 应用案例

案例1:使用逻辑回归预测是否为高收入人群

from sklearn.datasets import fetch_openml# 加载收入数据集
income_data = fetch_openml('adult', version=1)
X = income_data.data
y = income_data.target# 预处理数据并进行训练和预测
# 省略具体代码,类似于上面的逻辑回归步骤

案例2:使用线性回归预测房价

# 加载房价数据并应用线性回归模型预测
# 类似上面展示的线性回归示例

9. 总结与未来展望

分类和回归是机器学习中两类基本问题,它们分别解决了离散输出和连续输出的预测需求。通过理解二者的区别和实际应用,你可以更好地解决不同类型的预测问题。未来,随着数据集的增长和算法的优化,分类与回归算法将继续在各个领域中发挥重要作用。

10. 参考资料

  • 《机器学习实战》 by Peter Harrington
  • Scikit-learn 官方文档

使用机器学习分析CSDN热榜

image-20240913144221867

  • 也不知道是不是错觉,感觉机器学习水文好像在逐渐变少。那种没有代码,只介绍几个百度就能搜到概念的机器学习水文正在逐渐变少。
  • 博主目前见到机器学习最猖狂的时候,是热榜前十中六篇都是机器学习水文,而且都是一点进去就知道不是人写得那种机生文 。让人感觉CSDN药丸

img

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。

代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦😍

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号

更多专栏:
  • 📊 一图读懂系列

  • 📝 一文读懂系列

  • ⚽ Uniapp

  • 🌟 持续更新

  • 🤩 Vue项目实战

  • 🚀 JavaWeb

  • 🎨 设计模式

  • 📡 计算机网络

  • 🎯 人生经验

  • 🔍 软件测试

掘金账号 CSDN账号

感谢订阅专栏 三连文章

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

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

相关文章

Linux | 进程控制(上):进程终止(strerror函数、errno宏、_exit() 与 exit())

文章目录 进程控制1、进程终止1.1进程常见退出方法退出码1.1.1 strerror函数 & errno宏1.1.1 _exit函数_exit和exit的区别结合现象分析: 进程控制 1、进程终止 1.1进程常见退出方法 进程退出场景 代码运行完毕,结果正确代码运行完毕,结…

Redis 集群高可用详解及配置

关型数据库 关系型数据库: 是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据 主流的 MySQL、Oracle、MS SQL Server 和 DB2 都属于这类传统数据库 关型数据库的优缺点 特点: 1、数据关系模型基于关系…

学生请假管理系统

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 学生请假管理系统拥有两种角色 管理员:班级管理、课程管理、学生管理、审核请假信息、导出请假单 学生:填写请假单、查看请假审核情况 1.1 背景描述 学生请假管…

音视频入门基础:WAV专题(11)——FFmpeg源码中计算WAV音频文件每个packet的pts_time、dts_time的实现

音视频入门基础:WAV专题系列文章: 音视频入门基础:WAV专题(1)——使用FFmpeg命令生成WAV音频文件 音视频入门基础:WAV专题(2)——WAV格式简介 音视频入门基础:WAV专题…

C++速通LeetCode第6题-环形链表

快慢指针真的很好用! /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:bool hasCycle(ListNode *head) {//快慢指针ListNode* fast…

高效Flutter应用开发:GetX状态管理实战技巧

探索GetX状态管理的使用 前言 在之前的文章中,我们详细介绍了 Flutter 应用中的状态管理,setState、Provider库以及Bloc的使用。 本篇我们继续介绍另一个实现状态管理的方式:GetX。 一、GetX状态管理 基础介绍 GetX 是一个在 Flutter 中…

Ubuntu 20.04/22.04无法连接网络(网络图标丢失、找不到网卡)的解决方案

问题复述: Ubuntu 20.04无法连接到网络,网络连接图标丢失,网络设置中无网络设置选项。 解决方案 对于Ubuntu 20.04而言:逐条执行 sudo service network-manager stopsudo rm /var/lib/NetworkManager/NetworkManager.statesudo…

C# 使用Socket通信,新建WinForm服务端、客户端程序

一、新建WinForm Socket服务端程序 注:rtbReceviceMsg为RichTextBox控件 服务端程序、界面 服务端代码 public partial class Form1 : Form {public Form1(){InitializeComponent();}public virtual void TriggerOnUpdateUI(string message){if (this.InvokeRequir…

【SQL笔试题】SN_1 连续登陆系列问题

简介 连续登陆天数场景描述是对一个特定情境或活动连续发生的天数进行详细的阐述。这种描述通常用于展示某个事件或活动的持续时间,以及它对参与者或环境产生的影响。 常见的应用场景: 用户留存分析:通过跟踪用户的连续登录天数&#xff0…

240908-Linux通过ln设置软链接关联大模型文件

在Linux中,您可以使用ln命令来创建软链接(符号链接)。软链接是一种特殊类型的文件,它指向另一个文件或目录。以下是如何设置软链接的步骤: 创建软链接 基本语法: ln -s [目标文件或目录] [软链接的名称]示…

轮询解决方案

概述 轮询的使用场景: 股票 K 线图聊天重要通知,实时预警 这些场景都是都要实时性的。 http 是请求响应模式,一定需要先请求,后响应。 解决方案: 短轮询:interval 定时发送请求。问题:大量…

如何使用Python创建目录或文件路径列表

在 Python 中,创建目录或生成文件路径列表通常涉及使用 os、os.path 或 pathlib 模块。下面是一些常见的任务和方法,用于在 Python 中创建目录或获取文件路径列表。 问题背景 在初始阶段的 Python 学习过程中,可能遇到这样的问题&#xff1a…

基于Boost库的搜索引擎开发实践

目录 1.项目相关背景2.宏观原理3.相关技术栈和环境4.正排、倒排索引原理5.去标签和数据清洗模块parser5.1.认识标签5.2.准备数据源5.3.编写数据清洗代码parser5.3.1.编写读取文件Readfile5.3.2.编写分析文件Anafile5.3.2.编写保存清洗后数据SaveHtml5.3.2.测试parser 6.编写索引…

无人机动力系统设计之电调芯片参数选型

无人机动力系统设计之电调芯片参数选型 1. 源由2. 关键因素2.1 电压范围2.2 电流处理能力2.3 控制方式2.4 PWM输出与分辨率2.5 通讯接口2.6 保护功能2.7 支持霍尔传感器与无传感器模式2.8 集成度与外围器件2.9 效率与散热2.10 市场供应与成本 3. 因素阐述3.1 PWM工作频率3.1.1 …

Seata

TC - 事务协调者 维护全局和分支事务的状态,驱动全局事务提交或回滚。 TM - 事务管理器 定义全局事务的范围:开启全局事务、提交或回滚全局事务。 RM - 资源管理器 管理分支事务处理的资源,向 TC 注册分支事务,报告分支事务的…

Chainlit集成LlamaIndex并使用通义千问模型实现AI知识库检索网页对话应用

前言 之前使用Chainlit集成Langchain并使用通义千问大语言模型的API接口,实现一个基于文档文档的网页对话应用。 可以点击我的上一篇文章《Chainlit集成Langchain并使用通义千问和智谱AI实现AI知识库检索网页对话应用》 查看。 本次将Langchain框架更改为LlamaInde…

Hive任务优化参数整理

Hive本身是个基于hdfs的结构化数据管理工具,虽然在后面的发展中允许底层接入其他的数据源,比如第三方数据服务这种基础架构,但是它从立意上来说,它不适合用来做高性能查询引擎,反而在传统离线数据仓库中它有着自身的优…

使用 Elastic 和 LM Studio 的 Herding Llama 3.1

作者:来自 Elastic Charles Davison, Julian Khalifa 最新的 LM Studio 0.3 更新使 Elastic 的安全 AI Assistant 能够更轻松、更快速地与 LM Studio 托管模型一起运行。在这篇博客中,Elastic 和 LM Studio 团队将向你展示如何在几分钟内开始使用。如果你…

校园生活点餐外卖配送到宿舍小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 随着移动互联网的普及和校园生活的多元化,学生们对于线上点餐、外卖配送等服务的依赖度越来越高。然而,传统的校园餐饮服务模式往往存在效率低下、覆盖范围有限、信息不透明等问题,难以满足学生多样化的需求。因此,开发…

30万月变现3-6万,你也可以

30万月变现3-6万,你也可以 我相信,这些年我的IP还是吸引了不少的中产阶级关注我,什么叫中产阶级,就是兜里还是能随便掏出大几十大几百万的现金的,这群人,有着自己稳定的职业和收入来源,生活水平…