【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) ...
【4.0】基于概率论的分类方法:朴素贝叶斯
前言前面的算法我们要求分类器对于“该数据属于哪一个分类”这类问题做出明确回答。不过,分类器有时会产生错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同时给出这个猜测的概率估计值。
概率论是许多机器学习算法的基础,所以深刻理解这一主题就显得十分重要。
基于贝叶斯决策理论的分类方法朴素贝叶斯
优点:在数据较少的情况下依然有效,可以处理多类别问题
缺点:对于输入数据的准备方式较为敏感
适用数据类型:标称型数据。
朴素贝叶斯是贝叶斯决策论的一部分,所以在讲述朴素贝叶斯之前有必要快速了解一下贝叶斯决策理论。
假设有人找到了描述图中两类数据的统计参数1。现在我们使用 $P_1(x,y)$ 表示数据。点 $(x,y)$ 属于类别 1 (图中用圆形表示的类别)的概率,用 $P_2(x,y)$ 表示数据点 $(x,y)$ 属于类别 2 (图中用菱形表示的类别)的概率。那么对于一个新的数据点 $(x,y)$ ,可以使用下面的规则来判断它的类别:
如果 $\large P_1(x,y) > P_2(x,y)$ ,那么类别为 1
如果 $\large P_2(x,y) > P_1 ...
【3.0】决策树
前言如果你以前没有接触过决策树,也不需要担心,它的概念非常简单。即使不知道它也可以通过简单的图形了解其中的工作原理,下图的流程图就是一个决策树,长方形代表判断模块(decision block),椭圆形代表终止模块(terminating block),表示这已经得出结论,可以终止运行。从判断模块引出的左右箭头称为分支(branch),它可以到达另一个判断模块或者终止模块。该流程图构造了一个假想的邮件分类系统,它首先检测发生邮件域名地址。如果地址为 myEmployer.com ,则将其放在分类 “无聊时需要阅读的邮件”,其他同理分类。
K-近邻算法已经可以完成很多分类任务,但是它最大的缺点就是无法给出数据的内在含义,决策树的主要优势就是在于数据形式非常容易理解。决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,这些机器根据数据集创建规则的过程,就是机器学习的过程。
前排提醒:在接下来的代码示例中,有看不懂的函数,可以尝试在下面的 函数相关说明 处查看
决策树的构造决策树的优缺点
优点:计算复杂度不高,输出结果容易理解,对中间值的缺失并不敏感,可以处理不相关特征数据。
...
【2.0】K-近邻算法
前言众所周知,电影可以按照题材进行分类,然后题材分类本身是如何定义的?动作片中会存在接吻镜头,而爱情片中也会存在打斗场景,我们不能单单依靠是否存在打斗和亲吻来判断影片类型。但是爱情片中的接吻镜头会更多,动作片中的打斗场景会更加频繁,基于场景的出现次数我们就可以进行电影分类。
这部分将会使用K-近邻算法来自动划分电影的题材类型。
注:本实例使用的python版本为:v3.10,理论上你只要使用 v3.x 的任意版本即可运行。
K-近邻算法概述简单来说,K-近邻算法采用测量不同特征值之间的距离方法进行分类。
优点:精度高,对异常值不敏感,无数据输入假定
缺点:计算复杂度高,空间复杂度高
适用数据范围:数值型和标称型
K-近邻算法(KNN)的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前 k 个最相似的数据,这就是 k-近邻算法中 k 的 ...














