机器学习入门基础:机器学习实践

news2024/11/26 4:46:33

目录

  • 7.1 数据集划分

    • 7.1.1 训练集、验证集和测试集划分

    • 7.1.2 交叉验证

    • 7.1.3 不平衡数据处理

  • 7.2 评价指标

    • 7.2.1 回归的评价指标

    • 7.2.2 分类的评价指标

    • 7.2.3 评价指标案例

  • 7.3 正则化、偏差和方差

    • 7.3.1 欠拟合和过拟合

    • 7.3.2 正则化

    • 7.3.3 偏差和方差

  • 参考文献

7.1 数据集划分

7.1.1 训练集、验证集和测试集划分

机器学习的数据,可以划分为训练集、验证集和测试集。

训练集(Training Set):帮助我们训练模型,简单地说就是通过训练集的数据让我们确定拟合曲线的参数。

验证集(Validation Set):也叫做开发集(Dev Set),用来做模型选择(Model Selection),即做模型的最终优化及确定的,用来辅助我们的模型的构建,即训练超参数,可选。

测试集(Test Set):为了测试已经训练好的模型的精确度。

我们将数据分成训练集和测试集,通常用70%的数据作为训练集,用剩下30%的数据作为测试集。很重要的一点是训练集和测试集均要含有各种类型的数据,通常我们要对数据进行“洗牌”,然后再分成训练集和测试集。通常我们应该选择一个泛化的模型。我们需要使用交叉验证集来帮助选择模型。 即:使用60%的数据作为训练集,使用 20%的数据作为验证集,使用20%的数据作为测试集,也可以按照70%、10%、20%,这个是比较普遍的划分方式(图7-1)。

378373023698e700dc41879de81fc8dc.png

图7-1 数据集划分

但在现代机器学习中,我们更习惯操作规模大得多的数据集,比如说你有1百万个训练样本,这样分可能更合理,98%作为训练集,1%开发集,1%测试集,因为如果你有1百万个样本,那么1%就是10,000个样本,这对于开发集和测试集来说可能已经够了。所以在现代深度学习时代,有时我们拥有大得多的数据集,所以使用小于20%的比例或者小于30%比例的数据作为开发集和测试集也是合理的。而且因为深度学习算法需要非常多的数据,我们可以看到那些有海量数据集的问题,有更高比例的数据划分到训练集里,那么测试集呢?深度学习的数据这样划分:98%、1%、1% (假设百万条数据)。

7.1.2 交叉验证

在机器学习建模过程中,常见的数据划分方法通常是将数据分为训练集和测试集,测试集是与训练独立的数据,完全不参与训练,用于最终模型的评估。这种做法往往会出现问题:在训练过程中,经常会出现过拟合的问题,模型的泛化能力差,也就是说模型可以很好的匹配训练数据,却在预测训练集外的数据(测试集)上表现不佳。如果此时就使用测试数据来调整模型参数,就相当于在训练时已知部分测试数据的信息,造成标签信息的泄露,会影响最终评估结果的准确性。通常的做法是在训练数据再中分出一部分作为验证(Validation)数据,用来评估模型的训练效果。

验证数据取自训练数据,但不参与训练,这样可以相对客观的评估模型对于训练集之外数据的匹配程度。模型在验证数据中的评估常用的是交叉验证,主要的交叉验证方式有K折交叉验证和留一法交叉验证。

1.K折交叉验证(K-fold Cross Validation)

K折交叉验证的方式如图7-2所示,主要流程如下:

(1) 将原始数据分成组(K-Fold),将每个子集数据分别做一次验证集,其余的组子集数据作为训练集,这样会得到个模型。

(2) 这个模型分别在验证集中评估结果。

(3) 个模型的误差加和平均就得到交叉验证误差。

87077c01ae36ad62f66e8fb8403ab487.png

图7-2 K折交叉验证方法

交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以作为模型优化的指标使用。

2.留一法交叉验证(leave-one-out Cross Validation,LOO)

留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有个样本,则需要训练次,测试次。当数据集的数量较少时使用留一交叉验证,其原因主要如下:

数据集少,如果像正常一样划分训练集和验证集进行训练,那么可以用于训练的数据本来就少,还被划分出去一部分,这样可以用来训练的数据就更少了。留一法可以充分的利用数据。

