第3章 机器的“统计学”:机器学习基础概念扫盲

1. 引言

想象一下,你是一位古代的农夫,毕生的经验告诉你:乌云密布、燕子低飞,那么不久便会下雨。你并没有学习过气象学,也不懂大气压和水汽凝结的原理。你的“预测能力”,完全源自于对“乌云、燕子”这些**特征(Features)与“下雨”这个结果(Label)**之间关系的长期观察和归纳。这,就是一种最朴素的“学习”。

在上一章,我们已经掌握了处理数据的“工具”——Python、NumPy和Pandas。现在,我们要让机器也来扮演这位“老农”,去从数据中自动学习规律,并用学到的规律来预测未来。这便是机器学习(Machine Learning)的魅力所在。它不是让机器进行死板的逻辑演绎,而是赋予机器一种类似人类的、基于经验归纳的“直觉”。

本章学习目标:

  • 理解机器学习的核心思想:明白“模型”是什么,以及机器是如何通过“训练”来学习的。
  • 掌握机器学习的三大范式:清晰地区分监督学习、无监督学习和强化学习,了解它们各自适用的场景。
  • 熟悉一个完整的机器学习流程:从数据准备到模型训练,再到评估和预测,了解一个机器学习项目通用的“七步走”流程。
  • 完成第一个预测模型:使用最经典的机器学习库Scikit-learn,亲手构建、训练并评估一个简单的分类模型。

本章核心问题:

  • 我们常说的“模型训练”,训练的到底是什么?“学习”这个过程在数学上是如何体现的?
  • “有老师教”和“自学成才”在机器学习里分别对应什么?它们有什么根本区别?
  • 拿到一份杂乱无章的数据,我们应该遵循怎样的步骤,才能把它变成一个能做预测的AI模型?

在本章,我们将正式从“数据处理员”晋升为“算法训练师”。我们将揭开机器学习的神秘面纱,你会发现,那些看似高深莫测的预测算法,其核心思想往往朴素而又深刻。准备好,让我们开始教机器“学”会思考的第一课。


2. 正文

2.1 学习的本质:从数据到模型的映射

在第一章我们曾打过一个比方:教机器人区分苹果和橙子。我们给它看成百上千张图片,并告诉它“这是苹果”、“那是橙子”。这个过程,在机器学习的语境下,有一个更专业的术语,叫做训练(Training)

背景与动机
传统编程的思路是规则+数据=答案。例如,我们写一个判断闰年的程序,规则是“能被4整除但不能被100整除,或能被400整除”。我们输入一个年份(数据),程序根据规则输出“是”或“否”(答案)。但对于很多复杂问题,如人脸识别、垃圾邮件过滤,我们根本无法写出明确的规则。机器学习则颠覆了这个模式,它的思路是数据+答案=规则。我们给机器大量的“人脸图片”(数据)和对应的“姓名”(答案),让机器自己去“悟”出那个我们无法写出的“识别规则”。

直观比喻:什么是模型?

这个被机器自己“悟”出来的“规则”,就是模型(Model)

你可以把模型想象成一个极其复杂的、带有无数旋钮的“函数发生器”。

  • 输入(Input):一张水果的图片(可以看作一堆像素数据)。
  • 输出(Output):一个预测结果(比如“苹果”或“橙子”)。
  • 旋钮(Parameters):模型内部有成千上万个可以调节的参数,就像调音台上的推子。这些参数的组合,决定了输入和输出之间的映射关系

