############## 数据准备 ############
library(neuralnet)
library(caret)
data("iris")
head(iris)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 划分训练集和测试集
indexes <- sample(1:150,100)
train <- iris[indexes, ]
test <- iris[-indexes, ]
xtest <- test[, -5] # 测试集去掉类标
ytest <- test[, 5] # 测试集的类标
############## NeuralNet ############
library(neuralnet)
library(caret)
nnet <- neuralnet(Species~., train, hidden = c(4,3), linear.output = FALSE)
plot(nnet)
# 对xtest进行测试
ypred <- neuralnet::compute(nnet, xtest)
y_pre <- levels(iris$Species)[max.col(ypred$net.result)]
length(which(y_pre <-<- ytest))/length(ytest)
# 0.98
cm <- confusionMatrix(as.factor(ytest), as.factor(y_pre))
print(cm)
############## RandomForest ############
library(randomForest)
RF <- randomForest(Species ~ ., data = train, importance=TRUE, proximity=TRUE,ntree=500,mtry=2)
# 查看特征的重要性
varImpPlot(RF, main = "variable importance")
#对测试集进行预测
pred <- predict(RF,newdata = xtest)
length(which((pred == ytest) == T))/length(ytest)
# 0.94
############## NaiveBayes ############
library(klaR)
NB <- NaiveBayes(Species ~ ., data = train,usekernel = FALSE, fL = 1)
# usekernel:是否使用核密度估计器估计密度函数。
# fL:是否进行拉普拉斯修正,默认情况下不进行修正。数据量较小时可以设置为1,进行拉普拉斯修正。
knb_predict <- predict(NB,newdata = xtest)
#生成实际与预测交叉表和预测精度
table(ytest ,predict=knb_predict$class)
length(which((knb_predict$class == ytest) == T))/length(ytest)
# 0.96
############## KNN ############
library(class)
knn_predict <- knn(train[,-5], xtest, cl = train[,5], k = 5)
length(which((knn_predict == ytest) == T))/length(ytest)
# 0.98
############## SVM ############
library(e1071)
svm.model<- svm(Species ~ ., data = train)
svm.pred <- predict(svm.model,xtest)
length(which((svm.pred == ytest) == T))/length(ytest)
# 0.94
########### multinomial logistic regression #############
library(nnet)
mlr.model <- nnet::multinom(Species ~., data = train)
mlr.out <- predict(mlr.model,xtest)
length(which((mlr.out == ytest) == T))/length(ytest)
# 0.98
机器学习笔记7-R语言实现多种分类算法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一看到logistics回归分类器,第一反应这个不是统计上的logistics回归嘛,其实是一样的,之前也给大家写...
- 从今天开始给大家写机器学习算法,这个东西并不是大多数人想象的那么高深,也不是说编程的人,搞计算机的人才能学习使用,...
- 基于决策数的分类方法是一种非常直观的,非常好解释的,初中生都可以看得懂的分类算法,所以今天就给大家写写这个简单实用...
- 各位读者朋友们大家好啊,最近有不少读者私信我说关于单臂实验的meta分析能不能出个教程,尤其是对于单臂连续型变量,...