通往 AI 之路:Python 机器学习入门-机器学习基本概念

机器学习基本概念

机器学习是人工智能的重要分支,它依赖数学和统计学方法来构建模型,处理和分析数据。本章介绍了机器学习的基本概念,包括监督学习与无监督学习的区别,数据集的划分方式,过拟合与欠拟合的问题,以及交叉验证的方法。这些基础知识对理解和应用机器学习至关重要。


1. 监督学习 vs 无监督学习

1.1 监督学习

监督学习(Supervised Learning)是一种学习方法,它使用带有标签的数据进行训练,使模型能够学习输入与输出之间的映射关系。

监督学习的常见算法:
  • 线性回归(Linear Regression)
  • 逻辑回归(Logistic Regression)
  • 支持向量机(SVM)
  • 决策树(Decision Tree)
  • 随机森林(Random Forest)
  • 神经网络(Neural Networks)
示例:使用 Scikit-learn 进行监督学习
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np# 生成数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 6, 8, 10])# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)# 预测
predictions = model.predict(X_test)
print("预测值:", predictions)

1.2 无监督学习

无监督学习(Unsupervised Learning)是指没有标签的数据,模型需要自己发现数据中的模式或结构。

无监督学习的常见算法:
  • 聚类(Clustering):K-Means、DBSCAN、层次聚类
  • 降维(Dimensionality Reduction):PCA、t-SNE、LDA
示例:使用 K-Means 进行聚类
from sklearn.cluster import KMeans
import numpy as np# 生成数据
X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])# K-Means 聚类
kmeans = KMeans(n_clusters=2, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_
print("聚类标签:", labels)

2. 训练集、测试集、验证集

在机器学习任务中,我们通常将数据集划分为:

  • 训练集(Training Set):用于训练模型
  • 验证集(Validation Set):用于调整超参数
  • 测试集(Test Set):用于评估最终模型性能
from sklearn.model_selection import train_test_split
import numpy as np# 生成数据
X = np.arange(1, 101).reshape(-1, 1)
y = np.arange(1, 101)# 划分训练集(60%)、验证集(20%)、测试集(20%)
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)

3. 过拟合与欠拟合

3.1 过拟合(Overfitting)

  • 训练集上的表现很好,但测试集上的表现很差。
  • 解决方案:使用正则化(L1/L2)、增加数据量、降低模型复杂度。

3.2 欠拟合(Underfitting)

  • 模型过于简单,无法捕捉数据中的模式。
  • 解决方案:增加模型复杂度、增加特征、使用更强的算法。
from sklearn.linear_model import Ridge# 使用 L2 正则化(Ridge 回归)
ridge = Ridge(alpha=1.0)
ridge.fit(X_train, y_train)

4. 交叉验证(Cross Validation)

交叉验证是一种评估模型性能的技术,可以减少模型对训练数据的依赖,提高泛化能力。

4.1 K 折交叉验证(K-Fold Cross Validation)

将数据集分成 K 份,轮流使用其中 K-1 份训练,1 份测试。

from sklearn.model_selection import KFold, cross_val_score
from sklearn.linear_model import LinearRegressionkf = KFold(n_splits=5)
model = LinearRegression()
scores = cross_val_score(model, X, y, cv=kf)
print("K 折交叉验证得分:", scores)

4.2 分层 K 折交叉验证(Stratified K-Fold)

适用于类别不均衡数据。

from sklearn.model_selection import StratifiedKFold
from sklearn.datasets import load_irisX, y = load_iris(return_X_y=True)
skf = StratifiedKFold(n_splits=5)

4.3 留一法(LOO,Leave-One-Out)

每次使用 n-1 个样本训练,剩下 1 个样本测试。

from sklearn.model_selection import LeaveOneOut
loo = LeaveOneOut()
scores = cross_val_score(model, X, y, cv=loo)
print("LOO 交叉验证得分:", scores.mean())

4.4 随机分割交叉验证(Shuffle Split)

适用于大数据集,减少计算量。

from sklearn.model_selection import ShuffleSplit
ss = ShuffleSplit(n_splits=5, test_size=0.2, random_state=42)
scores = cross_val_score(model, X, y, cv=ss)

4.5 时间序列交叉验证

适用于时间序列数据,不能随机分割。

from sklearn.model_selection import TimeSeriesSplit
tscv = TimeSeriesSplit(n_splits=3)
scores = cross_val_score(model, X, y, cv=tscv)

结论

本章介绍了机器学习的基本概念,包括监督学习与无监督学习、数据集划分、过拟合与欠拟合以及交叉验证方法。理解这些基础知识可以帮助我们更好地训练和优化机器学习模型。

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

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

相关文章

【算法学习之路】5.贪心算法

贪心算法 前言一.什么是贪心算法二.例题1.合并果子2.跳跳!3. 老鼠和奶酪 前言 我会将一些常用的算法以及对应的题单给写完,形成一套完整的算法体系,以及大量的各个难度的题目,目前算法也写了几篇,题单正在更新&#xf…

布隆过滤器原理详解:高效解决大规模数据去重与查询问题