因为留一法需要划分次,产生批数据,所以在一轮训练中,要训练出个模型,这样训练时间就大大增加。所以留一法比较适合训练集较少的场景。

留一法计算最繁琐,但样本利用率最高。适合于小样本的情况。

7.1.3 不平衡数据处理

数据不平衡是指数据集中各类样本数量不均衡的情况,比如正负样本比例为1比10,就属于数据不平衡。

常用不平衡处理方法有采样和代价敏感学习。

1.采样

采样主要分为欠采样(Down-Sampling)、过采样(Over-Sampling)方法。

  1. 欠采样

欠采样抛弃大部分比例较高的样本。图7-3中,因为正样本比例较高,因此抛弃了大部分正样本数据,从而弱化了中间部分正样本的影响,可能会造成偏差很大的模型。当然,如果数据不平衡但两个类别基数都很大,或许影响不大。

7b5491aebd90e4791e491670027d4560.png

图7-3 欠采样的方法图例(○代表正样本,×代表负样本) 2) 过采样

过采样针对少数类样本提供精确副本, 由于精确副本的重复采样, 可能会导致严重的过拟合。图7-4中,针对少数类样本,进行了重复采样,达到正负样本平衡的目的。

0df40a74d3bd14fe0fd0d656e6b473a2.png

图7-4 过采样的方法图例(○代表正样本,×代表负样本)

为解决过采样的重复采样问题,可以使用SMOTE算法。

SMOTE(Synthetic Minority Over-sampling Technique)算法是过采样中比较常用的一种。算法的思想是合成新的少数类样本,而不是简单地复制样本。算法过程如图7-5:

6a45b9612a6d1a2b51f3ca9f5a9989e6.png


8c7a249598d031a18257cc6e393b0960.png

(a) 原始样本
(b) 选定少类样本

f379389e1c9ac288e4eb984b1c3d4335.png


c652d303a17ff29835d1ec00c2d62605.png

(c) 找到靠近的个少类样本
(d) 增加样本

图 7-5 SMOTE算法工作流程

假设为某样本的集合,其中,(图 7-5(a))。首先设置过采样比率,通过该采样比率为每一个寻找个同一类别的最近邻(图 7-5(b)),然后从选出个样本(图 7-5(c)),和样本使用下面的公式的计算方法合成个新样本(图 7-5(d))。最后将该算法生成的新样本添加到集合。新样本生成方法如下面的公式。

其中,,为过采样之后的样本,代表的是的个同类的最近邻,之间的随机数。

2.代价敏感学习

代价敏感学习是指为不同类别的样本提供不同的权重,从而让机器学习模型进行学习的一种方法。

比如风控或者入侵检测,这两类任务都具有严重的数据不平衡问题,可以在算法学习的时候,为少类样本设置更高的学习权重,从而让算法更加专注于少类样本的分类情况,提高对少类样本分类的查全率,但是也会将很多多类样本分类为少类样本,降低少类样本分类的查准率。

7.2 评价指标

7.2.1 回归的评价指标

回归的评价指标主要有:均方误差(Mean Square Error,MSE)、平均绝对误差(Mean Absolute Error,MAE)、均方根误差RMSE(Root Mean Square Error,RMSE)、R方 [R_Squared(R2 score)]。

以上评价指标已经在4.5(回归的评价指标)这节进行讲解,本节不再重复。

7.2.2 分类的评价指标

在分类算法中,针对一个二分类问题,即将实例分成正类(Positive)或负类(Negative),在实际分类中会出现以下四种情况:

  1. 正确肯定(True Positive,TP):预测为真,实际为真

  2. 正确否定(True Negative,TN):预测为假,实际为假

  3. 错误肯定(False Positive,FP):预测为真,实际为假

  4. 错误否定(False Negative,FN):预测为假,实际为真

如图7-6所示,这是一个混淆矩阵,混淆矩阵的每一行是样本的预测值,每一列是样本的真实值:

注意:有些教材把行列反一下,即每一列是样本的预测值,每一行是样本的真实值。



预测值


PositiveNegtive
实际值PositiveTPFN

NegtiveFPTN
图7-6混 淆矩阵

分类的主要评价指标:

1.准确率(Accuracy)

