Advertisement

R语言 ANN-人工神经网络

阅读量:

该文本提供了一个使用R语言构建人工神经网络(ANN)进行分类的完整示例。首先加载了必要的库如chillR、tidyr、dplyr等,并对数据进行了预处理包括标准化和变量转换。接着定义了神经网络模型并进行了训练,并通过测试集进行预测。计算了模型的准确率和错误率,并绘制了ROC曲线以评估模型性能。

test–R语言人工神经网络进行分类的代码示例:

复制代码
    #数据准备   #ALL
    rm(list=ls())
    library(chillR)
    library(tidyr)
    library(dplyr)              #mutate依赖环境
    library(magrittr)       #%>%依赖
    library(tidyverse)   #数据预处理--便于数据操作和可视化
    library(tidytext)    #分组排序 
    library(glmnet)      #lasso&ridge
    library(rpart)         #决策树 
    library(ipred)        #bagging 
    library(randomForest)    #随机森林
    library(caret)
    library(RSNNS)
    library(dplyr)              #mutate依赖环境
    library(magrittr)       #%>%依赖
    library(e1071)
    setwd("ALL")
    data<- read.csv("ALL.csv", header = T)
    data=data %>% mutate(Groups=as.factor(Groups)) %>% as.data.frame()
    str(data)
    head(data)
    qplot(X1,X2,data=data,color=Groups)
    
    #将数据集分为训练集和测试集-70%
    set.seed(123)
    trainIndex <- createDataPartition(data$Groups, p = 0.7, list = FALSE)
    train <- data[trainIndex, ]
    test <- data[-trainIndex, ]
    
    #对数据集进行预处理
     #这段代码的意思是,使用scale()函数对trainingSet数据框的前四列进行标准化,即减去每列的均值并除以每列的标准差12。这样可以消除不同变量之间的量纲差异,便于进行后续的分析
    trainingSetScaled <- scale(train[,2:415])  
    testingSetScaled <- scale(test[,2:415])
    
    #转换变量
    train$Groups <- as.numeric(factor(train$Groups))
    test$Groups <- as.numeric(factor(test$Groups))
    
    #创建神经网络模型
    ANN<- mlp(trainingSetScaled,
        train$Groups,
        size = 3, 
        learnFuncParams = c(0.1), maxit = 1000, 
        inputsTest = testingSetScaled,
        targetsTest = test$Groups)
复制代码
      #预测
        pred<- predict(ANN, newdata=testingSetScaled,probability = TRUE)
        pred
    
    #计算准确率
        pred<-predict(ANN,newdata=testingSetScaled,probability = TRUE)
        pred
        confusion_matrix<-table(Predicted=pred,Actual=test$Groups)
        confusion_matrix
        Errorrate<-1-sum(diag(confusion_matrix))/sum(confusion_matrix)      #错误率
        accuracy<-sum(diag(confusion_matrix))/sum(confusion_matrix)         #准确率
    
    #ROC
        roc_curve <- roc(test$Groups , pred)
        plot(roc_curve, main = "ROC Curve for Model", print.auc = TRUE, legacy.axes = TRUE)
    
    plot(model )![在这里插入图片描述]()![在这里插入图片描述]()

全部评论 (0)

还没有任何评论哟~