一文读懂机器学习分类全流程蓝白波罗歌

0 复习数据预处理及可视化

1 了解分类的基本概念

2 使用多种分类器来对比模型精度

3 掌握使用分类器列表的方式来批处理不同模型

4 将机器学习分类模型部署为Web应用

本文我们所用的数据集是亚洲美食数据集,其包括了亚洲5个国家的美食食谱与所属的国家。我们构建模型的目的是解决:

如何根据美食所用食材判断其所属国家

即以美食食材为可训练特征,所属国家为预测标签构建机器学习分类模型。

分类是经典机器学习的基本重点,也是监督学习的一种形式,与回归技术有很多共同之处。其通常分为两类:二元分类和多元分类。本文中,我将使用亚洲美食数据集贯穿本次学习。

0 线性回归可帮助我们预测变量之间的关系,并准确预测新数据点相对于该线的位置。因此,例如,预测南瓜在9月与12月的价格。

1 Logistic回归帮助我们发现“二元类别”:在这个价格点上,这是橙子还是非橙子?

分类也是机器学习人员和数据科学家的基本工作之一。从二分类(判断邮件是否是垃圾邮件),到使用计算机视觉的复杂分类和分割,其在很多领域都有着很大的作用。

以更科学的方式陈述该过程:

我们所使用的分类方法创建了一个预测模型,这个模型使我们能够将输入变量之间的关系映射到输出变量。

分类使用各种算法来确定数据点的标签或类别。我们以亚洲美食数据集为例,看看通过输入一组特征样本,我们是否可以确定其菜肴所属的国家。

以下是经典机器学习常用的分类方法。

0 逻辑回归

1 决策树分类(ID3、C4.5、CART)

2 基于规则分类

3 K-近邻算法(K-NN)

4 贝叶斯分类

5 支持向量机(SVM)

6 随机森林(Random Forest)

在开始本文学习之前,我们第一个任务是清理和调整数据集以获得更好的分析结果。我们需要安装的是imblearn库。这是一个基于Python的Scikit-learn软件包,它可以让我们更好地平衡数据。

在命令行中输入以下代码,使用阿里的镜像来安装 imblearn :

看到如下图所示代表安装成功。

前5行数据如下图所示:

查看数据结构:

通过查看数据与其组织结构,我们可以发现数据有2448行,385列,其中有大量的无效数据。

我们可以对数据进行可视化来发现数据集中的数据分布。

通过调用barh()函数将数据绘制为柱状图。

结果如下:

我们可以看到,数据集中以韩国料理样本最多,泰国样本最少。美食的数量有限,但数据的分布是不均匀的。我们可以解决这个问题!在此之前,请进一步探索。

了解各国美食有多少可用数据并将其打印输出。输入以下代码,从结果中我们可以看到不同国家美食的可用数据:

现在,我们可以更深入的挖掘数据,并了解每种菜肴的成分。在此之前,我们应该对数据进行预处理,删去重复值。

在python中创建一个函数来删除无用的列,然后按成分数量进行排序。

现在,我们调用create_ingredient_df()函数来了解泰国美食中,最受欢迎的十大食材。输入以下代码:

查看泰国美食中十大最受欢迎的食材:

我们可以看到,第一名的食材是garlic(大蒜),第十名则是chicken(鸡肉)。

对中国数据执行同样的操作:

结果如下,中国美食食材中,最受欢迎的是soy_sauce(酱油),第十名是cayenne(红辣椒):

同理,我们也可以输出其他国家的美食食材,这里就不水文了。大家可自行尝试。

现在,我们需要使用drop()函数删除不同美食间造成混淆的最常见成分以突出各国食材的特色,每个国家的人都喜欢米饭、大蒜和生姜。(可自行可视化查看),我们输入以下代码将其删去。

现在我们已经清理了数据,因为不同国家的样本数量差异较大,我们需要使用SMOTE(“合成少数过度采样技术”)来平衡它。

调用SMOTE对象的 fit_resample() 函数来插值重采样生成新样本。输入以下代码:

查看新样本与旧样本的数据量差异:

我们可以看到,新样本不同类别标签下的样本数量都在799,它是以旧样本中最大样本量标签为基础构建的,而旧样本则参差不齐,分布不均匀。

数据质量很好,干净、平衡!🧸🧸

数据预处理的最后一步是将预处理后的数据导出以后直接调用。输入以下代码:

