常见的机器学习算法代码及其Python代码

这类算法由一个目标变量或结果变量(或因变量)组成。这些变量由已知的一系列预示变量(自变量)预测而来。利用这一系列变量,可以生成一个将输入值映射到期望输出值的函数。这个训练过程会一直持续,直到模型在训练数据上获得期望的精确度。监督式学习的例子有:线性回归、决策树、随机森林算法、最近邻算法、逻辑回归等。

非监督式学习算法

这类算法没有任何目标变量或结果变量要预测或估计。它用在不同的组内聚类分析。这种分析方式被广泛地用来细分客户,根据干预的方式分为不同的用户组。非监督式学习的例子在:关联算法、均值算法等。

强化学习算法这类算法训练机器进行决策。原理是这样的:机器被放在一个能让它通过反复试错来训练自己的环境中。机器从过去的经验中进行学习,并且尝试利用了解最透彻的知识作出精确的商业判断。强化学习算法的例子有马尔可夫决策过程。

常见的机器学习算法有:(1)线性回归;(2)逻辑回归;(3)决策树;(4)支持向量机(SVM)分类;(5)朴素贝叶斯分类;(6)K最近邻算法;(7)K均值算法;(8)随机森林算法;(9)降维算法:(10)GradientBoost和Adaboost算法。

下面我们对上面的机器学习算法逐一介绍,并给出其主要的Python代码。

线性回归

线性回归通常用于根据连续变量估计实际数值(如房价、呼叫次数、总销售额等)。我们通过拟合最佳直线来建立自变量和因变量的关系。这条最佳直线叫作回归线,并且用这一线性等式来表示。

假设在不问对方体重的情况下,让一个五年级的孩子按体重从轻到重的顺序对班上的同学排序,你觉得这个孩子会怎么做他很可能会目测人们的身高和体形,综合这些可见的参数来排列他们,这是现实生活中使用线性回归的例子.实际上,这个孩子发现了身高和体形、体重有一定的关系,这个关系看起来很像上面的等式。在这个等式中:因变量;

:自变量;

:斜率;

:截距。

系数和可以通过最小二乘法获得。

fromsklearn.datasetsimportload_iris

X,y1=load_iris.data[:,:2],load_iris.target

X,y2=load_iris.data[:,:2],load_iris.data[:,2]

fromsklearn.linear_modelimportLinearRegression

model=LinearRegression

model.fit(X,y2)

model.score(X,y2)

逻辑回归

这是一个分类算法,而不是一个回归算法。该算法可根据已知的一系列因变量估计离散数值(如二进制数值0或1,是或否,真或假)。简单来说,它通过将数据拟合进一个逻辑函数来预估一个事件出现的概率。因此,它也被叫作逻辑回归。因为它预估的是概率,所以它的输出值大小在0和1之间(正如所预计的一样)。如下图所示

我们再通过一个简单的例子来理解这个算法。假设你朋友让你解开一个谜题。只会有两个结果:你解开了或是没有解开。想象你要解答许多道题来找出你所擅长的主题。这个研究的结果就会像是这样:假设题目是一道十年级的三角函数题,你有的可能会解开这道题。然而,若题目是道五年级的历史题,你只有的可能性回答正确。这就是逻辑回归能提供给你的信息。

从数学上看,在结果中,概率的对数使用的是预测变量的线性组合模型.

fromsklearn.linear_modelimportLogisticRegression

model=LogisticRegression

model.fit(X,y1)

model.score(X,y1)

决策树

决策树这个监督式学习算法通常被用于分类问题。令人惊奇的是,它同时适用于分类变量和连续因变量。在这个算法中,我们将总体分成两个或更多的同类群。这是根据最重要的属性或者自变量来分成尽可能不同的组别。如图所示。

fromsklearn.treeimportDecisionTreeClassifier

model=DecisionTreeClassifier

支持向量机(SVM)分类

这是一种分类方法。在这个算法中,我们将每个数据在维空间中用点标出是所有的特征总数),每个特征的值是一个坐标的值。

例如,如果我们只有身高和头发长度两个特征,我们会在二维空间中标出这两个变量,每个点有两个坐标(这些坐标叫作支持向量),如图所示。

现在,我们会找到将两组不同数据分开的一条直线。两个分组中距离最近的两个点到这条线的距离同时最优化,如图所示。

图中的黒线将数据分类优化成两个小组,两组中距离最近的点(图中点和点)到达罟线的距离满足最优条件。这条直线就是我们的分割线。接下来,测试数据落到直线的哪一边,我们就将它分到哪一类去。