训练的过程,就好比一个调音师在调试这个函数发生器。

  1. 初始状态:所有旋钮都处于一个随机的位置。此时,你给它一张苹果的图片,它可能会胡乱输出“橙子”。
  2. 反馈与调整:你告诉它:“错了!正确答案是‘苹果’。” 调音师(优化算法)听到这个反馈后,会微调一下那些导致错误输出的旋钮。比如,把某个与“红色”特征相关的旋钮向上推一点。
  3. 重复迭代:你不断地把成千上万张带有正确答案的图片(训练数据)喂给它。每一次,调音师都会根据预测结果和真实答案之间的差距(误差/损失 Loss),来精细地调整成千上万个旋钮。
  4. 训练完成:经过海量数据的“洗礼”,这台机器的无数个旋钮,最终被调整到了一个绝佳的组合状态。此时,模型就“学会”了。你再给它一张它从未见过的新图片,它也能大概率地输出正确的预测。

原理解析:学习的数学本质
在数学上,模型可以被看作一个函数 ( f(x; \theta) )。

  • ( x ): 代表输入数据(比如一张图片的像素矩阵)。
  • ( \theta ): 代表模型内部所有可调节的参数(我们比喻中的“旋钮”),这是一个巨大的参数集合。
  • ( f ): 代表模型的结构和计算方式(比如是线性回归模型,还是决策树模型)。
  • ( y’ = f(x; \theta) ): 代表模型根据输入 ( x ) 和当前参数 ( \theta ) 做出的预测输出。

我们还有一个真实标签 ( y )。损失函数(Loss Function) ( L(y’, y) ) 用来衡量预测值 ( y’ ) 和真实值 ( y ) 之间的差距。例如,最简单的均方误差损失:( L = (y’ - y)^2 )。

机器学习的训练目标,就是找到一组最优的参数 ( \theta^* ),使得在所有训练数据上的总损失(Total Loss)最小。这个寻找最优参数的过程,通常使用一种叫做**梯度下降(Gradient Descent)**的优化算法来完成,我们将在后续章节深入探讨。

2.2 三大学习范式:老师、自学与实战

根据“学习”方式的不同,机器学习主要分为三大流派:监督学习、无监督学习和强化学习。

2.2.1 监督学习 (Supervised Learning):跟着老师学

这是目前应用最广、最成功的学习范式。它的核心特点是,我们提供给机器的训练数据都带有明确的“答案”,也就是标签(Label)

  • 直观比喻:就像学生在课堂上学习。我们给他一本带答案的练习册(带标签的数据),里面有题目(输入特征),也有标准答案(输出标签)。学生通过做题、对答案、订正错误(模型训练),逐渐掌握解题规律。
  • 典型任务
    • 分类 (Classification):预测一个离散的类别标签。
      • 例子:判断一封邮件是否是“垃圾邮件”;识别一张图片中的动物是“猫”还是“狗”;判断一个客户是否会“流失”。输出是有限的、明确的类别。
    • 回归 (Regression):预测一个连续的数值。
      • 例子:预测明天的“气温”;预测一套房子的“价格”;预测一支股票的“股价”。输出是一个具体的、连续变化的数字。
  • 我们本章的实战案例,就属于监督学习中的分类任务。
2.2.2 无监督学习 (Unsupervised Learning):自己找规律

与监督学习相反,无监督学习的训练数据没有任何标签。机器需要自己去探索数据内部隐藏的结构和模式。

  • 直观比喻:就像一位生物学家来到一个全新的星球,面对成千上万种前所未见的生物(无标签数据)。他没有任何参考书,只能通过观察这些生物的外形、习性、大小等特征,将它们自发地分成不同的“物种”(聚类)。
  • 典型任务
    • 聚类 (Clustering):将相似的数据点分到同一个“簇”中。
      • 例子:根据用户的购买历史,将用户分成不同的群体(如“高价值用户”、“价格敏感用户”),以便进行精准营销。
    • 降维 (Dimensionality Reduction):在保留主要信息的前提下,减少数据的特征数量。
      • 例子:将一个包含500个指标的复杂用户画像,压缩成几个核心维度(如“购买力”、“活跃度”),便于分析和可视化。
2.2.3 强化学习 (Reinforcement Learning):在试错中成长

