使用data("iris")命令导入iris数据集,并用R语言对该数据集使用决策树算法(分类回归树、组合预测模型、随机森林)、神经网络算法进行分类,并比较这些算法在分类准确性上面的不同。:
首先需要安装并加载相应的包,包括rpart、caret、randomForest、neuralnet等。
然后使用data("iris")命令导入iris数据集。
接着使用rpart包中的rpart函数来创建一个分类回归树模型,并使用predict函数对测试集进行预测。代码如下:
library(rpart)
# 划分数据集
trainIndex <- createDataPartition(iris$Species, p = .7, list = FALSE)
train <- iris[ trainIndex,]
test <- iris[-trainIndex,]
# 创建模型
model <- rpart(Species ~ ., data=train, method="class")
# 预测
predictions <- predict(model, test, type = "class")
然后使用caret包中的train函数来创建一个组合预测模型(包括k最近邻、线性判别分析、决策树等算法),并使用predict函数对测试集进行预测。代码如下:
library(caret)
# 划分数据集
trainIndex <- createDataPartition(iris$Species, p = .7, list = FALSE)
train <- iris[ trainIndex,]
test <- iris[-trainIndex,]
# 创建模型
model <- train(Species ~ ., data=train, method="lvq", trControl=trainControl(method="cv"))
# 预测
predictions <- predict(model, test)
接着使用randomForest包中的randomForest函数来创建一个随机森林模型,并使用predict函数对测试集进行预测。代码如下:
library(randomForest)
# 划分数据集
trainIndex <- createDataPartition(iris$Species, p = .7, list = FALSE)
train <- iris[ trainIndex,]
test <- iris[-trainIndex,]
# 创建模型
model <- randomForest(Species ~ ., data=train)
# 预测
predictions <- predict(model, test)
最后使用neuralnet包中的neuralnet函数来创建一个神经网络模型,并使用compute函数对测试集进行预测。代码如下:
library(neuralnet)
# 划分数据集
trainIndex <- createDataPartition(iris$Species, p = .7, list = FALSE)
train <- iris[ trainIndex,]
test <- iris[-trainIndex,]
# 创建模型
model <- neuralnet(Species ~ ., data=train, hidden=3)
# 预测
predictions <- compute(model, test[,1:4])
最后可以使用confusionMatrix函数来比较不同算法在分类准确性上的不同。代码如下:
library(caret)
# 划分数据集
trainIndex <- createDataPartition(iris$Species, p = .7, list = FALSE)
train <- iris[ trainIndex,]
test <- iris[-trainIndex,]
# 创建模型
model1 <- rpart(Species ~ ., data=train, method="class")
model2 <- train(Species ~ ., data=train, method="lvq", trControl=trainControl(method="cv"))
model3 <- randomForest(Species ~ ., data=train)
model4 <- neuralnet(Species ~ ., data=train, hidden=3)
# 预测
predictions1 <- predict(model1, test, type = "class")
predictions2 <- predict(model2, test)
predictions3 <- predict(model3, test)
predictions4 <- compute(model4, test[,1:4])
# 比较准确性
confusionMatrix(predictions1, test$Species)
confusionMatrix(predictions2, test$Species)
confusionMatrix(predictions3, test$Species, mode="everything")
confusionMatrix(colnames(predictions4$net.result)[apply(predictions4$net.result, 1, which.max)], test$Species)