机器学习 (1) 监督学习 - 教程

news/2026/1/22 22:17:26/文章来源:https://www.cnblogs.com/gccbuaa/p/19519160

目录

  • 简介
  • 核心概念
    • 训练数据结构
    • 两大类型
      • 1. 分类问题(Classification)
      • 2. 回归问题(Regression)

简介

  • 监督学习的核心特点是使用带标签的训练数据来训练模型,简单来说,就是通过输入xxx(特征)推导出输出yyy(标签),算法的目标是学习从输入到输出的映射关系,以便于对新的、未见过的数据进行预测。

核心概念

训练数据结构

  1. 特征(features):输入变量,用xxx表示
  2. 标签(labels):目标变量,用yyy表示
  3. 训练集:包含特征和标签的数据集合

两大类型

1. 分类问题(Classification)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data[:, :2]  # 只使用前两个特征:平均半径和平均纹理
y = data.target       # 0: 恶性,1: 良性
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)
# 进行预测
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
# 可视化数据
plt.figure(figsize=(10, 8))
# 绘制恶性肿瘤(红色 x)
malignant = X[y == 0]
plt.scatter(malignant[:, 0], malignant[:, 1],
c='red', marker='x', s=100, linewidth=2, label='Malignant')
# 绘制良性肿瘤(蓝色圆圈)
benign = X[y == 1]
plt.scatter(benign[:, 0], benign[:, 1],
c='blue', marker='o', s=80, alpha=0.7,
facecolors='none', edgecolors='blue', linewidth=2, label='Benign')
# 创建决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),
np.arange(y_min, y_max, 0.1))
# 预测网格点的类别
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 绘制决策边界
plt.contour(xx, yy, Z, levels=[0.5], colors='purple', linewidths=2)
# 设置图表标签(英文避免乱码)
plt.xlabel('Tumor Size (mean radius)', fontsize=12)
plt.ylabel('Age (mean texture)', fontsize=12)
plt.title('Breast Cancer Classification\nTwo or more inputs', fontsize=14)
plt.legend(fontsize=12)
plt.grid(True, alpha=0.3)
# 添加准确率文本
plt.text(0.02, 0.98, f'Accuracy: {accuracy:.3f}',
transform=plt.gca().transAxes, fontsize=12,
verticalalignment='top', bbox=dict(boxstyle='round', facecolor='white', alpha=0.8))
plt.tight_layout()
plt.show()
# 打印结果信息
print(f"数据集形状: {X.shape}")
print(f"恶性样本数量: {np.sum(y == 0)}")
print(f"良性样本数量: {np.sum(y == 1)}")
print(f"模型准确率: {accuracy:.3f}")

在这里插入图片描述

2. 回归问题(Regression)

  • 下面是一个回归的例子,通过一些数据,得到xxxyyy之间的映射关系
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
# 生成回归数据
x_reg, y_reg = make_regression(n_samples=1000, n_features=1, noise=10, random_state=42)
# 创建并训练线性回归模型
model = LinearRegression()
model.fit(x_reg, y_reg)
x_line = np.linspace(x_reg.min(), x_reg.max(), 100).reshape(-1, 1)
y_line = model.predict(x_line)
# 可视化回归数据
plt.figure(figsize=(10, 6))
plt.subplot(1, 2, 2)
plt.scatter(x_reg, y_reg, alpha=0.6, color='blue', label='data point')
plt.plot(x_line, y_line, color='red', linewidth=2, label=f'line of regression (y = {model.coef_[0]:.2f}x + {model.intercept_:.2f})')
plt.title('data distribution')
plt.xlabel('feature value')
plt.ylabel('target value')
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
print('数据形状:', x_reg.shape, y_reg.shape)
print(f'回归线方程: y = {model.coef_[0]:.2f}x + {model.intercept_:.2f}')
print(f'模型R²分数: {model.score(x_reg, y_reg):.4f}')

在这里插入图片描述

  • 可以看到,分类和回归的区别主要在于输出变量的类型。分类预测的是离散的类别,而回归预测的是连续的数值。分类任务是判断一个数据属于哪个类别,而回归任务是预测一个数值结果

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

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

相关文章

使用ncmpcpp结合mpd更加容易听音乐

参考:https://ubuntuhandbook.org/index.php/2025/07/install-mpd-ubuntu/ 使用ncmpcpp结合mpd更加容易听音乐安装软件sudo apt install mpd ncmpcpp配置MPD配置服务器端用户:~/.config/mpd/mpd.conf 系统:/etc/mpd…

Sketch为什么越来越少人用?UI设计工具的真实迁移方向