强化学习是一种独特的范式,它不直接使用“数据”,而是让一个**智能体(Agent)在一个环境(Environment)**中行动,通过与环境的互动来学习。

  • 直观比喻:就像训练一只宠物。你希望它学会“坐下”这个动作。
    • 智能体:你的宠物狗。
    • 环境:你的客厅。
    • 行动 (Action):它可能选择摇尾巴、跳跃或者真的坐下了。
    • 奖励 (Reward):如果它碰巧做出了“坐下”的动作,你就立刻给它一块零食(正奖励)。如果它做了其他动作,你就不给奖励(或轻微的惩罚)。
    • 通过不断的“尝试-反馈”,宠物狗会逐渐明白,“坐下”这个动作能够带来最大的“奖励”,于是它就学会了。AlphaGo下围棋,就是强化学习最著名的应用。
  • 典型任务
    • 游戏AI(如围棋、星际争霸)、机器人控制、自动驾驶决策等。

下图总结了这三种学习范式的核心区别:

graph TDsubgraph Supervised [监督学习]direction LRA[带标签的数据<br/>(X, Y)] --> B[学习从X到Y的映射<br/>f(X) ≈ Y]endsubgraph Unsupervised [无监督学习]direction LRC[无标签的数据<br/>(X)] --> D[发现数据X中的结构<br/>例如:聚类, 降维]endsubgraph Reinforcement [强化学习]direction LRE[智能体 (Agent)] -- 行动 (Action) --> F[环境 (Environment)]F -- 状态 (State), 奖励 (Reward) --> Eend

2.3 按图索骥:一个完整的机器学习项目流程

无论任务多复杂,一个标准的机器学习项目通常都遵循一个固定的流程。这就像是我们的“攻略地图”,指导我们一步步从原始数据走向最终的模型。

graph TDA[1. 问题定义<br/>(明确业务目标)] --> B[2. 数据收集<br/>(获取原始数据)];B --> C[3. 数据预处理与探索<br/>(清洗, 转换, 可视化)];C --> D[4. 特征工程<br/>(选择/创造好的特征)];D --> E[5. 模型选择与训练<br/>(切分数据集, 训练模型)];E --> F[6. 模型评估<br/>(在测试集上评估性能)];F -- 性能不佳 --> E;F -- 性能达标 --> G[7. 模型部署与监控<br/>(上线应用, 持续观察)];
  1. 问题定义:我们要解决什么问题?是分类还是回归?我们的成功标准是什么?
  2. 数据收集:从数据库、文件、API等来源获取数据。
  3. 数据预处理:这是最耗时但至关重要的一步。包括处理缺失值、转换数据类型、处理异常值等。
  4. 特征工程:选择对模型预测最有帮助的特征,或者从现有特征中创造出新的、更有用的特征。
  5. 模型选择与训练:根据问题类型选择合适的模型(如决策树、逻辑回归等)。关键一步是将数据分成训练集(Training Set)和测试集(Test Set)。我们用训练集来“教”模型,用测试集来模拟“期末考试”,检验模型的泛化能力。
  6. 模型评估:使用精确率、召回率、准确率等指标来客观地评价模型在测试集上的表现。如果表现不佳,我们需要回到第4或第5步,调整特征或更换模型。
  7. 模型部署:当模型性能达标后,将其集成到实际的应用中去,并持续监控其表现。

2.4 实战:用Scikit-learn构建你的第一个分类器

理论讲了这么多,是时候动手了!我们将使用Python中最著名的通用机器学习库Scikit-learn,来解决一个经典的分类问题:鸢尾花(Iris)分类

场景
鸢尾花有三个不同的亚种(Setosa, Versicolour, Virginica),它们的花萼(sepal)和花瓣(petal)的长宽有较为明显的区别。我们的任务是,构建一个模型,仅根据一朵鸢尾花的花萼和花瓣的测量数据,就能自动判断出它属于哪个亚种。

代码实战

