R语言 深度学习

R语言 深度学习

深度学习是一种人工智能或AI功能,它试图模仿或模仿人脑的工作原理,为决策目的进行数据处理和模式创建。它是人工智能中ML或机器学习的一个子集,拥有或拥有能够从无标签或无结构的数据中进行无监督学习的网络。深度学习也可以被称为深度神经学习或深度神经网络。深度学习人工智能能够在没有人类监督的情况下学习,从任何种类的数据中汲取营养。作为机器学习的一个子集,深度学习利用层次分明的人工神经网络来进行机器学习的程序或过程。在深度学习的帮助下,我们可以解开大量非结构性的数据。对于人类来说,这通常需要几十年的时间来理解和处理它。

在R语言中的实现

在适当的时候,R语言已经在 CRAN 中装饰了许多深度学习包。这些包中的一些如下。

R包名称 描述
nnet 用于具有单个隐藏层的前馈NN,或用于多指标对数线性模型。
neuralnet 用于使用反向传播的NN训练。
h2o 这是一个用于H2O的R脚本功能。
RSNNS 斯图加特NN模拟器的一个接口。
Tensorflow 一个用于TensorFlow的接口。
deepnet 它是R语言中用于深度学习的一个工具包。
darch 这是一个用于深度架构和受限玻尔兹曼机的包。
rnn 一个实现循环NN的包。
FCNN4R 用于FCNN库的接口,允许用户扩展ANN。
rcppdl 用于实现机器学习。
deepr 基于darch和deepnet,它是一个加强简化深度学习的训练、预测过程和微调的软件包。

最近 Keras、kerasR和keras 也被用于深度学习的目的。这里我们将使用 deepnet包来 实现深度学习。让我们继续按步骤进行实现。整个实现过程可以分为以下几个步骤。

第1步:安装和加载包

在进行实现之前,先安装所需的包。对于我们的实现,我们将需要 deepnet和mlbench包。 要从R控制台安装这些包,请使用 install.packages() 命令。在成功安装这些包后,使用 library() 命令在R脚本中加载它们,如下所示。

# Deep Learning in R
# loading the required packages
library(mlbench)
library(deepnet)
R

第2步:选择数据集

现在的任务是选择一个合适的数据集来实现。在这里,让我们使用 mlbench包下乳腺癌数据集。 在R脚本中包括该数据集,如下所示。

# Deep learning in R
# loading the required packages
library(mlbench)
library(deepnet)
data("BreastCancer")
  
# Clean off rows with missing data
BreastCancer = BreastCancer[which(complete.cases(BreastCancer)
                                  == TRUE),]
head(BreastCancer)
names(BreastCancer)
R

输出

> head(BreastCancer)
       Id Cl.thickness Cell.size Cell.shape Marg.adhesion Epith.c.size Bare.nuclei Bl.cromatin Normal.nucleoli Mitoses     Class
1 1000025            5         1          1             1            2           1           3               1       1    benign
2 1002945            5         4          4             5            7          10           3               2       1    benign
3 1015425            3         1          1             1            2           2           3               1       1    benign
4 1016277            6         8          8             1            3           4           3               7       1    benign
5 1017023            4         1          1             3            2           1           3               1       1    benign
6 1017122            8        10         10             8            7          10           9               7       1 malignant
> names(BreastCancer)
 [1] "Id"              "Cl.thickness"    "Cell.size"       "Cell.shape"      "Marg.adhesion"   "Epith.c.size"    "Bare.nuclei"    
 [8] "Bl.cromatin"     "Normal.nucleoli" "Mitoses"         "Class" 
R

第3步:将deepnet包应用到数据集上

在选定的数据集上应用深度学习包。这里,为自变量创建一组特征,并创建因变量。

# Deep learning in R
# Loading the required packages
library(mlbench)
library(deepnet)
data("BreastCancer")
  
# Clean off rows with missing data
BreastCancer = BreastCancer[which(complete.cases(BreastCancer)
                                  == TRUE),]
  
head(BreastCancer)
names(BreastCancer)
y = as.matrix(BreastCancer[, 11])
y[which(y == "benign")] = 0
y[which(y == "malignant")] = 1
y = as.numeric(y)
x = as.numeric(as.matrix(BreastCancer[, 2:10]))
x = matrix(as.numeric(x), ncol = 9)
R

第4步:对NN进行建模

应用 deepnet 包下的 nn.train() 函数,以便为神经网络建模。

# Deep learning in R
# Loading packages in R
library(mlbench)
library(deepnet)
data("BreastCancer")
  
# Clean off rows with missing data
BreastCancer = BreastCancer[which(complete.cases(BreastCancer)
                                  == TRUE),]
  
head(BreastCancer)
names(BreastCancer)
y = as.matrix(BreastCancer[, 11])
y[which(y == "benign")] = 0
y[which(y == "malignant")] = 1
y = as.numeric(y)
x = as.numeric(as.matrix(BreastCancer[, 2:10]))
x = matrix(as.numeric(x), ncol = 9)
  
# Applying nn.train() function
nn <- nn.train(x, y, hidden = c(5))
yy = nn.predict(nn, x)
print(head(yy))
R

输出

> print(head(yy))
          [,1]
[1,] 0.2743838
[2,] 0.4130857
[3,] 0.2892783
[4,] 0.4232022
[5,] 0.2817078
[6,] 0.4526502
R

第5步:创建一个混淆矩阵

检索神经网络的输出,然后将其转换为类。为了创建一个混淆矩阵,使用 table() 函数。同时通过将对角线元素的总和除以总计数或所有数字的总和来检查混淆矩阵的准确性。

# Deep Learning in R
# Loading required packages
library(mlbench)
library(deepnet)
data("BreastCancer")
  
# Clean off rows with missing data
BreastCancer = BreastCancer[which(complete.cases(BreastCancer)
                                  == TRUE),]
  
head(BreastCancer)
names(BreastCancer)
y = as.matrix(BreastCancer[, 11])
y[which(y == "benign")] = 0
y[which(y == "malignant")] = 1
y = as.numeric(y)
x = as.numeric(as.matrix(BreastCancer[, 2:10]))
x = matrix(as.numeric(x), ncol = 9)
  
# Applying nn.train() method
nn <- nn.train(x, y, hidden = c(5))
yy = nn.predict(nn, x)
print(head(yy))
yhat = matrix(0,length(yy), 1)
yhat[which(yy > mean(yy))] = 1
yhat[which(yy <= mean(yy))] = 0
  
# Applying table() function
cm = table(y, yhat)
print(cm)
print(sum(diag(cm))/sum(cm))
R

输出

> print(cm)
   yhat
y     0   1
  0 425  19
  1   4 235
> print(sum(diag(cm))/sum(cm))
[1] 0.966325
R

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册