博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重要的机器学习算法
阅读量:5912 次
发布时间:2019-06-19

本文共 5594 字,大约阅读时间需要 18 分钟。

本文旨在为那些获取关于重要机器学习概念知识的人们提供一些算法,同时免费提供相关的材料和资源。并且附上相关算法的程序实现。

通用的机器学习算法包括:

  1. 1.决策树。
  2. 2.SVM
  3. 3.朴素叶斯。
  4. 4.KNN
  5. 5.K值。
  6. 6.随机森林。

24252a3e2279c278a7cafc07dcb81febc4b20a18

下面是使用和R代码实现并简要解释这些常见机器学习算法。

1.决策树:

这是作者最喜欢的算法之一,作者经常使用它。它是一种主要用于分类问题的监督学习算法。令人惊讶的是,它竟然适用于分类和连续因变量。在这个算法中,我们可以将人口分成两个或更多的齐次集合。这需要基于一些非常重要的属性和独立变量完成的,以使组群尽可能独立。

Python代码

#Import Library#Import other necessary libraries like pandas, numpy...from sklearn import tree#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create tree object model = tree.DecisionTreeClassifier(criterion='gini') # for classification, here you can change the algorithm as gini or entropy (information gain) by default it is gini  # model = tree.DecisionTreeRegressor() for regression# Train the model using the training sets and check scoremodel.fit(X, y)model.score(X, y)#Predict Outputpredicted= model.predict(x_test)

R

library(rpart)x <- cbind(x_train,y_train)# grow tree fit <- rpart(y_train ~ ., data = x,method="class")summary(fit)#Predict Output predicted= predict(fit,x_test)

2.支持向量机(SVM)

这是一种分类方法。在这个算法中,我们将每个数据项绘制为一个n维空间中的一个点(其中n是你拥有的特征的数量),每个特征的值是特定坐标的值。

例如,如果我们只有两个特征,比如一个人的身高和头发长度,我们首先将这两个变量绘制在二维空间中,每个点有两个坐标值表示(称为支持向量)。接着,我们将找到一些将两个不同分类的数据组之间的数据分割的行,这将是两组中最近点之间距离最远的线。

Python代码

#Import Libraryfrom sklearn import svm#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create SVM classification object model = svm.svc() # there is various option associated with it, this is simple for classification. You can refer link, for mo# re detail.# Train the model using the training sets and check scoremodel.fit(X, y)model.score(X, y)#Predict Outputpredicted= model.predict(x_test)

R

library(e1071)x <- cbind(x_train,y_train)# Fitting modelfit <-svm(y_train ~ ., data = x)summary(fit)#Predict Output predicted= predict(fit,x_test)

3.朴素叶斯:

这是一种基于贝叶斯定理的分类技术,假设预测变量之间具有独立性。简而言之,朴素贝叶斯分类器假设类中特定特征的存在与任何其他特征的存在无关。例如,如果果实呈红色,圆形,直径约3英寸,则果实可以被认为是苹果。即使这些特征依赖于彼此或者依赖于其他特征的存在,朴素贝叶斯分类器也会考虑所有这些特性来独立地预测该水果是苹果的可能性。

朴素贝叶斯模型很容易构建,对于非常大的数据集特别有用。朴素贝叶斯是众所周知的,高度复杂的分类方法。

贝叶斯定理提供了一种计算P(c),P(x)和P(x|c)的后验概率的方法:P(c|x)。

·         P(c|x)是给定预测器(属性)的类(目标)的后验概率。

·         P(c)是类的先验概率。

·         P(x|c)是预测器给定类的概率的可能性。

·         P(x)是预测器的先验概率。

Python代码

#Import Libraryfrom sklearn.naive_bayes import GaussianNB#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create SVM classification object model = GaussianNB() # there is other distribution for multinomial classes like Bernoulli Naive Bayes, Refer link# Train the model using the training sets and check scoremodel.fit(X, y)#Predict Outputpredicted= model.predict(x_test)

R

library(e1071)x <- cbind(x_train,y_train)# Fitting modelfit <-naiveBayes(y_train ~ ., data = x)summary(fit)#Predict Output predicted= predict(fit,x_test)

4.KNN(最近居):

这个算法可以用于分类和回归问题。但在ML行业中分类问题更为广泛。K近邻是一种简单的算法,它存储所有可用的案例,并通过其K个邻居的多数投票来分类新案例。KNN算法的核心是如果一个样本在特征空间中的K个最相邻样本值得大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。其中判断的依据是距离函数的计算。

这些距离函数可以是欧几里得,曼哈顿,闵可夫斯基或汉明距离。前三个函数用于连续函数,Hamming用于分类变量。如果K = 1,那么这个情况就被简单地分配给它最近的邻居的类别。有时候,在执行KNN建模时选择K是一个巨大的挑战。

KNN可以很容易地映射到我们的真实生活中。如果你想了解一个你不了解的人,你可能会想知道他们的密友和他们进入的圈子,以获得他们的信息!

