红色石头Will
个人网站:https://redstonewill.github.io/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
机器学习100天:目录
《机器学习100天》!理论+python!实战真正的从零开始机器学习,循序渐进,适合初学者快速入门和进阶!原创 2022-12-16 23:24:40 · 1280 阅读 · 3 评论
-
机器学习100天(一):001 开发环境搭建
机器学习实战需要编写代码,选择一个好的 IDE 能大大提高我们的开发效率。基于 Python 的广泛使用,我们给大家介绍当前最流行的机器学习开发工具包:Anaconda。原创 2022-12-16 22:39:22 · 903 阅读 · 0 评论 -
机器学习100天(二):002 数据预处理之导入数据集
本期讲的是数据预处理之导入数据集。首先,我们打开 spyder。新建一个 load_data.py 脚本。原创 2022-12-17 10:34:20 · 2539 阅读 · 0 评论 -
机器学习100天(三):003 数据预处理之处理缺失值
机器学习 100 天,今天讲的是:数据预处理-处理缺失值。在上一节,我们导入了数据集,得到特征 X 和标签 y。我们打开 X,发现 index5 样本的‘年龄’和 index3 样本的‘薪资’数值是 NaN。NaN(Not a Number)是计算机科学中数值数据类型的一类值,表示空值可能是由于在样本收集的时候没有统计到该特征。对于 NaN 值,最简单粗暴的做法是直接删除对应的样本,但我们一般不这么做。常见的做法是对 NaN 进行插值,即用该特征的平均值、中值等替代一般来说,平均数是总体均值很好的估原创 2022-12-17 10:43:09 · 543 阅读 · 0 评论 -
机器学习100天(四):004 数据预处理之类别特征编码
但是这种做法有个很大的缺点,0,1,2 在数值上是连续的,它很容易给机器学习模型一个误导,就是这些特征之间存在大小等某种数值上的关系。例如,法国编码为 100,德国编码为 010,韩国编码为 001。无需指定哪一列是类别特征,非常简单。对于标签,因为它是因变量,我们并不希望对它进行 one-hot 编码,只是想把它转换为连续数值,例如 No 转化为 0,Yes 转化为 1。最简单的做法是标签编码,就是直接将类别特征从字符串转换为数字,例如我们直接把法国编码为 0,德国编码为 1,韩国编码为 2。原创 2022-12-17 11:00:45 · 843 阅读 · 0 评论 -
机器学习100天(五):005 数据预处理之划分训练集
在监督式机器学习中,我们一般使用训练集的数据来训练模型,然后把训练好的模型在测试集上进行测试,用测试集上的误差作为最终模型在现实场景中的泛化误差,即真实表现。打开 X_train,因为我们总共有 10 个样本,test_size=0.2,这里 X_train 有 8 个样本,打开 X_test 有 2 个样本。返回的结果中,X_train 表示训练集的 X,X_test 表示测试集的 X,y_train 表示训练集的 y,y_test 表示测试集的 y。下面我们就要对数据集进行划分,划分成训练集和测试集。原创 2022-12-17 12:30:08 · 885 阅读 · 0 评论 -
机器学习100天(六):006 数据预处理之标准化
我们导入模块,实例化一个对象 scaler,直接使用 fit_transform 函数对 X_train 计算均值和标准差,并对 X_train 进行标准化操作。什么是标准化,我们来看标准化的定义:标准化就是将原数据转换为符合均值为 0,标准差为 1 的标准正态分布的新数据。在进行特征标准化之后,在梯度下降的过程中,明显路径更加平缓,收敛速度更快,即右边这张图。在没有进行特征标准化之前,在梯度下降的过程中,走的路径更加的曲折,即左边这张图。这是一个梯度下降算法优化的过程,横坐标和纵坐标分别是两个特征参数,原创 2022-12-17 12:41:02 · 709 阅读 · 0 评论 -
机器学习100天(七):007 简单线性回归理论
在图中,我们可以发现如果把人口当成自变量 X,把房价当成因变量 y 的话,y 与 X 是呈现一种近似线性关系的。这样的话,如果有样本外的数据,得知该地区的人口,我们就可以利用这个模型来预测该地区的房价!横坐标是人口,纵坐标是房价,红色的点就表示每个地区的实际人口与房价信息。是可逆矩阵,简单线性回归里,这个条件一般是满足的。我们把损失函数写成矩阵的形式,并展开得到这个表达式,这里需要一点线性代数的知识。它是 mxn 的矩阵,其中 m 表示样本,我们多加了一列 1,是为了与。,它表示的是这些差值平方的平均数。原创 2022-12-17 14:53:33 · 562 阅读 · 0 评论 -
机器学习100天(八):008 简单线性回归Python实战
机器学习100天,今天讲的是:简单线性回归Python实战——房价预测。上一节课,我们通过引入房价预测的例子,讲解了线性回归的理论知识,以及如何最小化损失函数,来计算最优的参数w。今天我们就使用 Python 来编写一个简单的线性回归程序来构建一个房价预测的模型。原创 2022-12-17 15:30:02 · 691 阅读 · 0 评论 -
机器学习100天(九):009 多项式回归理论
机器学习100天,今天讲的是:多项式回归理论!在前两期视频我们讲解了简单线性回归理论,并解决了一个房价预测的问题,建立了一个房价与地区人口的线性关系。然而,如果数据的分布不是简单的线性关系,又该怎么做呢?原创 2022-12-18 10:36:40 · 568 阅读 · 0 评论 -
机器学习100天(十):010 多项式回归Python实战
机器学习100天,今天讲的是:多项式线性回归Python实战——房价预测。上一节我们介绍了多项式线性回归理论,即构建一个二次多项式来拟合房价与地区人口的关系。今天我们就来编写一个二次多项式回归程序来构建房价预测的模型。我们打开 spyder,创建一个 polynomial_regression.py 文件。原创 2022-12-19 10:25:49 · 1264 阅读 · 0 评论 -
机器学习100天(十一):011 回归模型评估指标
机器学习100天,今天讲的是:线性回归评估指标!原创 2022-12-19 11:30:26 · 567 阅读 · 0 评论 -
机器学习100天(十二):012 回归模型评估指标Python实现
直接从 sklearn.metrics 模块中导入 mean_absolute_error 方法,一行语句直接计算 MAE,将两个参数 y_test 和 y_pred 写在括号里。直接从 sklearn.metrics 模块中导入 mean_squared_error 方法,一行语句直接计算 MSE,将两个参数 y_test 和 y_pred 写在括号里。根据定义,均方根误差就是均方误差的根,这里直接对均方误差求根,就得到了 RMSE。,同样将两个参数 y_test 和 y_pred 写在括号里。原创 2022-12-19 18:04:36 · 1230 阅读 · 0 评论 -
机器学习100天(十三):013 最通俗地理解梯度下降算法
机器学习100天,今天讲的是:最通俗地理解梯度下降算法!原创 2022-12-20 09:42:10 · 390 阅读 · 0 评论 -
机器学习100天(十四):014 梯度下降算法求解线性回归
机器学习100天,今天讲的是:使用梯度下降算法求解线性回归问题。原创 2022-12-20 14:26:13 · 765 阅读 · 0 评论 -
机器学习100天(十五):015 逻辑回归基本原理
机器学习100天,今天讲的是:逻辑回归基本原理。原创 2022-12-21 11:20:22 · 1201 阅读 · 1 评论 -
机器学习100天(十六):016 逻辑回归损失函数
机器学习 100 天,今天讲的是:逻辑回归损失函数。原创 2022-12-21 13:58:56 · 686 阅读 · 0 评论 -
机器学习100天(十七):017 逻辑回归梯度下降
在讲解了逻辑回归的基本原理和损失函数之后,我们来推导逻辑回归模型中参数 w 和 b 的梯度表达式。现在,我们已经完全掌握了逻辑回归中参数的梯度下降更新公式是如何推导出来的了。机器学习 100 天,今天讲的是:逻辑回归-梯度下降!然后,根据这两个公式,我们就可以很容易计算得到。的偏导数带入到梯度下降算法公式中,就能得到。首先,我们根据上面三个式子,分别计算。经过 sigmoid 函数,好了,今天的内容到此结束!原创 2022-12-22 20:53:44 · 823 阅读 · 0 评论 -
机器学习100天(十八):018 逻辑回归Python实战
可以看到随着训练次数增加,分类的直线在不断校正,最终处在了理想的位置,直线上方全部为正类,直线下方全部为负类。自变量 X 有两个特征,一个是收入 Income,一个是年龄 Age,因变量 y 是该这个人是否购买了这件商品。我们打开数据集,可以看到,该数据集统计了 30 个人的基本信息和是否购买了某件商品。最后,我们把 J_history 打印出来,可以看到整体的 loss 值在不断减小,说明我们的训练是成功的。可以看到,蓝色的圆圈表示正类,红色的叉表示负类。m 是样本个数,lr 是学习率。原创 2022-12-22 21:07:18 · 740 阅读 · 0 评论 -
机器学习100天(十九):019 分类模型评价指标-混淆矩阵
机器学习100天,今天讲的是:分类模型评价指标-混淆矩阵。原创 2022-12-29 16:05:17 · 599 阅读 · 0 评论 -
机器学习100天(二十):020 分类模型评价指标-PR曲线
如图中所示,P-R 曲线的 P 就是精确率(也称为查准率),R 就是召回率(也称为查全率)。对于同一个模型,通过调整分类阈值,可以得到不同的 P-R 值。不同的阈值,计算得到不同的 P 值和 R 值,然后将所有不同阈值下的 P-R 坐标点连接起来,就得到了 P-R 曲线。比较两个分类器好坏时,显然是查得又准又全的比较好,也就是说 PR 曲线越往坐标(1,1)的位置靠近越好。也可以通过平衡点(即查准率=查全率的点,P-R 曲线与这条虚线的交点,称为 Break-Even Point,BEP)来判断。原创 2022-12-30 11:08:02 · 1485 阅读 · 0 评论 -
机器学习100天(二十一):021 分类模型评价指标-ROC曲线和AUC
我们知道,分类模型是有一个阈值的,逻辑回归使用 sigmoid 函数,一般默认阈值是 0.5,大于 0.5 判断为正类,小于则为负类。而在实际的应用中,根据具体情况,我们可以采用不同的阈值,例如若更重视精确率,则可选择较大一点的阈值;然后,以假正例率为横坐标,以真正例率为纵坐标,把所有的点连接起来,就得到了右边这张图所示蓝色的曲线。因此,AUC 就是评价一个分类模型的指标,AUC 越大,表示 ROC 曲线越靠近左上角,说明模型越好。经过以上分析,我们可以说,ROC 曲线越靠近左上角,该分类器的性能越好。原创 2022-12-30 11:17:06 · 827 阅读 · 0 评论 -
机器学习100天(二十二):022 分类模型评价指标-Python实现
除了 matplotlib.pyplot 之外,重点需要用到 sklearn.metrics 模块中的 accuracy_score、precision_score、recall_score、f1_score、roc_curve、auc 这些函数。先将真实标签和预测标签作为参数带入到 roc_curve 函数中,得到了假正例率 FPR、真正例率 TPR,还有用于计算 FPR 和 TPR 的决策函数的阈值。可以看到:准确率=0.75,精确率=0.73,召回率=0.80,f1_score=0.76。原创 2023-01-03 11:05:28 · 750 阅读 · 1 评论 -
机器学习100天(二十三):023 欠拟合与过拟合
机器学习100天,今天讲的是欠拟合与过拟合!原创 2023-01-03 13:52:00 · 530 阅读 · 0 评论 -
机器学习100天(二十四):024 L1、L2正则化
机器学习100天,今天讲的是:L1、L2正则化!原创 2023-01-03 14:36:54 · 472 阅读 · 0 评论 -
机器学习100天(二十五):025 L2正则化的Python实现
for 循环结束之后,绘制代价函数 J_history 的变化,然后,作图绘制拟合直线与原始样本的拟合程度。for 循环结束之后,绘制代价函数 J_history 的变化,然后,作图绘制拟合直线与原始样本的拟合程度。可以发现,由于使用了 L2 正则化,拟合直线消除了正弦抖动的干扰,呈现原始数据的一次线性关系。对比未使用 L2 正则化,从权重参数可以看出,使用 L2 正则化之后,高阶参数。可以发现,拟合直线受到了正弦抖动的干扰,呈现高阶特性,模型发生了过拟合。设置为 0.04,值得注意的是,原创 2023-01-05 15:16:44 · 1118 阅读 · 0 评论 -
机器学习100天(二十六):026 k近邻分类算法-理论
K 近邻算法也叫 KNN(k-Nearest Neighbor)算法,它是一个比较成熟也是最简单的机器学习算法之一。K 近邻分类算法的思路是:如果一个样本在特征空间中与 K 个实例最为相似(即特征空间中最邻近),那么这 K 个实例中大多数属于哪个类别,则该样本也属于这个类别。如上面这张图所示,二维平面上有两个类别:红色三角形表示类别 0,蓝色正方形表示类别 1,现在有一个绿色圆形样本,判断它属于哪一类?原创 2023-01-05 15:29:39 · 498 阅读 · 0 评论 -
机器学习100天(二十七):027 Python中的函数和类
为了方便后面机器学习算法编写程序,秉承从零开始的原则,我们在此节简单介绍一下 Python 的编程知识。原创 2023-01-05 16:08:51 · 379 阅读 · 0 评论 -
机器学习100天(二十八):028 K近邻分类算法-Python实现
准备工作做完之后,重点来了!就是定义 K 近邻分类算法的核心代码。我们定义一个 K 近邻分类算法的类 KnearestNeighbor。初始化 init 函数不需要做任何操作。训练函数 train 做得是将训练集的 X 和 y 存储起来。预测函数 predict 是核心代码,参数 X 是测试集,默认 k=1,num_test、num_train 分别是测试集、训练集的样本个数,构造二维矩阵 dists 来存储测试集每个样本与训练集每个样本的距离。这里我们选择使用欧式距离。原创 2023-01-06 09:42:24 · 571 阅读 · 0 评论 -
机器学习100天(二十九):029 K折交叉验证
简单交叉验证就是将原始数据集随机划分成训练集和验证集两部分。例如将样本按照 70%~30% 的比例分成两部分,70% 的样本用于训练模型;机器学习中,我们常会遇到一个问题,就是超参数的选择,超参数就是机器学习算法中的调优参数,比如上一节 K 近邻算法中的 K 值。K 折交叉验证就是帮助我们选择最优的超参数。需要特别注意的是,K 折交叉验证一般对于数据量不大的时候效果更好。K 折交叉验证是简单交叉验证的升级。机器学习100天,今天讲的是:K 折交叉验证!这就是使用 K 折交叉验证来选择最优的超参数。原创 2023-01-06 10:09:57 · 983 阅读 · 0 评论 -
机器学习100天(三十):030 K近邻分类算法-K值的选择
在这个 for 循环中,对于每个超参数 K 值,循环抽取 5 份数据集里不同的 4 份作为训练集 Xtr、ytr,剩下的 1 份作为验证集 Xcv、ycv。首先定义 num_folds=5,表示将训练数据分为 5 份,超参数K可选值是 3、5、7、11,存储在 K_classes 列表中。上一节我们讲了 K 折交叉验证的理论,下面我们将 K 折交叉验证算法应用到 K 近邻分类算法中,用来选择最合适的超参数 K 值。机器学习100天,今天讲的是:K近邻分类算法-K值的选择。,提取码:9zjw。原创 2023-01-06 10:29:55 · 757 阅读 · 0 评论 -
机器学习100天(三十一):031 K近邻回归算法
我们之前讲了 K 近邻分类算法,用来处理分类问题。其实 K 近邻也可以用来处理回归问题。如左图所示,K 近邻分类算法的思路是选取与测试样本距离最近的前 k 个训练样本。然后对着 k 个训练样本的 label 进行投票,票数最多的那一类别即为测试样本的类别。而 K 近邻回归算法也是类似,如右图所示,即选取与测试样本距离最近的前 K 个训练样本,以这 K 个训练样本的平均值作为测试样本的回归预测值。例如在房价预测问题中,K3K=3K3xtx_txt的预测值y\hat yyyx。原创 2023-01-12 15:25:32 · 649 阅读 · 0 评论 -
机器学习100天(三十二):032 KD树的构造和搜索
机器学习100天,今天讲的是:KD树的构造和搜索!在 K 近邻算法中,我们计算测试样本与所有训练样本的距离,类似于穷举法。如果数据量少的时候,算法运行时间没有大的影响,但是如果数据量很大,那么算法运行的时间就会很长。这在实际的应用中效率很低。因此,为了最快地进行检索,就提出了一种新的算法:KD树(k-dimensional tree)。KD树是二叉树的一种,是对 k 维空间的一种分割,不断地用垂直于坐标轴的超平面将k维空间切分,形成 k 维超矩形区域。原创 2023-03-01 14:36:58 · 796 阅读 · 0 评论 -
机器学习100天(三十三):033 KD树的Python实现
如果 self.nearest 中存储的个数小于 count,则直接将新叶子节点加入到 count中,否则将新叶子节点与 self.nearest 中存储的每个点进行比较,当新叶子节点更近时,则加入到 self.nearest 中,替换原来 self.nearest 中最大距离的点。可以看到构造的 KD 树的结构,冒号后面的数字表示 KD 树的层级。我们运行这几行代码,从打印的信息可以看出:最近邻的 3 个点分别是:(1,-3)、(-2,-1)、(-6,-5),对应的距离分别是:4.47、4.12、3。原创 2023-03-01 14:58:15 · 622 阅读 · 0 评论 -
机器学习100天(三十四):034 先验概率、条件概率
机器学习100天,今天讲的是:先验概率、条件概率。原创 2023-03-02 09:41:54 · 696 阅读 · 0 评论 -
机器学习100天(三十五):035 贝叶斯公式
为了解决这个问题,我们挑选一批西瓜,根据先验概率,西瓜的状态分成两种:瓜熟与瓜生,概率分别为 0.6 与 0.4。且从这批西瓜中统计,瓜熟里面瓜蒂脱落的概率是 0.8,瓜生里面瓜蒂脱落的概率是 0.4。那么,如果我现在挑到了一个瓜蒂脱落的瓜,则该瓜是好瓜的概率多大呢?这样,我们就计算得到了瓜蒂脱落的瓜是好瓜的概率是 0.75。好了,上一节介绍完先验概率、后验概率、联合概率、全概率后,我们来看这样一个问题:如果我现在挑到了一个瓜蒂脱落的瓜,则该瓜是好瓜的概率多大?,然后,分子根据联合概率可以写成。原创 2023-03-02 09:54:56 · 3419 阅读 · 0 评论 -
机器学习100天(三十六):036 朴素贝叶斯
知道判断一个瓜是否熟了,除了要看瓜蒂是否脱落,还要看瓜的形状和颜色。红色石头有点慌,不过没关系,我们可以使用上一节引入的贝叶斯定理思想来尝试解决这个问题。现在,特征由原来的 1 个,变成现在的 3 个,我们用 X 表示特征,用 Y 表示瓜的类型(瓜熟还是瓜生)。上面的公式看似有点复杂,但其实与上一节单特征(瓜蒂是否脱落)的形式是一致的。我们把这两个概率带入特征,就写成这样的形式。因此,分母可以省略,不同的。值得注意的是上式中的分母部分,对于所有的。现在,红色石头拿起一个西瓜,观察了它的。原创 2023-03-03 23:00:43 · 942 阅读 · 0 评论 -
机器学习100天(三十七):037 朴素贝叶斯-挑个好西瓜!
P(瓜熟) × P(脱落 | 瓜熟) × P(圆形 | 瓜熟) × P(青色 | 瓜熟) = 0.6 × (2 / 3) × (2 / 3) × (1 / 3) = 4 / 45。P(瓜生) × P(脱落 | 瓜生) × P(圆形 | 瓜生) × P(青色 | 瓜生) = 0.4 × 0.25 × 0.25 × 0.25 = 1 / 160。这时候,红色石头就完全可以根据样本数据和朴素贝叶斯公式来计算是好瓜的概率是多少。最后,根据这两个概率,我们就可以直接计算瓜熟的概率和瓜生的概率。原创 2023-03-03 23:05:20 · 2392 阅读 · 0 评论 -
机器学习100天(三十八):038 朴素贝斯-处理离散数据
当 alpha=1 时,表示拉普拉斯平滑(Laplace smoothing),做法就是在条件概率公式的分子加上 alpha,分母加上 S*alpha,S 为某特征的个数。如果我们设置这里的 alpha=0,再运行一下代码,可以的到预测瓜生、瓜熟的比例分别为:0.0657、0.9343。首先导入标准库,然后导入数据集,总共包含10个样本,特征瓜蒂用0表示脱落、1表示未脱落,特征形状用0表示圆形、1表示尖形,特征颜色用0表示深绿、1表示浅绿、2表示青色。这样,X_train 就写成这样的形式。原创 2023-03-04 11:19:07 · 677 阅读 · 0 评论 -
机器学习100天(三十九):039 朴素贝叶斯-处理连续数据
接下来是重点,使用高斯朴素贝叶斯对连续型数据进行分类。由于标签 y 中的类别是字符串变量,所以要对其进行编码,三个类别分别用 0、1、2 来表示。最后对 X_test 近预测,使用 metrics_accuracy_score 函数计算朴素贝叶斯模型在测试集上的准确率。选中运行,从打印的信息可以看到准确率为 100%。然后导入数据集,这里我们选择鸢尾花数据集。打开 X 可以看到其包含了 4 个特征,且每个特征都是连续型数据。打开 y,可以看到其包含了3个类别。选中运行,可以看到鸢尾花数据集的空间分布。原创 2023-03-04 11:27:27 · 650 阅读 · 0 评论
分享