现在,数据已经经过预处理,我们可以构建分类模型了!

但是选择什么模型好呢?

Scikit-learn中的分类算法在监督学习下,在该类别中,我们将找到许多分类方法。这种多样性一见钟情就相当令人眼花缭乱。以下方法都包含分类技术:

线性模型

支持向量机

随机梯度下降

最近邻

高斯过程

决策树

集成学习(随机森林)

多类和多输出算法(多类和多标签分类、多类-多输出分类)

使用什么分类器?

通常,同时运行几个分类模型,最终找到精度最高的方法很常用。Scikit-learn提供了对所创建数据集的并列比较,比较了下面模型的结果。

KNeighbors,SVC,GaussianProcessClassifier,DecisionTreeClassifier,RandomForestClassifier,MLPClassifier,AdaBoostClassifier,GaussianNB和QuadraticDiscrinationAnalysis

下图显示了这些模型可视化的结果:

这种方法在数据集样本较少时可以使用,但随着样本数量的增多,这对计算的负担将会越来越大。我们先不考虑这种方法。请继续向下看😀。

数据如下图所示:

以美食数据集的所属国家列为预测标签Y,食材为可训练特征构建数据集。并以7:3的比例划分训练集与测试集。输入以下代码:

使用划分好的数据集进行逻辑回归模型构建,打印出模型的精度评价表;测试模型的预测效果。输入以下代码:

输出结果为ACC系数为:79.1%

通过打印出该模型的精度评价表我们可以获得更多的模型信息:

测试模型并查看模型在测试集上将样本分类为不同类别的概率:

输出结果为:

可以看到对于测试集上的某个样本,其预测为日本菜的概率为91%。

在前文中,我们已经构建了逻辑回归模型,那么可以使用其他模型吗,怎么选择呢?

Scikit-learn提供了一个机器学习分类器选择的地图,它可以进一步帮助使用者缩小分类器的选择范围,如下图:

一旦我们对数据有了一定的了解,此地图将极大的节省我们的试错成本,因为我们可以沿着其路径“行走”来选择需要的模型(看着图走):

0 我们有大于50个样本

1 我们想要预测一个类别

2 我们标记了数据

3 我们的样本少于100K

4 我们可以选择线性SVC

5 如果这不起作用,因为我们有数字数据

6 我们可以尝试 KNeighbors Classifier

7 如果这不起作用,请尝试 SVC 和 集成分类器(诸如随机森林)

这是一条非常有用的工具,对机器学习初学者很友好。

按照这条路径,我们首先需要导入多分类器需要的第三方库:

数据和训练样本我们继续使用之前划分好的数据集。

支持向量聚类 (SVC) 是支持向量机机器学习技术系列的子集。在此方法中,你可以选择一个“核函数”来决定如何对标签进行聚类。“C”参数是指“正则化”,它调节参数的影响。内核有多个选择;在这里,我们将其设置为“线性”核函数。概率默认为“假”;在这里,我们将其设置为“true”以收集概率估计值。我们将随机状态设置为“0”,以随机排列数据以获得概率。

首先我们需要创建一个分类器列表,用于存储之后新增的机器学习分类器。先放入一个线性SVC分类器。

使用线性SVC训练模型并打印精度报告:

查看线性SVC的精度报告,效果还不错,准确率达到了78.6%。

K-Neighbors是机器学习常用的方法,可用于监督学习与无监督学习。在此方法中,需要预先创建部分点数,并在这些点周围收集数据,以预测数据的广义标签。

我们在之前创建的分类器列表中加入KNN分类器代码。运行以后再次查看精度:

🤨精度有所下降。。

SVM分类器是用于分类和回归任务的支持向量机机器学习方法系列的子集。SVM“将训练样本点映射到高维空间中”,最大化两个类别之间的距离。后续的预测数据被映射到此空间中,来预测其类别。

我们在K-近邻算法后加入支持向量分类器:

再次运行,查看SVM支持向量模型结果。

​       🥇fantastic!精度上升到了82.4%。

继续测试其他模型...

之前的测试精度相当不错。让我们尝试使用集成学习模型,特别是Random Forest和AdaBoost吗,在模型中列表加入下面代码后运行:

​        很不戳!🎈🎈RFST随机森林的精度达到了83.4%,AdaBoost似乎不太好,不过这不重要。