准确率是分类问题中最简单也是最直观的评价指标,准确率是指分类正确的样本占总样本个数的比例,是针对所有样本的统计量。

2.精准率(Precision)

又称为查准率,代表对正样本结果的预测准确程度,具体公式如下:

精准率的含义就是在预测为正样本的结果中,有多少是准确的。这个指标比较谨慎,分类阈值较高。

3.召回率(Recall)

又称为查全率,是针对原始样本而言的一个评价指标。在实际为正样本中,被预测为正样本所占的百分比。具体公式如下:

召回率也是对部分样本的统计量,侧重对真实的正类样本的统计。

4.F1 score

F1 score是精准率和召回率的调和平均值,它定义为:

F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0。

5.ROC曲线

ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。ROC曲线的横轴为False Positive Rate,也叫伪阳率(FPR),即预测错误且实际分类为负的数量与所有负样本数量的比例,纵轴为True Positive Rate,也叫真阳率(TPR),即预测正确且实际分类为正的数量与所有正样本的数量的比例。

12357ea0b4849e0de3661e08269efb0c.png

图7-7 ROC曲线样例

如何从ROC曲线看分类效果的好坏?ROC曲线越靠近左上角,效果越好。从图7-7中可以看出,越好的分类效果,曲线下的面积越大,曲线越靠近左上角。

6.AUC

AUC的全称是(Area Under ROC Curve),也就是ROC曲线下方的面积,AUC的范围是0到1,AUC越大,代表模型的性能越好。

7.P-R曲线

P-R曲线是描述精确率和召回率变化的曲线。P-R曲线刻画查准率和查全率(召回率)之间的关系,横轴为查全率,纵轴为查准率,查准率和查全率是一对矛盾的度量,一般来说,查准率高时,查全率往往偏低,查全率高时,查准率往往偏低。

57b180e402607b492cdc0229a15bf088.png

图7-8 P-R曲线样例

模型与坐标轴围成的面积越大,则模型的性能越好。从图7-8中可以直接看出来。

7.2.3 评价指标案例

这里有一个评价指标的案例:假设有100张照片,其中,猫的照片有60张,狗的照片是40张。

输入这100张照片进行二分类识别,找出这100张照片中的所有的猫。识别结果的混淆矩阵见表7-1:

表7-1 识别结果的混淆矩阵



预测值


PositiveNegtive
实际值PositiveTP = 40FN = 20

NegtiveFP = 10TN = 30

根据分类结果的混淆矩阵,可以得到分类结果的表格(表7-2)

表7-2分类结果

项目符号猫狗的例子
识别出的正例TP + FP40+10=50
识别出的负例TN + FN30+20=50
总识别样本数TP + FP + TN + FN50+50=100
识别对了的正例与负例TP + TN40+30=70
识别错了的正例与负例FP + FN10+20=30
实际总正例数量TP + FN40+20=60
实际总负例数量TN + FP30+10=40

根据混淆矩阵,可以求得准确率、精确率、召回率等指标:

1.准确率

由于:,所有样本数量为100,则准确率为:

2.精确率

根据公式:

由于:,,则精确率为:

3.召回率

由于:,。则召回率为:

7.3 正则化、偏差和方差

7.3.1 欠拟合和过拟合

在4.4节中,已经讲解过过拟合和欠拟合问题,本章仅对如何处理过拟合和欠拟合问题进行总结。

1.过拟合的处理

通常有四种方法:

  1. 获得更多的训练数据

使用更多的训练数据是解决过拟合问题最有效的手段,因为更多的样本能够让模型学习到更多更有效的特征,减小噪声的影响。

  1. 降维

即丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)。降维将在后续章节中进行讲解。

  1. 正则化

正则化(Regularization)的技术,保留所有的特征,但是减少参数的大小,它可以改善或者减少过拟合问题。

  1. 集成学习方法

集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险。集成学习将在后续章节进行讲解。

2.欠拟合的处理

通常有三种方法:

  1. 添加新特征

当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘组合特征等新的特征,往往能够取得更好的效果。

  1. 增加模型复杂度

简单模型的学习能力较差,通过增加模型的复杂度可以使模型拥有更强的拟合能力。例如,在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。

  1. 减小正则化系数

正则化是用来防止过拟合的,但当模型出现欠拟合现象时,则需要有针对性地减小正则化系数。

7.3.2 正则化

在我们在训练模型的过程中,一般会使用一些正则化方法来防止过拟合。但是我们可能会使用的正则化的程度太高或太小了,即我们在选择的值时也需要思考。图7-19可以看出,只有选择合适的正则化系数,才能得到合适的模型。

eb67d065004fa37a9dba5e8bc01af96b.png

图7-9 欠拟合模型(左)、合适的模型(中)和过拟合模型(右)

1.L1正则化和L2正则化

L1正则化和L2正则化的作用已经在4.4节中进行讲解,本节对两者进行总结。

L1正则化是指在损失函数中加入权值向量的绝对值之和,L1正则化的功能是使权重稀疏:起到了特征选择的作用。

设:为模型的代价函数,为参数,为样本数,为特征数,为参数,代表预测值,为真实值,为正则化系数。则:

L1正则化的公式:

在损失函数中加入权值向量的平方和,L2的功能是使权重平滑,起到了减少过拟合的作用。

L2正则化的公式:

2.Dropout正则化

Dropout的功能类似于L2正则化,与L2正则化的同的是,被应用的方式不同,Dropout也会有所不同,甚至更适用于不同的输入范围。常见的Dropout正则化,随机关闭一半的神经元,保留一半的神经元。

按照Hinton的原话,他的灵感来自于银行业务:

“我去银行办理业务。柜员不停的换人,于是我问其中给的一个人这是为什么。他说他不知道,但他们经常换来换去的。我猜想,银行工作人员想要成功欺诈银行,他们之间要互相合作才行,这让我意识到,在每个样本中随机删除不同的部分神经元,可以阻止他们的阴谋,因此可以降低过拟合。”

9566cf151bcd72a8371898baa354f3fd.png

图7-10 Dropout正则化,随机关掉一定比例的神经元

3.Early stopping

Early stopping代表提早停止训练神经网络,Early stopping的优点是,只运行一次梯度下降,你可以找出的较小值,中间值和较大值,而无需尝试正则化超级参数的很多值。

fa381b4f0f7130c8945a8ff784ba3efe.jpeg

图7-11 Early stopping方法的验证集误差和训练集误差

从图7-11中可以看出Early stopping方法的训练集误差一直在减小,而验证集误差达到一个最小值后就不再减小,反而开始增大,而Early stopping方法使验证集误差最小(图中的竖线位置)的时候停止训练。

4.数据增强(Data augmentation)

大部分的计算机视觉任务使用很多的数据,所以数据增强是经常使用的一种技巧来提高计算机视觉系统的表现。计算机视觉任务的数据增强通常以下方法实现:

(1) 随意翻转、镜像。

(2) 随意裁剪。

(3) 扭曲变形图片。

(4) 颜色转换,然后给R、G和B三个通道上加上不同的失真值。产生大量的样本,进行数据增强。

18d168b92de468730a1843cfca38700f.png

图7-12 通过随意翻转和裁剪、扭曲变形图片等方法进行数据增强

7.3.3 偏差和方差

当运行一个机器学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差比较大,要么是方差比较大。换句话说,出现的情况要么是欠拟合,要么是过拟合问题。

1.方差(Variance)

方差描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。

方差越大,数据的分布越分散,如图7-11第一行所示,左边的图是低方差低偏差,这是最理想的结果,右边的图高方差低。

2.偏差(Bias)

偏差描述的是预测值(估计值)的期望与真实值之间的差距。

偏差越大,越偏离真实数据,如图7-13第二行所示,左边的图是低方差高偏差,右边的图高方差高偏差,这个是最差的结果。

db57645da6ac45b993d4fd54741be3fb.png

图7-13偏差与方差

在我们在训练模型的过程中,一般会使用一些正则化方法来防止过拟合,但是如何选择合适的正则化系数,从而在偏差和方差之间取得平衡。

3.解决偏差和方差问题的方法

欠拟合,对应偏差高。显然,欠拟合就是本身拟合训练数据都不行,也就是训练误差也高,预测的值离真实值的距离就偏高。用模型复杂度来说,就是模型复杂度不够。

过拟合,对应方差高。也就是训练得到的模型太拟合训练数据了。不同的训练数据训练的模型效果波动很大。泛化能力弱。用模型复杂度来说,就是模型太复杂了。

