深度学习入门概要
前言论文进行到了深度学习的相关部分,尤其是当下火热的 CV(计算机视觉)的部分,写到如此我的论文部分也就是开始的地方了,这部分并不会涉及 Pytorch 框架的安装以及基础的 Python 问题,关于这个问题可以参考 【sklearn】机器学习环境搭建,Python 的部分可以参考 Python 。
深度学习框架深度学习框架可以理解为一种工具,就像是现实中的锤子一样,它可以帮助我们更快速方便的捶打一些东西,当然你也可以选择使用别的什么东西来捶打,而这个使用的工具就是不同的深度学习框架,你甚至可以不使用深度学习的框架,完全自己弄的话也是可以的,只不过这个效率上来说会慢很多。
深度学习框架帮助我们封装了很多方法,屏蔽了很多我们不需要关注的细节,例如,求偏导,反向传播等。也许你看到这里并不是很明白这些词是什么意思,并不要紧,慢慢来做下去就会明白了。
全世界最为流行的深度学习框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。
斜体内容来源:百度百科
在现在来说,主流的只有两大框架:Tensorflow 和 PyTorch ...
蒙特卡洛方法
前言这是一些碎片化知识的集合,我将它们归类为碎片化知识。它们琐碎,且应用层面相对较大,还会涉及到一些其他的知识。
这部分内容将会涉及:概率统计,贝叶斯网络相关内容。
蒙特卡罗法蒙特卡洛方法一般指蒙特卡罗法,蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真中,通过构造一个和系统性能相近似的概率模型,并在数字计算机上进行随机试验,可以模拟系统的随机特性。*
内容来源:百度百科
简单来说,蒙特卡洛方法是一种基于随机抽样来解决各种计算问题的算法框架。现在我们来举一个例子来说明它:
使用蒙特卡洛方法计算 π背景圆周率 π 是圆的周长与直径的比率,是一个无理数,大约等于 3.14159。尽管有很多方式可以计算 π,但使用蒙特卡洛方法来估算 π 是一个非常有趣且直观的方式。
步骤
准备一个正方形和一个内切圆:假设有一个边长为 2 的正方形(因此半径为 1 )。在这个正方形内部有一个内切圆。
随机投点:在这个 ...
【sklearn】常见监督分类算法实战
前言终于到了激动人心的地方了,这部分将会说明如何使用sklearn库相关函数来调用并实现相关机器学习模型的训练和预测。对于不懂代码的小伙伴来说,在一般情况下也可以复制并在相关数据集上套用,并对相关参数我会进行说明。
如你所见,这篇标题中指的是:监督学习分类的sklearn机器学习。在参考和使用本篇代码请确保你已经下载安装并配置好 Python 相关环境(如果没有,请参考【sklearn】机器学习环境搭建)和如下举例的包。
关于本篇的说明:
使用的 Python 版本为 3.10.9(理论上你只要是 v3.0 以上就可以)
在相关机器学习的文章中使用但是不限于如下的基本 Python 包,如果有使用其他包,将会在文章内容中做详细说明:
scikit-learn
pandas
NumPy
matplotlib
另外请注意,本篇不会详细说明每个算法的原理,这并不是本文的初衷,所以如果你对算法的原理不了解或者感兴趣可以先了解算法的原理,再参考本文的代码实现
常见集成学习算法
常见分类算法
API
类别
适用类型
K近邻算法(KNN)
sklearn.neighbors
机 ...
【sklearn】机器学习环境搭建
前言在写常见分类算法实战一文的时候,考虑到部分伙伴可能是第一次接触机器学习,所以我不得不先说明如何先给自己的电脑搭建好机器学习相关的基础环境,这样才可以在我们的电脑上跑代码。
所以这篇文章将会是纯新手向,希望可以对相关小伙伴有帮助。
Python 安装你可以选择在搜索引擎中搜索Python或者点击我访问官网,进入官网后,界面如下所示:
选择 【Downloads】,然后选择 【All releases】,会打开新的页面。
在新的页面下面会有相关版本的 Python,你可以选择指定版本的 Python 来下载安装(如果你有版本需求的话),如果你是个新手,不知道选择哪个版本,就无脑最新版即可。
找到指定版本的 Python 后,选择 【Download】 后会弹出新的窗口,然后下滑找到最底下,选择适合你操作系统的安装包即可,如下所示:
例如:如果你是 Windows 系统的电脑,只需要查看如上图中的红框部分的内容即可。关于上述安装包的区别如下所示:
embeddable package:指的这个安装包是一个压缩包,是便携版的,下载完成解压即可使用
Installer:指的 ...
Python那些糖语法
前言如果你有掌握过其他计算机语言的话,则你学习 Python 的时候一开始将会非常容易,基本的声明,定义,基本数据类型,相关逻辑,循环,方法等,这些可以很快的掌握并适应,当然 Python 还有很多糖语法,这部分就是记录一些 Python 的小地方和一些糖语法来方便查询和学习。
前排提醒:本示例使用的 Python 版本为3.10.9
装饰器装饰器是一种很有意思的糖语法,它可以在不修改被装饰对象源代码和调用方式的前提下为被装饰对象添加额外的功能。我们来使用一个示例来理解这个装饰器的实际应用:
现在我们有一个计算两个值和的函数sum_ab,后来,我们需要改动代码,需要给这个函数增加一个打印输出提醒的功能,代码如下所示:
123456789# 计算两个数的和def sum_ab(a,b): print(f'和为:{a+b}')# 我们现在需要增加的功能# 打印输出函数def print_toast(): print('执行成功')
在常规状态下,我们可以选择将新增的功能直接编写添加到我们的sum_ab函数中,如下 ...
【sklearn】孤立森林
前言我在对地质学某些类型岩石的微量元素数据进行数据收集处理的时候,对异常数据进行筛选使用到了孤立森林,一开始没打算就此写这篇博客,不过就目前来说,我认为写这个博客有利于我后面的参考和记忆,遂以此记录,并且将会尽量将 sklearn 应用方面写更多的博客。
关于本篇的说明:
使用的 Python 版本为 3.10.9(理论上你只要是 v3.0 以上就可以)
在相关机器学习的文章中使用但是不限于如下的基本 Python 包,如果有使用其他包,将会在文章内容中做详细说明:
scikit-learn
pandas
NumPy
matplotlib
关于这个机器学习相关博客分类问题,我大概率后续会进行其他方式分类,目前都扔到机器学习分类中有些笼统。
孤立森林是什么?隔离森林又名孤立森林,是一种从异常点出发,通过指定规则进行划分,根据划分次数进行判断的异常检测方法。 由周志华老师教授等人于2008年在第八届IEEE数据挖掘国际会议上提出。
内容来源:百度百科
孤立森林在有的地方会被翻译成孤点森林,不过孤立森林用的会比较多,简单来说孤立森林是用来对数据做异常检测的,它可以在大数据量的 ...
【7.1】非均衡分类问题
前言非均衡问题(Imbalanced Problem)是指在一个数据集中,不同类别之间的样本数量差异较大的情况。例如,一个二分类问题中,其中一类的样本数比另一类多很多,通常会被认为是一个非均衡问题。这部分是讨论机器学习算法在应用方面的评价问题。
在前面,我们构建了一个用于检测患疝病的马匹是否存活的系统。在那里,我们构建了分类器,但是并没有对分类后的情形加以讨论。假如某人给我们牵来一匹马,他希望我们能预测这匹马能否生存。我们说马会死,那么他们就可能会对马实施安乐死,而不是通过给马喂药来延缓其不可避免的死亡过程。我们的预测也许是错误的,马本来是可以继续活着的。毕竟,我们的分类器只有80%的精确率(accuracy)。如果我们预测错误,那么我们将会错杀了一个如此昂贵的动物,更不要说人对马还存在情感上的依恋。
本文内容学习来源感谢:
《Machine Learning in Action》
《智能之门》
哔哩哔哩,维基百科等网络
前排说明
本文所有代码基于 Python 3.10 版本,理论上你的版本为 3.X 皆可运行。
在代码的注释中看到符号:❓,则表示注释的代码部分函数解释说明可 ...
【7.0】利用 AdaBoost 元算法提高分类性能
前言当做重要决定时,大家可能都会考虑吸取多个专家而不只是一个人的意见。机器学习处理问题时也是如此,这就是元算法(meta—algorithm)背后的思路。元算法是对其他算法进行组合的一种方式。接下来我们将集中关注一个称作 AdaBoost(读作[ˈeɪdəˌbust]) 的最流行的元算法。
本文内容学习来源感谢:
《Machine Learning in Action》
《智能之门》
哔哩哔哩,维基百科等网络
前排说明
本文所有代码基于 Python 3.10 版本,理论上你的版本为 3.X 皆可运行。
在代码的注释中看到符号:❓,则表示注释的代码部分函数解释说明可以在0最后的相关函数中查阅。
基于数据集多重抽样的分类器前面已经介绍了五种不同的分类算法,它们各有优缺点。我们自然可以将不同的分类器组合起来,而这种组合结果则被称为集成方法(ensemble method)或者元算法(meta-algorithm)。使 用集成方法时会有多种形式:可以是不同算法的集成,也可以是同一算法在不同设置下的集成,还可以是数据集不同部分分配给不同分类器之后的集成。
AdaBoost
优点: ...
【6.0】支持向量机
前言支持向量机(Support Vector Machines),简直就是 21 世纪酷刑😥
本文内容学习来源感谢:
《Machine Learning in Action》
《智能之门》
哔哩哔哩,维基百科等网络
前排说明:本文所有代码基于 Python 3.10 版本,理论上你的版本为 3.X 皆可运行。
基于最大间隔分隔数据支持向量机
优点:泛化错误率低,计算开销不大,结果易于解释
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于二类问题
适用数据类型:数值型和标称型数据
在开始说明 SVM 之前,需要先解释几个概念,考虑上图四个数据点分布图像,一个问题是:能否画出一条直线将不同类别的点区分开来?先考虑下图中的数据,它们之间已经分隔的足够开,因此可以很容易的在图中画出一条直线将两组数据分开。在这种情况下,这组数据被称为线性可分(Linearly separable)数据 。
上述将数据集分割开来的直线称为分隔超平面(separating hyperplane)。在上面给出的例子中,由于数据点都在二维平面山,所以此时的分隔超平面就是一条直线。但是 ...
【5.0】Logistic回归
前言这篇将会是令人激动的一部分,因为我们将首次接触到最优化算法。在我们生活中也会遇到很多最优化问题,例如如何在最短时间内从 A 点到达 B 点?如何投入最少的工作获取最大化的收益等等。
如果你并不理解什么是回归,这并不重要,后面的文章将会详细说明回归。现在假设有一些数据点,我们用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合的过程就称作回归。
利用 Logistic 回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。
前排提醒:本实例使用 Python 版本 3.X 理论上都可以运行,我本人使用的是 3.10 版本
基于 Logistic 回归和 Sigmoid 函数的分类 Logistic 回归
优点:计算代价不高,易于理解和实现
缺点:容易欠拟合,分类精度不高
适用数据类型:数值型和标称型数据
我们希望的函数应该是:能接受所有的输入然后预测输出类别。例如,在二分类情况下,希望函数输出 0 或 1 。或许你之前接触过这种性质的函数,该函数称为**单位阶跃函数,又称为赫维赛德阶跃函数(Heaviside step function) ...