布隆过滤器原理详解:高效解决大规模数据去重与查询问题 一、布隆过滤器的核心概念 布隆过滤器(Bloom Filter)是一种基于概率的高效数据结构,由Burton Bloom于1970年提出。其核心思想是通过位数组(Bit Array&#xff…

2025年渗透测试面试题总结-字某跳动-渗透测试实习生(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 字某跳动-渗透测试实习生 渗透流程信息收集如何处理子域名爆破中的泛解析问题绕过CDN寻找真实IPPHPINFO页面关注…

【Spring AOP】_切点类的切点表达式

目录 1. 根据方法签名匹配编写切点表达式 1.1 具体语法 1.2 通配符表达规范 2. 根据注解匹配编写切点表达式 2.1 实现步骤 2.2 元注解及其常用取值含义 2.3 使用自定义注解 2.3.1 编写自定义注解MyAspect 2.3.2 编写切面类MyAspectDemo 2.3.3 编写测试类及测试方法 在…

直接法估计相机位姿

引入 在前面的文章:运动跟踪——Lucas-Kanade光流中,我们了解到特征点法存在一些缺陷,并且用光流法追踪像素点的运动来替代特征点法进行特征点匹配的过程来解决这些缺陷。而这篇文章要介绍的直接法则是通过计算特征点在下一时刻图像中的位置…

SpringCloud + Spring AI Alibaba 整合阿里云百炼大模型

一、前言 记录一次自己使用微服务整合阿里云的百炼大模型,需要用到Redis来记录最近五条信息,已能够保证上下文的连通性,Ai和用户之间的对话是使用的MongoDB来进行存储。然后我这篇文章是介绍了两种请求方式,一种是通过Http请求&a…

【MYSQL数据库异常处理】执行SQL语句报超时异常

MYSQL执行SQL语句异常:The last packet successfully received from the server was 100,107 milliseconds ago. The last packet sent successfully to the server was 100,101 milliseconds ago. 这个错误表明 MySQL 服务器与 JDBC 连接之间的通信超时了。通常由…

【Linux-网络】HTTP的清风与HTTPS的密语

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚 引言 📚 一、HTTP 📖 1.概述 📖 2.URL &#x1f5…

Leetcode 二叉搜索树迭代器

通俗地解释这道题目的要求 这道题目要求你设计一个二叉搜索树(BST)的迭代器,让你能够像遍历一个数组那样,依次获取 BST 中的元素,并且始终按照 从小到大(中序遍历:左 -> 根 -> 右&#x…

Gartner:数据安全平台DSP提升数据流转及使用安全

2025 年 1 月 7 日,Gartner 发布“China Context:Market Guide for Data Security Platforms”(《数据安全平台市场指南——中国篇》,以下简称指南),报告主要聚焦中国数据安全平台(Data Securit…

进程控制 ─── linux第15课

目录 进程控制 1.进程创建 (fork前面讲过了) 写时拷贝 进程终止 进程退出场景 退出码 进程终止方法 进程控制 1.进程创建 (fork前面讲过了) 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父…

【网络安全 | 渗透测试】GraphQL精讲二:发现API漏洞

未经许可,不得转载。 推荐阅读:【网络安全 | 渗透测试】GraphQL精讲一:基础知识 文章目录 GraphQL API 漏洞寻找 GraphQL 端点通用查询常见的端点名称请求方法初步测试利用未清理的参数发现模式信息使用 introspection探测 introspection运行完整的 introspection 查询可视化…

2025-3-5 leetcode刷题情况(贪心算法--简单题目)

一、455.分发饼干 1.题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 ,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸…

hive之LEAD 函数详解

1. 函数概述 LEAD 是 Hive 中的窗口函数,用于获取当前行之后指定偏移量处的行的值。常用于分析时间序列数据、计算相邻记录的差异或预测趋势。 2. 语法 LEAD(column, offset, default) OVER ([PARTITION BY partition_column] [ORDER BY order_column [ASC|DESC]…

Linux网络相关内容与端口

网络相关命令 ping命令测试连接状态 wget命令:非交互式文件下载器,可以在命令行内下载网络文件 使用ctrlc可以中止下载 curl命令:可以发送http网络请求,用于文件下载、获取信息等 其实和浏览器打开网站一样,cu…

OpenCV下载与配置(vistual studio 2022)

目录 1 简介 2 opencv的下载 ​编辑 3 配置环境变量 ​编辑 4 visual studio 2022中的配置 5 代码测试 6 总结 1 简介 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,广泛应用于图像处理、目标检测…

Pythonweb开发框架—Flask工程创建和@app.route使用详解

1.创建工程 如果pycharm是专业版,直接NewProject—>Flask 填写工程name和location后,点击右下角【create】,就会新建一个flask工程,工程里默认会建好一个templates文件夹、static文件夹、一个app.py文件 templates&#xff1…

服务器CPU微架构

1、微架构图 前端:预解码、解码、分支预测、L1指令缓存、指令TLB缓存 后端:顺序重排缓存器ROB处理依赖,调度器送到执行引擎 执行引擎:8路超标量,每一路可以进行独立的微操作处理 Port0、1、5、6支持整数、浮点数的加…

uniapp对接打印机和电子秤

uniapp对接打印机和电子秤 连接电子秤和打印机,最难的不是连接蓝牙和电子成,而是打印机。因为打印机涉及到向打印机写数据操作,然后这个写的数据需要做一个编码转换。难就难在编码转换。如果是java那就是一句代码的事情,而js就没有…

Linux基础IO

Linux基础IO 1.理解文件1.1 狭义理解1.2 广义理解1.3 文件操作的归类认知1.4 系统角度 2.c的文件接口2.1 hello.c打开文件2.2 hello.c写文件2.3 hello.c读文件2.4 stdin & stdout & stderr 3.系统打开文件接口3.1 一种传递标记位的方法3.2 open函数3.3 文件描述符3.3.0…