# --- 1. 导入必要的库 ---
# 从sklearn.datasets中导入load_iris函数,用于加载鸢尾花数据集
from sklearn.datasets import load_iris
# 从sklearn.model_selection中导入train_test_split,用于切分数据集
from sklearn.model_selection import train_test_split
# 从sklearn.tree中导入DecisionTreeClassifier,即决策树分类器
from sklearn.tree import DecisionTreeClassifier
# 从sklearn.metrics中导入accuracy_score,用于计算分类准确率
from sklearn.metrics import accuracy_score
import pandas as pd # 导入pandas用于数据展示# --- 2. 加载并探索数据 ---
# 加载数据集
iris = load_iris()
X = iris.data # X是特征数据,一个[150x4]的numpy数组,150个样本,4个特征
y = iris.target # y是标签数据,一个长度为150的numpy数组,代表每个样本的类别# 为了方便观察,我们把数据转换成Pandas DataFrame
df = pd.DataFrame(data=X, columns=iris.feature_names)
df['species'] = y # 添加物种标签列
df['species'] = df['species'].map({0: 'setosa', 1: 'versicolor', 2: 'virginica'}) # 将数字标签映射为物种名print("数据集前5行:")
print(df.head())
print("\n数据集基本信息:")
df.info()# --- 3. 划分训练集和测试集 ---
# 这是机器学习中至关重要的一步!
# train_test_split会将X和y按照一定比例(我们这里是80%训练,20%测试)随机打乱并切分
# random_state=42 是为了保证每次切分的结果都一样,便于复现实验
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)print(f"\n训练集大小: {X_train.shape[0]} 个样本")
print(f"测试集大小: {X_test.shape[0]} 个样本")# --- 4. 选择模型并进行训练 ---
# 我们选择一个简单而直观的模型:决策树
# 创建一个决策树分类器实例(对象)
model = DecisionTreeClassifier(random_state=42)# 使用.fit()方法,在训练数据上“训练”模型
# 这个过程就是我们在2.1节中比喻的“调音师调整旋钮”的过程
model.fit(X_train, y_train)print("\n模型训练完成!")# --- 5. 在测试集上进行预测 ---
# 模型训练好后,我们用它来对“从未见过”的测试集X_test进行预测
y_pred = model.predict(X_test)print("\n模型在测试集上的预测结果:", y_pred)
print("测试集的真实标签:", y_test)# --- 6. 评估模型性能 ---
# 使用accuracy_score来比较预测结果和真实标签,计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"\n模型在测试集上的准确率是: {accuracy:.2f}") # .2f表示保留两位小数# --- 7. 使用模型进行全新预测 ---
# 假设我们在野外采到一朵新的鸢尾花,测量了它的数据
# 花萼长5.0cm, 宽3.5cm; 花瓣长1.5cm, 宽0.3cm
new_flower_data = [[5.0, 3.5, 1.5, 0.3]]# 使用训练好的模型进行预测
prediction = model.predict(new_flower_data)
predicted_species_index = prediction[0]
predicted_species_name = iris.target_names[predicted_species_index]print(f"\n对全新数据的预测结果: 类别索引 {predicted_species_index}, 物种名 '{predicted_species_name}'")

预期输出:

数据集前5行:sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm) species
0                5.1               3.5                1.4               0.2  setosa
1                4.9               3.0                1.4               0.2  setosa
2                4.7               3.2                1.3               0.2  setosa
3                4.6               3.1                1.5               0.2  setosa
4                5.0               3.6                1.4               0.2  setosa数据集基本信息:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150 entries, 0 to 149
Data columns (total 5 columns):#   Column             Non-Null Count  Dtype  
---  ------             --------------  -----  0   sepal length (cm)  150 non-null    float641   sepal width (cm)   150 non-null    float642   petal length (cm)  150 non-null    float643   petal width (cm)   150 non-null    float644   species            150 non-null    object 
dtypes: float64(4), object(1)
memory usage: 6.0+ KB训练集大小: 120 个样本
测试集大小: 30 个样本模型训练完成!模型在测试集上的预测结果: [1 0 2 1 1 0 1 2 1 1 2 0 0 0 0 1 2 1 1 2 0 2 0 2 2 2 2 2 0 0]
测试集的真实标签: [1 0 2 1 1 0 1 2 1 1 2 0 0 0 0 1 2 1 1 2 0 2 0 2 2 2 2 2 0 0]模型在测试集上的准确率是: 1.00对全新数据的预测结果: 类别索引 0, 物种名 'setosa'