70bc04ed1de0b5e2e7176f3d3bac1100.png

图7-14 模型复杂度与误差 

图7-14是模型复杂度与误差的关系,一般来说,随着模型复杂度的增加,方差会逐渐增大,偏差会逐渐减小,在虚线处,差不多是模型复杂度的最恰当的选择,其“偏差”和“方差”也都适度,才能”适度拟合”。

解决偏差和方差的方法通常有以下6种:

(1) 获得更多的训练样本——解决高方差。

(2) 尝试减少特征的数量——解决高方差。

(3) 尝试获得更多的特征——解决高偏差。

(4) 尝试增加多项式特征——解决高偏差。

(5) 尝试减少正则化系数——解决高偏差。

(6) 尝试增加正则化系数——解决高方差。

参考文献

[1] Andrew Ng. Machine Learning[EB/OL]. StanfordUniversity,2014. https://www.coursera.org/course/ml

[2] Peter Harrington.机器学习实战[M]. 北京:人民邮电出版社,2013.

[3] MICHELLE T. M., Machine Learning[M]. New York: McGraw-Hill Companies,Inc,1997.

[4] Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning[M]. New York: Springer,2001.

[5] CHRISTOPHER M. BISHOP. Pattern Recognition and Machine Learning[M]. New York: Springer,2006.

[6] Kohavi R.,Scaling up the accuracy of naïve Bayes classifiers: A decision-tree hybrid[C]// Proceedings of the 2nd International Conference on Knowledge Discovery and Data Mining (KDD), Portland, OR, 202-207, 1996.

[7] 李航. 统计学习方法[M]. 北京: 清华大学出版社,2019.

[8] CHAWLA N V, BOWYER K W, HALL L O, et al. SMOTE: Synthetic Minority Over-sampling Technique[J]. Journal of Artificial Intelligence Research, 2002, 16: 321–357.

本文为黄海广老师的机器学习入门基础的第七章原文。

购书连接:item.jd.com/13935772.html

7de1e9a4878fc8976f841cba0df9676a.png

教师可以向黄海广老师申请教学ppt原版(邮件:haiguang2000@wzu.edu.cn)

代码地址:https://github.com/fengdu78/WZU-machine-learning-course

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

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

相关文章

通过python采集1688app商品详情数据,1688app商品详情数据接口,1688API接口

要通过Python采集1688app商品详情数据,你可以使用以下步骤: 安装必要的 Python 模块:requests, BeautifulSoup4 和 lxml。使用 requests 模块发送 HTTP 请求获取网站 HTML 内容。使用 BeautifulSoup4 模块解析 HTML 页面并提取所需的数据。编…

主路由设置静态路由后,能ping通,但无法访问网页服务和ssh等

主路由设置静态路由后,能ping通,但无法访问网页服务和ssh等 静态路由 主路由是istoreos软路由, AP使用华为AX3路由器做ap和wifi, 二级路由使用蒲公英路由X5 前置条件:已在主路由设置静态路由 静态路由 问 主路由设置静…

项目管理新手常见误区揭秘~

点击上方 "JavaEdge"关注, 星标或置顶一起成长 后台回复“面试”有惊喜礼包! 这是一个纷杂而无规则的世界,越想忘掉的事情,越难忘记。 如何完成新手项目经理的角色转换呢? 成为项目经理前,我做了四五年的“码…

一起看 I/O | Jetpack 新功能一览

作者 / Android 产品经理 Amanda Alexander Android Jetpack 是现代 Android 开发 (Modern Android Development) 的关键组成支柱。Android Jetpack 套件包含超 100 个库、工具及指南,可帮助开发者遵循最佳实践、减少样板代码,并编写可在各种 Android 版…

chatgpt赋能python:Python修改配置文件:实现自动配置与简化运维

Python修改配置文件:实现自动配置与简化运维 介绍 配置文件是软件开发中不可缺少的一部分,它不仅包含应用程序的基本设置,还提供了一种简单的方式来管理这些设置。如何有效地修改配置文件已经成为了每个开发者必备的技能之一,而…

这8个NumPy函数可以解决90%的常见问题