fromsklearn.svmimportSVC

model=SVC

朴素贝叶斯分类

朴素贝叶斯模型易于建造,且对于大型数据集非常有用。虽然简单,但是朴素贝叶斯的表现却超越了非常复杂的分类方法。贝叶斯定理提供了一种从、和计算后验概率的方法。请看以下等式:

这里,是已知预示变量(属性)的前提下,类(目标)的后验概率,是类的先验概率,是可能性,即已知类的前提下,预示变量的概率,是预示变量的先验概率。

例题设有一个天气的训练集和对应的目标变量“Play”。我们需要根据天气情况,将“玩”和“不玩”的参与情况进行分类。执行步骤如下。

步骤1:把数据集转换成频率表。

步骤2:利用类似“当Overcast可能性为时,玩(Play)的可能性为”这样的概率,创造Likelihood表格。

步骤3:使用朴素贝叶斯公式来计算每一类的后验概率。后验概率最大的类就是预测结果。

问题:如果天气晴朗,参与者就能玩。这个陈述正确吗

我们可以使用讨论过的方法解决这个问题。于是(会玩|晴朗)(晴朗|会玩)X会玩(晴朗)

我们有(晴朗会玩晴朗会玩。算法通常被用于文本分类,以及涉及多个类的问题。

fromsklearn.naive_bayesimportGaussianNB

model=GaussianNB

K最近邻(KNN)算法

最近邻算法(K-NearestNeighbor),又称KNN算法。该算法可用于分类问题和回归问题。然而,在业界内,最近邻算法更常用于分类问题。最近邻算法是一个简单的算法。它储存所有的案例,通过周围个案例中的大多数情况划分新的案例。根据一个距离函数,新案例会被分配到它的个近邻中最普遍的类别中.这距离函数可以是欧式距娈、曼哈顿距离、明氏距离或者是汉明距离。前三个距离函数用于分类变量。如果,新案例就直接被分到离其最近的案例所属的类别中。有时偧,使用建模时,选择的取值是一个挑战。在现实生活中广泛地应用了最邻近算法。例如,想要了解一个完全陌生的人,你也许想要去找他的好朋友们或者他的囶子来获得他的信息。

fromsklearn.neighborsimportKNeighborsClassifier

model=KNeighborsClassifier

K均值算法

均值算法是一种非监督式学习算法,它能解决聚类问题。使用均值算法来将一个数据归入一定数量的集群(假设有个集群)的过程是简单的。一个集群内的数据点是均匀齐次的,并且异于别的集群。

均值算法形成集群的原理如下:

均值算法给每个集样选择个点。这些点称作为质心。

每一个数据点与距离最近的质心形成一个集群,也就是个集群。

根据现有的类别成员,找到每个类别的质心。现在我们有了新质心。

当我们有新质心后,重复步骤2和步骤3。找到距离每个数据点最近的质心,并与新的集群联系起来。重复这个过程,直到数据都收敛了,也就是质心不再改变。

如何决定值?均值算法涉及集群,每个集群有自己的质心。一个集群内的质心和各数据点之间距离的平方和形成了这个集群的平方值之和。同时,当所有集群的平方值之和加起来的时候,就组成了集群方案的平方值之和。

我们知道,当集群的数量增加时,值会持续下降。但是,如果你将结果用图表来表示,你会看到距离的平方总和快速减少。到某个值之后,减少的速度就大大下降了。在此.我们可以找到集群数量的最优值。

fromsklearn.clusterimportKMeans

model=KMeans(n_clusters=2)

model.fit(X)

model.predict(X)

随机森林算法

随机森林是表示决策树总体的一个专有名词在随机森林算法中,我们有一系列的决策树(因此又名“森林”)。为了根据一个新对象的属性将其分类,每一个决策树有一个分类,称之为这个决策树“投票”给该分类。这个森林选择获得森林里(在所有树中)获得票数最多的分类。

THE END
1.9个常用数据结构与算法的C语言代码实现快速排序是一种常用的排序算法,其基本思想是通过选定一个基准元素,将待排序序列划分为两个子序列,其中一个子序列的所有元素均小于等于基准元素,另一个子序列的所有元素均大于等于基准元素,然后对两个子序列分别进行递归排序,最终将整个序列排序。以下是一个简单的快速排序实现示例代码:#include <stdio.h>void https://baijiahao.baidu.com/s?id=1763048454408546168&wfr=spider&for=pc
2.常用算法代码常用算法代码 这篇文章包含了一系列算法实现,如计算两个数的最大公约数(GCD)和最小公倍数(LCM),筛选法求素数,查找回文数,以及解决字符串子串匹配和连续子数组最大和的问题。还提到了优化输入输出和数据结构在处理大量数据时的重要性。 摘要由CSDN通过智能技术生成https://blog.csdn.net/qq_44380224/article/details/123455379
3.可能是你看过最全的十大排序算法详解(完整版代码)C语言排序算法是程序中常用的算法,下面这篇文章主要给大家介绍了关于十大排序算法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下+ 目录 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】前言https://www.jb51.net/article/251992.htm
4.数据挖掘算法代码数据挖掘算法案例数据挖掘算法代码 数据挖掘算法案例 数据挖掘作为一门新兴的多学科交叉应用技术,正在各行各业的决策支持活动中扮演着越来越重要的角色。数据挖掘概念的定义描述有若干版本,本文采用的是一个普遍接受的定义:数据挖掘,又称为数据库中的知识发现(KDD),它是一个从大量数据中抽取出未知的、有价值的模式或规律等知识的复杂https://blog.51cto.com/u_16213642/7090644
5.ModelArts创建算法ModelArts用户指南训练过程中,自定义算法需要从OBS桶或者数据集中获取数据进行模型训练,训练产生的输出结果也需要存储至OBS桶中。用户的算法代码中需解析输入输出参数实现ModelArts后台与OBS的数据交互,用户可以参考开发自定义脚本完成适配ModelArts训练的代码开发。 创建自定义算法时,用户需要将算法代码中定义的输入输出参数进行配置。 https://ecloud.10086.cn/op-help-center/doc/article/72086
6.腾讯算法岗武功秘籍(上)所以,不要存在侥幸心理,踏踏实实的刷题,复习好常规机器学习算法,尤其是算法的原理和应用场景。 ★ 项目和比赛经历非常的重要,往往面试官都是根据项目里用到的方法拓展提问,对项目的优化和改进也问的比较多。还有就是能内推的一定去找学长学姐或是其它资源去内推。 ★ 面试过程中如果实在写不出来代码的话,就给https://www.flyai.com/article/930
7.算法与数据结构复杂度分析粗略地说,算法的执行效率是算法代码执行的时间。但是,如何在不运行代码的情况下,用“肉眼”获得代码执行时间呢? 这里有一个很简单的代码,请求 1,2,3n 累加和。现在,我将带您一起估计代码的执行时间。 int cal(int n) { int sum = 0; int i = 1; for (; i <= n; ++i) {https://www.tulingxueyuan.cn/tlzx/jsp/5158.html
8.C语言快速排序算法及代码快速排序是对冒泡法排序的一种改进。那么有关C语言快速排序算法和代码分别又是怎样的呢?以下仅供参考! 快速排序算法 的基本思想是:将所要进行排序的数分为左右两个部分,其中一部分的所有数据都比另外一 部分的数据小,然后将所分得的两部分数据进行同样的划分,重复执行以上的划分操作,直 到所有要进行排序的数据变https://www.oh100.com/kaoshi/c/542712.html
9.算法和编程面试题精选TOP50!(附代码+解题思路+答案)这份面试资源主要包含五部分内容:数组、链表、字符串、二叉树和重要算法(如排序算法)的编程面试题,其中每部分内容我们都列出了一些最常被问到的热门问题,并且在每个题目后给出了可以参考的解决思路和代码,因为题目较多,我们没有罗列所有的方法和代码,只给出了访问地址。相信大家在掌握了这些内容后,一定可以提升实力、https://cloud.tencent.com/developer/article/1483807
10.Delphi采用LZ77算法的一段压缩代码window基础Delphi采用LZ77算法的一段压缩代码 核心提示:const MAX_WND_SIZE=1024;procedure Write12BitStream(pbuffer: pchar; bitoffset: ULONG);var bytebound, const MAX_WND_SIZE=1024;procedure Write12BitStream(pbuffer: pchar; bitoffset: ULONG); varhttp://www.2ccc.com/news/Html/?875.html
11.科学网—二维三次卷积插值算法及Fortran代码更新二维三次卷积插值算法及Fortran代码【更新】 |个人分类:数学轮子|系统分类:科研笔记|Fortran程序, 插值算法 最近有人问起二维三次卷积插值算法(Cubic Convolution Interpolation)及其程序的问题,我想到这种插值算法也能用于图像的插值,所以也就有了兴趣,稍微了解了一下,并试着用Fortran实现了一下,同时也顺便复习了一下https://blog.sciencenet.cn/blog-2277-595297.html