在本帖中,您将发现 8 个 R 语言非线性分类的示例。每个示例都可供您复制粘贴并修改以适应您自己的问题。
本帖中的所有示例都使用了 R 语言自带的 iris flowers dataset(位于 datasets 包中)。该数据集描述了鸢尾花(iris flowers)的测量数据,需要对每个观测值进行分类,以确定其所属的三个鸢尾花种类之一。
通过我的新书《Machine Learning Mastery With R》开启您的项目,书中包含分步教程和所有示例的R 源代码文件。
让我们开始吧。
混合判别分析
此示例演示了在 iris 数据集上使用 MDA 方法。
1 2 3 4 5 6 7 8 9 10 11 |
# 加载包 library(mda) data(iris) # 拟合模型 fit <- mda(Species~., data=iris) # 总结拟合 summary(fit) # 进行预测 predictions <- predict(fit, iris[,1:4]) # 总结准确度 table(predictions, iris$Species) |
在 mda 包中了解更多关于 mda 函数的信息。
二次判别分析
QDA 寻求属性之间最大化类别间距离的二次关系。
此示例演示了在 iris 数据集上使用 QDA 方法。
1 2 3 4 5 6 7 8 9 10 11 |
# 加载包 library(MASS) data(iris) # 拟合模型 fit <- qda(Species~., data=iris) # 总结拟合 summary(fit) # 进行预测 predictions <- predict(fit, iris[,1:4])$class # 总结准确度 table(predictions, iris$Species) |
在 MASS 包中了解更多关于 qda 函数的信息。
需要更多关于R机器学习的帮助吗?
参加我为期14天的免费电子邮件课程,了解如何在您的项目中使用R(附带示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
正则判别分析
此示例演示了在 iris 数据集上使用 RDA 方法。
1 2 3 4 5 6 7 8 9 10 11 |
# 加载包 library(klaR) data(iris) # 拟合模型 fit <- rda(Species~., data=iris, gamma=0.05, lambda=0.01) # 总结拟合 summary(fit) # 进行预测 predictions <- predict(fit, iris[,1:4])$class # 总结准确度 table(predictions, iris$Species) |
在 klaR 包中了解更多关于 rda 函数的信息。
神经网络
神经网络 (NN) 是由接收输入并将其结果传递出去的计算单元组成的图。这些单元按层排序,将输入向量的特征连接到输出向量的特征。通过训练(如反向传播算法)可以设计和训练神经网络来模拟数据中的潜在关系。
此示例演示了在 iris 数据集上使用神经网络。
1 2 3 4 5 6 7 8 9 10 11 |
# 加载包 library(nnet) data(iris) # 拟合模型 fit <- nnet(Species~., data=iris, size=4, decay=0.0001, maxit=500) # 总结拟合 summary(fit) # 进行预测 predictions <- predict(fit, iris[,1:4], type="class") # 总结准确度 table(predictions, iris$Species) |
在 nnet 包中了解更多关于 nnet 函数的信息。
灵活判别分析
此示例演示了在 iris 数据集上使用 FDA 方法。
1 2 3 4 5 6 7 8 9 10 11 |
# 加载包 library(mda) data(iris) # 拟合模型 fit <- fda(Species~., data=iris) # 总结拟合 summary(fit) # 进行预测 predictions <- predict(fit, iris[,1:4]) # 总结准确度 table(predictions, iris$Species) |
在 mda 包中了解更多关于 fda 函数的信息。
支持向量机
支持向量机 (SVM) 是一种在经过转换的问题空间中使用最佳分隔两类的方法。通过一对多方法支持多类分类。SVM 还通过使用允许误差的最小值来建模函数来支持回归。
此示例演示了在 iris 数据集上使用 SVM 方法。
1 2 3 4 5 6 7 8 9 10 11 |
# 加载包 library(kernlab) data(iris) # 拟合模型 fit <- ksvm(Species~., data=iris) # 总结拟合 summary(fit) # 进行预测 predictions <- predict(fit, iris[,1:4], type="response") # 总结准确度 table(predictions, iris$Species) |
在 kernlab 包中了解更多关于 ksvm 函数的信息。
k-近邻
k-近邻 (kNN) 方法通过查找与给定数据实例相似的实例(使用相似度函数)并返回最相似数据实例的平均值或多数值来做出预测。
此示例演示了在 iris 数据集上使用 kNN 方法。
1 2 3 4 5 6 7 8 9 10 11 |
# 加载包 library(caret) data(iris) # 拟合模型 fit <- knn3(Species~., data=iris, k=5) # 总结拟合 summary(fit) # 进行预测 predictions <- predict(fit, iris[,1:4], type="class") # 总结准确度 table(predictions, iris$Species) |
在 caret 包中了解更多关于 knn3 函数的信息。
朴素贝叶斯
朴素贝叶斯使用贝叶斯定理来模拟每个属性与类别变量的条件关系。
此示例演示了在 iris 数据集上使用朴素贝叶斯。
1 2 3 4 5 6 7 8 9 10 11 |
# 加载包 library(e1071) data(iris) # 拟合模型 fit <- naiveBayes(Species~., data=iris) # 总结拟合 summary(fit) # 进行预测 predictions <- predict(fit, iris[,1:4]) # 总结准确度 table(predictions, iris$Species) |
在 e1071 包中了解更多关于 naiveBayes 函数的信息。
总结
在本帖中,您学习了 8 个使用 iris flowers 数据集在 R 语言中进行非线性分类的示例。
每个示例都是通用的,可供您复制粘贴并修改以适应您自己的问题。
朴素贝叶斯通常被认为是线性分类器。例外情况是,如果您学习的是高斯朴素贝叶斯(数值特征集),并且为每个特征为每个类别学习不同的方差。
Tom Mitchell 的新书章节很好地涵盖了这一主题:http://www.cs.cmu.edu/~tom/mlbook/NBayesLogReg.pdf
这个例子很好,但我知道的还有更多。例如,神经网络有不同的模型,但它仅与文本数据相关。
你好,感谢您的帖子,我正在查看您的 QDA 模型,当我运行 summary(fit) 时,它显示如下:
长度 类 模式
prior 3 -none- numeric
counts 3 -none- numeric
means 12 -none- numeric
scaling 48 -none- numeric
ldet 3 -none- numeric
lev 3 -none- character
N 1 -none- numeric
call 3 -none- call
terms 3 terms call
xlevels 0 -none- list
您能否解释一下这个摘要?我还想查看模型中的变量重要性,并为将来的使用测试图像。
不,抱歉,也许可以查看模式的文档?