Q&A: 你可能会问……

  • Q: 为什么测试集准确率能达到1.00(100%)?是不是太理想了?
  • A: 问得好!是的,这确实非常理想。主要原因是鸢尾花数据集是一个非常“干净”和简单的“教学”数据集,不同类别之间的界限很分明。在真实的、复杂的业务场景中,模型准确率几乎不可能达到100%,通常能达到80%-95%就已经非常优秀了。
  • Q: random_state=42是什么意思?42有什么特殊含义吗?
  • A: random_state是一个用于固定随机数生成器种子的参数。在机器学习中,很多操作(如切分数据、初始化模型参数)都带有随机性。设置一个固定的random_state(比如42)可以保证我们每次运行代码时,这些随机操作的结果都是完全一样的,这对于调试和复现实验结果至关重要。数字42本身没有任何特殊含义,它只是一个社区中常用的约定,源于科幻小说《银河系漫游指南》。你可以换成任何其他整数。

3. 总结与预告

在本章中,我们正式推开了机器学习的大门。我们不再仅仅是数据的“搬运工”,而是成为了能够赋予机器“学习”能力的“训练师”。

本章核心要点

  • 机器学习的核心:不是编写规则,而是让模型通过训练,从数据中自动学习将输入映射到输出的规律(参数)。
  • 三大范式
    • 监督学习:用带标签的数据进行训练,解决分类回归问题。(有老师教)
    • 无监督学习:用无标签的数据进行训练,解决聚类降维问题。(靠自学)
    • 强化学习:通过与环境的互动奖励来学习最佳策略。(在试错中成长)
  • 标准流程:一个成功的机器学习项目需要经历问题定义、数据处理、模型训练、评估和部署等一系列规范化步骤。
  • Scikit-learn初体验:我们利用这个强大的库,完整地走完了一个分类任务的流程,成功训练了一个能识别鸢尾花种类的决策树模型。

我们今天学习的决策树,是一种经典的机器学习模型。但是,它的能力是有限的。当面对像图像、声音、文本这样极其复杂的数据时,单个决策树就显得力不从心了。我们需要一种更强大、更灵活、更能捕捉数据深层复杂模式的模型结构。

这,正是下一章**《“脑细胞”的模拟:神经网络与深度学习入门》将要为我们揭示的。我们将深入探索模仿人类大脑神经元连接方式而构建的人工神经网络**,理解它是如何工作的,并亲手用代码搭建我们的第一个“迷你大脑”。这将是我们通往理解大语言模型的关键一步。


4. 课后练习

  1. 概念辨析:请用你自己的话,分别解释“分类”和“回归”的根本区别,并各举一个你在生活中遇到的例子(不能是本章已有的例子)。
  2. 代码修改:请修改本章的Scikit-learn实战代码。将模型从DecisionTreeClassifier更换为另一种经典的分类模型KNeighborsClassifier(K-近邻分类器)。你需要:
    • sklearn.neighbors中导入KNeighborsClassifier
    • 创建它的实例 model = KNeighborsClassifier(n_neighbors=3)
    • 重新训练并评估模型,看看准确率有什么变化。
  3. 思考题:在划分训练集和测试集时,我们遵循了“用训练集训练,用测试集评估”的原则。为什么我们不能用测试集的数据来训练模型?如果这么做了,会对模型评估结果产生什么影响?(这个概念非常重要,被称为“数据泄露”)

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

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

