机器学习

人工神经网络-R

2018-05-12  本文已影响3人  灵妍
1、数据预处理

代码:

# Artificial Neural Network

# Importing the dataset
dataset = read.csv('Churn_Modelling.csv')
dataset = dataset[4:14]

# Encoding the categorical variables as factors
dataset$Geography = as.numeric(factor(dataset$Geography,
                                      levels = c('France', 'Spain', 'Germany'),
                                      labels = c(1, 2, 3)))
dataset$Gender = as.numeric(factor(dataset$Gender,
                                   levels = c('Female', 'Male'),
                                   labels = c(1, 2)))

# Splitting the dataset into the Training set and Test set
#install.packages('caTools')
library(caTools)
set.seed(123)
split = sample.split(dataset$Exited, SplitRatio = 0.8)
training_set = subset(dataset, split == TRUE)
test_set = subset(dataset, split == FALSE)

# Feature Scaling
training_set[-11] = scale(training_set[-11])
test_set[-11] = scale(test_set[-11])
预处理后的数据.PNG

我们首先要对数据进行分析,确定自变量和因变量,然后导入数据,提取需要的变量,对值是文本的变量进行分类数据,由于R中有一种特殊的表示分类变量的数据类型,叫作因子,所以我们不需要对于多类分类数据进行虚拟变量的转换,也可以理解为它不是因子类型,但是后面我们会对该分类变量进行特征缩放,所以代表分类的数值大小,对于分类结果影响不大。
最后划分训练集和测试集,将除因变量以外的自变量进行特征缩放。

2、安装工具包

我们这里要安装的工具包是h2o,它是用Java语言开发的,跟其它工具包不同的是,在R中加载h2o后,相当于在RStudio中和h2o创建了一个连接,所有的指令是在h2o这个软件当中运行的。
这个工具包的优势在于可以设置计算机并行计算的内核数量,可以连接其它的服务器进行计算,可以灵活的调节参数,可以自适应调整参数值。
由于这个工具包是使用Java语言写的,在安装以前需要确定电脑已经安装了Java的开发环境。


安装Java开发环境.PNG

然后再RStudio中执行代码install.packages('h2o'),即可。

3、拟合模型

代码:

# Fitting ANN to the Training set
#install.packages('h2o')
library(h2o)
h2o.init(nthreads = -1)
model = h2o.deeplearning(y = 'Exited',
                         training_frame = as.h2o(training_set),
                         activation = 'Rectifier',
                         hidden = c(5,5),
                         epochs = 100,
                         train_samples_per_iteration = -2)
随机梯度下降算法.PNG
这里关键的步骤就是根据原理设置参数。
我们首先对h2o算法库进行初始化,设置用该计算机的全部核进行并行运算,这里的有多少核,对应的就是有多少微处理器(CPU)进行并行运算,我们所说的双核CPU,对应的就是一个CPU中集成了两片微处理器。
然后,进行深度学习算法的参数设置,先设置因变量的变量值,再设置训练集,这里要注意将训练集转换成h2o处理的类型,之后设置隐藏层的激活函数,设置隐藏层的层数以及每层的神经元个数(经验之谈:隐藏层神经元个数为输入层和输出层之和的均值),然后设置训练多少期(epoch),最后设置迭代的观察值的个数,这里设置的-2,为自适应,也就是算法根据总的观察值的个数自适应确定一次迭代的总的个数。
在本地安装完h2o工具包后,载入一直报错,说是R的版本不对,这个时候我们可以访问R的官网,点击base进行R的版本选择,安装对应的R版本,在RStuido中的工具全局选项中可以更换R的版本设置。
在进行h2o的初始化时,一直报错,这个时候可以参考http://www.guanggua.com/question/38101052-H2O-Initialisation-error-in-R-Error-in-h2oinit-H2O-failed-to-start-stopping-execution.html
是由与防火墙的原因,我们只要重新设置h2o访问RStudio的端口就可以了。我们这里的设置为:h2o.init(nthreads = -1,port = 50001)。
4、预测测试集

代码:

# Predicting the Test set results
y_pred = h2o.predict(model, newdata = as.h2o(test_set[-11]))
y_pred = (y_pred > 0.5)
y_pred = as.vector(y_pred)

# Making the Confusion Matrix
cm = table(test_set[, 11], y_pred)

# h2o.shutdown()
混淆矩阵.PNG
上一篇 下一篇

猜你喜欢

热点阅读