选择KNN之前需要考虑的事项是:

  • KNN算资源上是昂的。
  • 变量应该被标准化,否则较高范围的变量可能会偏差
  • KNN之前更多地预处段,如异常/噪音消除。

Python代码

#Import Libraryfrom sklearn.neighbors import KNeighborsClassifier#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create KNeighbors classifier object model KNeighborsClassifier(n_neighbors=6) # default value for n_neighbors is 5# Train the model using the training sets and check scoremodel.fit(X, y)#Predict Outputpredicted= model.predict(x_test)

R

library(knn)x <- cbind(x_train,y_train)# Fitting modelfit <-knn(y_train ~ ., data = x,k=5)summary(fit)#Predict Output predicted= predict(fit,x_test)

5.K值:

这是一种解决聚类问题的无监督算法,其过程遵循一个简单的方法,即通过一定数量的聚类来分类给定的数据集(假设K个聚类)。群集内的数据点与同级群组是同质且异质的。

还记得从墨迹中弄出形状吗?K-means有点类似于这个活动。你可以通过看形状破译有多少不同的群集/人口存在!

K-means如何形成一个集群:

  1. K-值为每个群集K个点数,称为质心。
  2. 每个数据点形成具有最接近心的群集,即K个群集。
  3. 根据有集群成员查找每个集群的心。
  4. 由于我有新的心,重复步2和步3.从新心找到每个数据点的最近距离,并与新的K个聚。重复程直到收,即心不

如何确定K的价值:

在K-means中,我们有簇,每个簇都有自己的质心。集群内质心和数据点之差的平方和构成该集群平方值的总和。另外,当所有群集的平方和的总和被加上时,它成为群集解决方案的平方和的总和。

我们知道,随着簇数量的增加,这个值会不断下降,但是如果你绘制结果的话,你可能会看到,平方距离的总和急剧下降到某个K值,然后慢得多。这样,我们就可以找到最佳的簇数。

Python代码

#Import Libraryfrom sklearn.cluster import KMeans#Assumed you have, X (attributes) for training data set and x_test(attributes) of test_dataset# Create KNeighbors classifier object model k_means = KMeans(n_clusters=3, random_state=0)# Train the model using the training sets and check scoremodel.fit(X)#Predict Outputpredicted= model.predict(x_test)

R

library(cluster)fit <- kmeans(X, 3) # 5 cluster solution

6.随机森林:

随机森林是一个决策树集合的术语。在随机森林里,我们有一系列被称为森林的决策树。为了根据属性对新的对象进行分类,每棵树都给出了一个分类,并且我们说这棵树对那个分类“投票”,森林选择票数最多的分类(在森林中的所有树上)。

每棵树种植和生长如下:

  1. 如果训练集中的病例数N随机抽取N个病例本,并行替
  2. 如果有M量,指定一个数m << M,使得从M中随机选择每个m变量,并且使用m上的最佳划分来分割点。在森林生m保持不
  3. 每棵都尽可能地生。没有修剪。

Python代码

#Import Libraryfrom sklearn.ensemble import RandomForestClassifier#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create Random Forest objectmodel= RandomForestClassifier()# Train the model using the training sets and check scoremodel.fit(X, y)#Predict Outputpredicted= model.predict(x_test)

R

library(randomForest)x <- cbind(x_train,y_train)# Fitting modelfit <- randomForest(Species ~ ., x,ntree=500)summary(fit)#Predict Output predicted= predict(fit,x_test)

本文由北邮老师推荐,组织翻译。

文章原标题《important-machine-learning-algorithms》

作者:,译者:虎说八道,审阅:。

文章为简译,更为详细的内容,请查看

转载地址:http://pzqpx.baihongyu.com/

你可能感兴趣的文章
一款帮助你生成非常有趣的扇形扑克牌风格特效的jQuery插件-Baraja
查看>>
HTML5实践 -- 如何使用css3丰富我们的图片样式 - part2
查看>>
C#整合VS2010和NUnit
查看>>
eclipse连接远程hadoop集群开发时0700问题解决方案
查看>>
用ASP实现简单的繁简转换
查看>>
【转】Unable to load embedded resource from assembly 无法加载的程序集嵌入的资源
查看>>
Coreseek Windows下安装调试
查看>>
Android的图片缓存ImageCache(转)
查看>>
1.C#中几个简单的内置Attribute
查看>>
九、Null在Java中的精确表示
查看>>
Python介绍、环境搭建(Eclipse插件)、第一个程序
查看>>
spring基础部分——注解
查看>>
Day2作业:购物商城
查看>>
php 连接 mssql sql2008
查看>>
Java POI操作Excle工具类
查看>>
C#中 String 格式的日期时间 转为 DateTime
查看>>
如何参与一个GitHub开源项目
查看>>
【转】RestQL:现代化的 API 开发方式
查看>>
所谓技术团队绩效
查看>>
python生成md5, shell生成md5
查看>>