相关文章

Java调用Ollama(curl方式)

1. 安装Ollama Search 2. 调用 相关依赖 <dependencies><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.14</version></dependency><dependency>&…

nodejs koa框架使用

1: KOA 是express 打造的下一代web 开发框架提供更小更强的的核心功能&#xff0c;通过Promise 、async/await 进行异步编程&#xff0c;koa 可以不使用回调&#xff0c;解决了回调地狱的问题 blueBird 是nodejs 最出名的Primise 实现&#xff0c;除了实现标准的promise 之外&a…

2025年图像处理与光学国际会议(ICIPO 2025)

2025年图像处理与光学国际会议&#xff08;ICIPO 2025&#xff09; 2025 International Conference on Image Processing and Optics一、大会信息会议简称&#xff1a;ICIPO 2025 大会地点&#xff1a;中国北京 审稿通知&#xff1a;投稿后2-3日内通知 投稿邮箱&#xff1a;iac…

Kubernetes 构建高可用、高性能 Redis 集群

k8s下搭建Redis高可用1. 部署redis服务创建ConfigMap创建 Redis创建 k8s 集群外部2. 创建 Redis 集群自动创建 redis 集群手动创建 redis 集群验证集群状态3. 集群功能测试压力测试故障切换测试4. 安装管理客户端编辑资源清单部署 RedisInsight控制台初始化控制台概览实战环境使…

文件IO的基础操作

Java针对文件进行的操作:文件系统操作,File类(file类指定的路径,可以是一个不存在的文件)文件内容操作 : 流对象分为两类(1)字节流 以字节为基本的读写单位的 二进制文件 InputStream OutputStream(2)字符流 以字符为基本的读写单位的 …

【模版匹配】基于深度学习

基于深度学习的模版匹配 概述 本报告整理了2024-2025年最新的、可直接使用的模板匹配相关论文、方法和开源代码实现。所有方法都提供了完整的代码实现和预训练模型&#xff0c;可以直接应用到实际项目中。 一、轻量级现代模板匹配框架 1.1 UMatcher - 4M参数的紧凑型模板匹…

CMake进阶:Ninja环境搭建与加速项目构建

目录 1.引入Ninja的原因 2.Ninja 环境搭建&#xff08;跨平台&#xff09; 2.1.Linux系统安装 2.2.macOS 系统 2.3.Windows 系统 2.4.源码编译安装&#xff08;通用方案&#xff09; 3.Ninja 与构建系统配合&#xff1a;以 CMake 为例 4.加速构建的关键技巧 5.Ninja 与…

开发避坑指南(35):mybaits if标签test条件判断等号=解析异常解决方案

异常信息 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: The expression orderInfo.idList evaluated to a null value.报错语句 <if test"orderInfo.queryFlag ! null and orderInfo.queryFlag sett…

GitCode 疑难问题诊疗:全面指南与解决方案

引言 在软件开发的动态领域中&#xff0c;GitCode 作为一款强大的分布式版本控制系统&#xff0c;已然成为团队协作与项目管理的基石。它赋予开发者高效管理代码版本、轻松实现并行开发以及顺畅协同合作的能力。然而&#xff0c;如同任何复杂的技术工具&#xff0c;在 GitCode…

使用 JS 渲染页面并导出为PDF 常见问题与修复

本文直击两个最常见的导出痛点&#xff0c;并给出可直接落地的诊断 修复方案&#xff08;适用于 html2canvas jsPDF ECharts/自绘 canvas 场景&#xff09;。 问题清单 问题 A&#xff1a;导出后图表模糊&#xff0c;线条与文字不清晰&#xff08;低分辨率&#xff09;。问题…

【Java后端】【可直接落地的 Redis 分布式锁实现】