引言有很长一段时间里,产品圈和设计圈的闲聊里,Sketch这个名字出现得越来越少了。这让我想起几年前,它还是求职必备技能,如今却似乎悄然退居二线。大家更多的讨论变成了在线协作设计工具,直接在浏览器里改稿。是Sketch…

sparse4D V2核心要点

这个图是sparseV2的结构,单帧网络输出的instance和历史帧的instance是如何在多帧网络里融合的?因为单帧网络基于当前img检出的结果肯定跟历史帧是有重叠的,初读文章的疑问是:如何把重合的这部分一一对应上呢一句话先给结论&#x…

学霸同款2026 AI论文工具TOP9:自考毕业论文全攻略

学霸同款2026 AI论文工具TOP9:自考毕业论文全攻略 2026年自考论文写作工具测评:为何需要这份榜单? 随着人工智能技术的不断进步,AI论文工具逐渐成为学术写作的重要辅助手段。对于自考学生而言,撰写毕业论文不仅是学业的…

计算机Java毕设实战-基于Spring Boot的企业人力资源管理系统基于springboot的寿险公司人力资源管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

sparse4D v3

4个技术细节: temporal instance denoising quality estimation decoupled attention extend to tracking 1. Temporal Instance Denoising(时序实例去噪) 背景问题(Sparse4D / v2 中的痛点) Sparse4D 系列的核心是 …

具备DI、DO、AI、AO四类IO信号的采集/输出功能以及串口、网口的通信功能,主要用于对综合测试平台及样机的功能测试提供支撑。

核控卡件综合测试平台1)系统简介核控卡件综合测试平台具备DI、DO、AI、AO四类IO信号的采集/输出功能以及串口、网口的通信功能,主要用于对综合测试平台及样机的功能测试提供支撑。综合测试平台集成测试设备的对外总线接口,主要包括RS422、以太…

计算机Java毕设实战-基于Spring Boot的保险销售员人力资源管理系统基于springboot的寿险公司人力资源管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

用于测量个防产品中各种活门的动态数据,提取活门的动态特性,为产品的研发提供测试条件和数据支持

个体防护装备活门性能测试系统 1)系统简介 个体防护装备活门性能测试系统用于测量个防产品中各种活门的动态数据,提取活门的动态特性,为产品的研发提供测试条件和数据支持。该测试系统能够提供不同的接口与现有活门匹配,能够检测…

Java计算机毕设之基于Java+springboot的寿险公司人力资源管理系统基于SpringBoot的人力资源管理系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【剑斩OFFER】算法的暴力美学——力扣 675 题:为高尔夫比赛砍树

一、题目描述二、算法原理思路:BFS 算法1)找到图中不是0,1值,用个二维数组来存储他们的下标2)排序,根据下标对应的值的大小升序3)升序:1 -> 2 -> 3......... 的本质就是 1 —&…

【课程设计/毕业设计】基于SpringBoot的人力资源管理系统基于springboot的寿险公司人力资源管理系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【毕业设计】基于springboot的社区协作与资源共享系统(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

想在 Java 八股文面试中脱颖而出?这1000 道互联网大厂 工程师面试题必不可少!!

国内的互联网面试,恐怕是现存的、最接近科举考试的制度。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入 Design 轮(系统设计和面向对象设计 OOD)和 BQ 轮(Behavior…

PolarDB-X 企业版分布式集群部署文档

目录PolarDB-X 企业版分布式集群部署文档快速连接快速连接命令集群信息集群状态Pod 列表服务列表镜像版本安装步骤1. 安装 Helm2. 创建命名空间3. 添加 Helm 仓库并安装 Operator4. 获取最新镜像版本5. 创建集群配置文件6. 部署集群7. 监控部署进度8. 获取连接密码集群架构架构…

【毕业设计】基于springboot的寿险公司人力资源管理系统(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Java毕设选题推荐:基于SpringBoot的社区互助系统基于springboot的社区协作与资源共享系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【课程设计/毕业设计】基于SpringBoot的闲置物品交易系统基于springboot的闲一品闲置品交易平台【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【2026亲测有效】10款免费降AI工具全解析,轻松将AIGC率降至10%以下

上个月,室友在提交论文时,用检测系统一查,结果显示“AI率87%”。这个数字在只剩几天就要二次提交的情况下,确实会让人非常焦虑。 为了解决这个问题,我花时间把市面上能找到的降ai率工具都试了一遍,前后测试…

如何利用天淳SCRM系统实现客户全生命周期高效管理?

如何利用天淳SCRM系统实现客户全生命周期高效管理?在数字化营销时代,客户关系管理(CRM)已经从简单的客户信息记录发展为全面的客户生命周期管理。天淳数字营销凭借其强大的SCRM系统,帮助企业实现客户全生命周期的高效管…