集成学习方法结合了几个基本分类器的预测,以提高模型的质量。在我们的示例中,我们使用了 Random Trees 和 AdaBoost。

0 随机森林是一种平均方法,它构建了一个由“决策树”组成的“森林”,注入了随机性,以避免过度拟合。n_estimators参数设置为树的数量。

1 AdaBoost 将分类器拟合到数据集,然后将该分类器的副本拟合到同一数据集。它侧重于错误分类项目的权重,并调整下一个分类器要更正的拟合度。

这些技术中的每一种都有大量超参数可以调整。读者可以自行研究每个参数的默认参数,并尝试调整这些参数观察其对模型质量的影响。

我在模型部署的文章中有讲解使用Flask框架和pickle库打包模型及应用构建的全流程,虽然之前按用的时回归模型。但回归模型与分类模型部署的流程一样:

训练模型>模型打包>应用配置>模型部署>运行测试

方便起见,我们我们使用刚刚训练好的逻辑回归分类模型,将其使用Pickle库将其打包为 美食预测.pkl文件,以便后续的使用。输入以下代码:

输出的结果为 Indian🤣,(这里参数其实有错,因为输入特征有380个,不可能一个一个输入...我自己就编了点,还是三哥吃的杂。项目实践中我们对大量样本常常使用批处理,只有小样本才这样直接输入)。

可以看到文件夹下已经生成了打包好的模型。😊

软件结构如下图:

在命令行cd切换路径至当前目录下,输入以下代码,将出现的链接复制到浏览器打开:

按要求输入特征,代码运行成功,输出印度:

至此,本文内容结束!

在本文中,作者对机器学习分类的概念进行了简单的介绍,详细的讲解了数据预处理,分类器选择、模型训练及精度评价,还有最后的Web应用发布。在今后的文章中,我将创作更多的机器学习文章,以文督学,感谢观看!