可直接落地的 Redis 分布式锁实现&#xff1a;包含最小可用版、生产可用版&#xff08;带 Lua 原子解锁、续期“看门狗”、自旋等待、可重入&#xff09;、以及基于注解AOP 的无侵入用法&#xff0c;最后还给出 Redisson 方案对比与踩坑清单。一、设计目标与约束 获取锁&#x…

数据结构 -- 链表--双向链表的特点、操作函数

双向链表的操作函数DouLink.c#include "DouLink.h" #include <stdio.h> #include <stdlib.h> #include <string.h>/*** brief 创建一个空的双向链表* * 动态分配双向链表管理结构的内存&#xff0c;并初始化头指针和节点计数* * return 成功返回指…

Wireshark获取数据传输的码元速率

一、Wireshark的物理层参数 Wireshark主界面可以看到数据发送时刻和长度&#xff1a; 这个时刻是Wireshark完整获取数据包的时刻&#xff0c;实际上就是结束时刻。 需要知道的是&#xff1a; Wireshark工作在数据链路层及以上&#xff0c;它能解码 以太网帧 / IP 包 / TCP…

11.1.3 完善注册登录,实现文件上传和展示

1、完善注册/登录 1. 涉及的数据库表单&#xff1a;user_info 2. 引用MySQL线程池&#xff0c;Redis线程池 3. 完善注册功能 4. 完善登录功能 2.1 涉及的数据库表单&#xff1a;user_info 重新创建数据库 #创建数据库 DROP DATABASE IF EXISTS 0voice_tuchuang;CREATE D…

【Linux文件系统】目录结构

有没有刚进入Linux世界时&#xff0c;对着黑乎乎的终端&#xff0c;输入一个 ls / 后&#xff0c;看着蹦出来的一堆名字 like bin, etc, usr&#xff0c;感觉一头雾水&#xff0c;像是在看天书&#xff1f; 别担心&#xff0c;你不是一个人。Linux的文件系统就像一个超级有条理…

螺旋槽曲面方程的数学建模与偏导数求解

螺旋槽曲面的数学描述 在钻头设计和机械加工领域,螺旋槽的几何建模至关重要。螺旋槽通常由径向截形绕轴做螺旋运动形成,其数学模型可通过参数方程和隐函数方程两种方式描述。 设螺旋槽的径向截形方程为: y=f(z)y = f(z)y=f(z) x=xcx = x_cx=xc​ 其中 xcx_cxc​ 为常数,…

线性回归:机器学习中的基石

在机器学习的众多算法中&#xff0c;线性回归无疑是最基础也是最常被提及的一种。它不仅在统计学中占有重要地位&#xff0c;而且在预测分析和数据建模中也发挥着关键作用。本文将深入探讨线性回归的基本概念、评估指标以及在实际问题中的应用&#xff0c;并通过一个模拟的气象…

编程刷题-资料分发1 图论/DFS

P2097 资料分发 1 题目描述 有一些电脑&#xff0c;一部分电脑有双向数据线连接。 如果一个电脑得到数据&#xff0c;它可以传送到的电脑都可以得到数据。 现在&#xff0c;你有这个数据&#xff0c;问你至少将其输入几台电脑&#xff0c;才能使所有电脑得到数据。 输入格式 第…

RabbitMQ:延时消息(死信交换机、延迟消息插件)

目录一、死信交换机【不推荐】二、延迟消息插件【推荐】2.1 安装插件【Linux】2.2 安装插件【Windows】2.3 如何使用延时消息&#xff1a;生产者发送消息时指定一个时间&#xff0c;消费者不会立刻收到消息&#xff0c;而是在指定时间之后才收到消息。 延时任务&#xff1a;设置…

动学学深度学习05-深度学习计算

动学学深度学习pytorch 参考地址&#xff1a;https://zh.d2l.ai/ 文章目录动学学深度学习pytorch1-第05章-深度学习计算1. 层&#xff08;Layer&#xff09;与块&#xff08;Block&#xff09;1.1 什么是深度学习中的“层”&#xff1f;1.2 什么是“块”&#xff08;Block&…