NumPy是一个用于科学计算和数据分析的Python库,也是机器学习的支柱。可以说NumPy奠定了Python在机器学习中的地位。NumPy提供了一个强大的多维数组对象,以及广泛的数学函数,可以对大型数据集进行有效的操作。这里的“大”是指数百万行。 Nump…

MGR网络抖动问题分析和group_replication_unreachable_majority_timeout等参数分析

导言 本文主要从测试的角度来阐明group_replication_unreachable_majority_timeout和group_replication_member_expel_timeout参数对集群网络分区的影响,首先这里放一张大图,为多年前学习MGR的时候留下的,也就是这两个参数对集群的影响&…

穷途末路的阿里中台

观点| Mr.K 主笔| Wendy.L 来源| 技术领导力(ID:jishulingdaoli) 对于关注K哥公众号多年的朋友来说,“中台”早就是老生常谈的东西了,如果你还不知道它是什么,可以看看之前的中台文章先恶补一下。 关于中台,这些年翻…

chatgpt赋能python:Python倒序range的完整指南

Python倒序range的完整指南 Python是一种高级编程语言,很多人认为它非常容易学习和使用。其中一个非常有用的功能是range()函数,可以生成数字序列。然而,有时候我们需要以相反的顺序生成这个数字序列,这时候倒序range()函数就派上…

5G NTN技术概述及演进分析(下)

5G NTN因其广泛的服务覆盖能力、应对物理攻击或自然灾害的健壮性和灵活性,在交通、公共安全、电子健康、农业、金融、汽⻋等领域有广泛的应用前景。5G NTN与地面通信的差异主要体现在高时延、广覆盖和卫星的运动等方面,这使得其在传输时延、多普勒频移、…

Ae:蒙版跟踪(含脸部跟踪)

蒙版跟踪,就是通过记录画面上蒙版区域的变化,生成蒙版路径 Mask Path的关键帧。 常用于完成合成中的遮挡关系,或者局部添加动态效果,以及实现人物的脸部特效。 蒙版跟踪 要使用蒙版跟踪器,需要先创建并选中蒙版&#x…

设计模式之~备忘录模式

备忘录(Memento): 备忘录模式(Memento Pattern)又称之为快照模式(Snapshop Pattern)或者令牌模式(Token Pattern)。 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态…

【数据库优化-count()】count()统计行数

目录 1 count(*)为什么性能差? 2 优化count(*)性能 2.1 增加redis缓存 2.2 多线程执行 2.3 减少join的表 3 count的各种用法性能对比 数据库:Mysql8、存储引擎是Innodb。 通常情况下,分页接口一般会查询两次数据库,第一次是…

软考A计划-试题模拟含答案解析-卷十七

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

用ChatGPT写一个数据采集程序

入门教程、案例源码、学习资料、读者群 请访问:python666.cn 大家好,欢迎来到 Crossin的编程教室 ! 上次我们讨论了ChatGPT在辅助编程学习上的一些用法: 如何用ChatGPT学Python 既然ChatGPT可以理解并生成代码,那么自然…

多线程 —— 线程控制

目录 线程控制1 线程创建2 线程等待3 线程终止4 线程分离 pthread_t id && LWP 线程控制 1 线程创建 功能:创建一个新的线程 原型 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void*), void *arg); 参数…

chatgpt赋能python:Python中任取一个数

Python中任取一个数 如果你是一名Python编程爱好者或者是从事相关行业的工程师,你可能会知道Python强大的数学计算能力。Python中自带了诸多数学函数和库,例如NumPy、SciPy、pandas等等,可以帮助我们轻松地完成各种计算任务,包括…

MySQL—存储引擎(上)

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️树高千尺,落叶归根人生不易&…

Ae 脚本:Face Tools 4 脸部工具

Motion Bro 的 AE Face Tools 扩展脚本工具,包含几百种预设,如换脸、换妆、美颜、液化、失真扭曲、面部修饰、蒙板工具、文字跟踪、添加元素、人脸锁定防抖稳定以及遮挡等预设效果,大大扩展了 After Effects 中的人脸跟踪功能。 AE Face Tool…

基于激光雷达和单目视觉融合的SLAM和三维语义重建

文章:SLAM and 3D Semantic Reconstruction Based on the Fusion of Lidar and Monocular Vision 作者:Lu Lou, Yitian Li, Qi Zhang and Hanbing Wei 编辑:点云PCL 欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。…