r语言数据分析datairis

使用data("iris")命令导入iris数据集,并用R语言对该数据集使用决策树算法(分类回归树、组合预测模型、随机森林)、神经网络算法进行分类,并比较这些算法在分类准确性上面的不同。:

以下内容部分参考ChatGPT模型:


首先需要安装并加载相应的包,包括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)

如果我的建议对您有帮助、请点击采纳、祝您生活愉快