THE END
0.机器学习支持向量机模型建立支持向量机模型,并给出具体的过程。2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 实验结果 机器学习---支持向量机模型 1.导入所需的包,生成本次实验的数据以及数据分布图 fromjvzquC41dnuh0lxfp0tfv8|gkzooa=9478>7:8ftvkimg8igvcomu86345>4:<8
1.SVMMY:构建高效扫描与检测工具2. SVM训练流程详解 2.1 SVM模型的基本概念 2.1.1 支持向量机的原理 支持向量机(Support Vector Machine, SVM)是一种二分类模型,它的基本模型定义为特征空间上间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为jvzquC41dnuh0lxfp0tfv8|gkzooa=78279:98ftvkimg8igvcomu86699;46;>
2.支持向量机|菜鸟教程支持向量是离超平面最近的样本点。这些支持向量对于定义超平面至关重要。 支持向量机通过最大化支持向量到超平面的距离(即最大化间隔)来选择最佳的超平面。 最大间隔: SVM的目标是最大化分类间隔,使得分类边界尽可能远离两类数据点。这可以有效地减少模型的泛化误差。 jvzquC41o0xvpxtd0eun1vq1on3txv3jvor
3.深度学习的开胃菜——常用的机器学习知识梳理AI浩1.16.21 常见的类别不平衡问题解决方法 1.17 决策树 1.17.1 决策树的基本原理 1.17.2 决策树的三要素? 1.17.3 决策树学习基本算法 1.17.4 决策树算法优缺点 1.17.5 熵的概念以及理解 1.17.6 信息增益的理解 1.17.7 剪枝处理的作用及策略 1.18 支持向量机 1.18.1 什么是支持向量机 1.18.2 支持向量 jvzq<84|jcthuqn{w0ipo8uquv536@820jznn
4.下一篇:变电站的运行管理制度供应商信用管理范文平衡记分卡法的思路认为:以企业的战略和远景目标为核心,把企业的长远目标具体化为企业的行动策略,即根据表一中的指标体系数据,应用层次分析法构建YC信用管理绩效的层次结构模型,组织行业专家利用层次分析法关键词:政府采购;信用分析;支持向量机 Abstract:Support Vector Machines (SVM) based on structural riskjvzquC41yy}/i€~qq0ipo8mcqyko1:>2349/j}rn
5.MATLAB实现基于支持向量机(SVM)进行多特征分类预测的详细项目实例MATLAB实现基于支持向量机(SVM)进行多特征分类预测的详细项目实例 1 项目背景介绍 1 项目目标与意义 2jvzquC41ddy/rrsiiw4ptp4vjtkbf668548:::23/34ivvq
6.机器学习中样本不平衡,怎么办?在处理诸如此类的样本不均衡的任务中,使用常规方法并不能达到实际业务需求,正确且尽可能多捕获少数类样本。因为样本不均衡会使得分类模型存在很严重的偏向性。本文中,介绍了在机器学习中样本不平衡处理策略及常用方法和工具。 在银行要判断一个"新客户是否会违约",通常不违约的人VS违约的人会是99:1的比例,真正违约jvzquC41yy}/7:hvq0ipo8ftvkimg8<2:3960qyon
7.支持向量机详解Svm(support Vector Mac)又称为支持向量机,是一种二分类的模型。当然如果进行修改之后也是可以用于多类别问题的分类。支持向量机可以分为线性核非线性两大类。其主要思想为找到空间中的一个更够将所有数据样本划开的超平面,并且使得本本集中所有数据到这个超平面的距离最短。 jvzquC41dnuh0lxfp0tfv8iaa9<11jwvkerf1mjvckrt1A55:9:44
8.机器学习算法之支持向量机向量支持机本文介绍支持向量机(SVM)算法,它是二分类算法,能造最大间距决策边界,提高分类鲁棒性。阐述基于最大间隔分割数据的线性模型、超平面和支持向量概念,详细讲解线性可分、线性、非线性SVM算法原理,还进行SVM手写体识别实验,并总结SVM与Logistic回归的区别与联系。 目录 一、前言 二、基于最大间隔分割数据 2.1线性模型 三、算法原理 3.jvzquC41dnuh0lxfp0tfv8r2a8862:5221gsvrhng1jfvjnnu17479;22:<
9.机器学习SVM算法介绍及应用消费金融风控联盟支持向量机(SVM)是一种 二分类模型 ,可以处理线性和非线性的 分类问题 。jvzquC41yy}/uqfpi{kykwjk0ipo8ftvkimg8<5:87937mvon
10.基于全景病理图像细胞密度和异型特征的胶质瘤自动分级首先分析全局细胞密度定位感兴趣区域(ROI),提取全扫描图像的全局密度特征,然后对感兴趣区域提取局部密度特征和异型特征,最后利用特征选择并构建平衡权重的支持向量机(SVM)分类器,5折交叉验证的受试者工作特性曲线下的面积(AUC)为0.92 ± 0.01,准确率(ACC)为0.82 ± 0.01。实验结果表明,本文提出的感兴趣区域定位方法jvzquC41yy}/vlxwti4ptp4ctvodnn4320=62@43227.7>670463398272
11.机器学习中最常见的四种分类模型一对一:为每对类别拟合一个二分类模型。 可以使用这些策略进行多分类的二分类算法包括: 逻辑回归(Logistic Regression) 支持向量机(Support Vector Machine) 接下来,让我们仔细看一下数据集,通过实践和思考来训练出对多类分类问题的直觉。 我们可以使用make_blobs()函数[6]生成一个综合的多类分类数据集。 jvzquC41fg|fnxugt0gmk‚zp0eun1jwvkerf1::;:494
12.基于深度学习的源代码缺陷检测研究综述深度学习方法应用于源代码缺陷检测在数据集构建和模型设计方面依然面临众多挑战. 本综述即聚焦于基于深度使用支持向量机对其进行分类. 但该类方法在效率与效果上均存在较大的不足: 一方面, 大多数机器学习方法再由2人逐一对查询结果的标题、摘要进行人工审查, 过滤不使用深度学习方法的无关内容, 在出现分歧时共jvzquC41yy}/lxx0qtm/ew4jvor0497514578B;0jvs
13.机器学习算法篇支持向量机原理在模型训练时自动求解 如果ξᵢ = 0 → 该样本完全分类正确; 如果0 < ξᵢ < 1 → 样本在“间隔区”内,但仍然在正确一侧; 如果ξᵢ > 1 → 样本被误分类(落到错误一侧)。 训练支持向量机就是不断选取C的值,最后寻找最好超平面,随着C的不断增大,超平面划分地越加仔细。 jvzquC41dnuh0lxfp0tfv8|gkzooa?8::8>548ftvkimg8igvcomu8675;<45=: