废话不多说,接着上一篇分析讲。

3.创建神经网络模型R

与R中同样使用Python的先前示例类似,我们将使用Keras作为创建神经网络的关键包。我们还需要安装tensorflow并reticulate运行我们的模型。Keras的使用允许在两种编码语言之间的编码中使用非常相似的样式。

library(keras)library(tensorflow)library(reticulate)library(kerasR)

第一步仍然是创建或上传相关数据框,作为进行分析的基础。在此示例中,我们将随机生成一个数据集来模拟R中的代码。像前面的示例一样,收到的援助的预测(Y)是电击类型和位置(X1,X2)的函数。通过使用命令指定属性,我们还可以将数字目标变量转换为分类变量ifelse。

df <- data.frame(replicate(1,sample(0:1000, 1000, rep=TRUE)))colnames(df) <- c("AidMillion")df$Aid_Given <- ifelse(df$AidMillion <= 500, "Above_500_Mill", "Below_500_Mill")df$TypeShock <- sample(c('Draught','Floods','Famine'), size = nrow(df), replace = TRUE)df$Location <- sample(c('Urban','Rural'), size = nrow(df), replace = TRUE)

为了具有适合分析的变量,我们需要将分类变量转换为数值变量。在R中,我们的预测变量和目标变量的转换要求通过as.factor 和as.numeric命令将每个分类分别转换为因子和整数。为了将目标变量转换为零和一值,我们可以依靠ifelse表达相关条件。随后,我们可以将数据帧拆分为一个测试,并通过命令进行训练runif。

df$LocationNum<-as.numeric(factor(df$Location))df$TypeShockNum<-as.numeric(factor(df$TypeShock))df$Aid_GivenNum<-ifelse(df$Aid_Given=="Above_500_Mill",1,0)set.seed(8)n<- dim(df)[1]train_df<-runif(n)<0.60df_train<- as.data.frame(df[train_df, ])df_test<- as.data.frame(df[!train_df, ])head(df)

在所有变量均采用数值格式后,在R中创建合适的目标变量和预测变量也需要进一步操作,以确保目标变为数组,预测变量为矩阵。与Python相比,这需要额外的步骤,因为变量的选择不能与arrayand data.matrix命令结合使用。这需要单独完成,而Python中的numpy允许组合转换。

X <- df_train[c("TypeShockNum","LocationNum")]y <- df_train[c("Aid_GivenNum")]X_t <- df_test[c("TypeShockNum","LocationNum")]y_t<- df_test[c("Aid_GivenNum")]X_train <- data.matrix(X)Y_train <- array(y$Aid_GivenNum)X_test <- data.matrix(X_t)Y_test <- array(y_t$Aid_GivenNum)

一旦变量被转换,我们将定义模型。R的这一步骤在样式方面与Python绝对相似,但有一些细微差别。定义顺序模型后,我们将使用美元符号添加图层和辍学函数。在第一层中,参数的唯一区别是语义。例如,我们将使用而不是input_dim input_shape来表示预测变量的数量。其余的仍然非常相似,包括其他参数的名称。

mod <- Sequential()model$add(Dense(units=3, activity_regularizer=regularizer_l1(0.001), input_shape = ncol(X_train), activation="sigmoid"))model$add(Dropout(rate = 0.1))model$add(Dense(units = 2))model$add(Dropout(rate = 0.1))model$add(Dense(units = 1))model

一旦定义了模型,就可以对其进行编译了。在R中,这是通过keras_compile命令完成的,同时保持大多数参数的定义与Python上例中用于损失函数和优化的方法相同。一旦定义了编译标准,就可以根据与Python中表示的参数相同的措词将模型拟合到训练变量。报告中没有重大差异,只是在措词上有一些变化,例如需要list在验证数据规范之前添加以及在函数内部插入模型。为了显示结果,在R中更容易,因为我们可以调用函数的结果来查看它们,而无需进一步的评估命令。

就损失函数而言,此模拟的最终结果是可以接受的,但是精度仍然太低。

keras_compile(model, loss = 'binary_crossentropy', optimizer = RMSprop(), metrics = c('accuracy'))history <-fit(model, X_train, Y_train, batch_size = 30, epochs = 250, verbose = 0, validation_data = list(X_test, Y_test))history

4.绘制模型并在R和Python中进行预测

一旦模型生成了相关的预测,我们就可以得出结果,以查看在各个迭代(历元)中损失和准确性结果的进展。在Python中,这很耗时,因为我们需要定义绘图的各种参数来绘制模型在准确性和损失方面的表现。下面的结果表明,在第50次迭代之后,准确性有了显着提高,损失函数也有所下降。

plt.plot(history.history ['accuracy'])

plt.plot(history.history ['val_accuracy'])

plt.title('modelprecision ')plt.ylabel('accuracy')

plt.xlabel('epoch' )

plt.legend(['train','test'],loc ='upper left')

plt.show()plt.plot(history.history ['loss'])

plt.plot(history.history ['val_loss '])

plt.title('model loss')

plt.ylabel('loss')

plt.xlabel('epoch')

plt.legend(['train','test'],loc ='upper left')

plt.show()

另一方面,在R中绘制模型的损失和准确性的进程要容易得多。只需调用plot函数,我们就可以访问损失和准确性函数的趋势。这是多少R是一种视觉聚焦语言的证明,可以很容易地生成相关图。再次,我们可以看到我们的模型在第50个时期(即数据集上的迭代)有了显着改善。

plot(history)

最后,我们可以将预测值添加到测试数据集中以进一步验证其一致性。在Python中,predict和的舍入函数的组合可以生成一系列预测值,我们可以在测试数据集中使用该预测值进行进一步分析。

predictions = model.predict(X_test)predictions = [round(x[0]) for x in predictions]X_test['predictions'] = predictionsX_test.head(7)

同样,在R中,我们可以预测应用于测试数据集的值,将它们四舍五入,并通过使用美元符号来创建一个新变量来进行比较。除了语义上的一些更改外,该方法仍然是命令预测为测试样本中的输入样本生成输出预测。

pred <- predict(model, (X_test))df_test$pred <-round(pred, digits = 0)head(df_test,5)

5.最后的反思

尽管可以大大改善这些模型的输出,但此博客的目的是说明从Keras中创建神经网络时,从样式角度看R和Python的相似之处。事实是,神经网络可能比到目前为止的例子复杂得多。它可以是多层感知器,卷积网络或递归网络。它可以具有共享的特征提取层,多个输入或多个输出。尽管这是一个不断发展的领域,但对基本概念的基本理解可能足以模拟神经网络。这可以作为我们通过测试各种参数和优化功能来不断改进和建立已知知识的基础。

python建模分析实操_R和Python在数据建模方面的风格差异分析(下)相关推荐

  1. python建模分析实操_城市公交站点设置优化模型-基于Python

    城市公交站点设置的优化分析 一.模型应用 进入21世纪以来,我国城市公共交通飞速发展,然而随着经济社会发展,城市不断升级以及人民生活品质越来越好,城市交通拥堵.出行不便等问题日益突出,严重损坏了市民日 ...

  2. 【大学生课程实践】实操:使用Python爬虫爬取图片

    实操:使用Python爬虫爬取图片 参考链接: 源码部署 安装源码中的爬虫库 创建 images文件 参考链接: 本博客作为大佬博客学习笔记记录 参考链接:孩子说"你没看过奥特曼" ...

  3. python引入redis_实操演练解读非关系型数据库—Redis

    在互联网发展的早期,那还是一个各路军阀混战,实战为王的时代,没有所谓正规军,搞定问题才是王道. 当然,那个时期也没有那么多问题,互联网还是个新鲜的词汇,能被称作是网民的人也都是"稀有物种&q ...

  4. python商品评论分析_NLP实战:用主题建模分析网购评论(附Python代码)

    现在电商行业势头正好,对在线零售商来说,他们不受库存或空间的限制,而实体店则必须在有限的空间中存储产品. 但是,在线购物也有它的局限之处,最大的难题之一就是检验产品的真伪.它的质量是否如宣传所说的那么 ...

  5. python项目开发实战网盘-《Python项目案例开发从入门到实战》PDF版百度网盘

    「教程分享:Python项目开发从入门到实列」 本书例子具有实用性,20个不同类型的完整列子,600分钟高品质配套教学视频,完整的源码和教学课件,让你对枯燥的Python语言学习充满乐趣. 编辑推荐 ...

  6. python产品质量分析_产品评论 使用Python分析Amazon Smart产品评论

    在万物互联时代,智能产品正在推动智能生活的迅速普及.专注于广阔的智能产品市场,亚马逊一直致力于扩大其智能产品阵容.作为典型的跨境电子商务B2C平台 一.明确目标 建模和分析Amazon智能产品评论,探 ...

  7. Python股票分析系列——系列介绍和获取股票数据.p1

    本系列转载自youtuber sentdex博主的教程视频内容 https://www.youtube.com/watch?v=19yyasfGLhk&index=4&list=PLQ ...

  8. python股票分析入门_学习用Python分析股票数据(入门)

    学习使用python来分析股票,主要事涉及数据获取.数据可视化,以及探究数据中各项指标的含义及和关系.使用工具 pandas.numpy.datatime pandas-datareader 在线获取 ...

  9. python预测算整理集合 python根据历史数据,预测未来数据 神经网络时间序列预测python 销售收入分析与预测 神经网络预测控制 Python 源码 4个lstm做数据预测的案例源代码

    python 预测未来/神经网络/负荷/飞机零件故障/链路预测程序源码 1.python实现TensorFlow2股票股价预测(源码) 2.负荷预测(py thon例子,实时负荷预测,15分钟到4小时 ...

最新文章

  1. SAP MM 公司间退货STO的交货单PGI报错 -Purchase order 4500000773 does not contain items for a stock transfer-
  2. c++ builder 读取指定单个名称节点的值
  3. 机器人 知乎碧桂园_从房地产大亨到跨界造“机器人”,碧桂园葫芦里卖着什么药?...
  4. 乌镇现场·帅初:公有链的未来——链上校验,链下计算
  5. 《JavaScript入门经典(第6版)》——2.7 问答
  6. Oracle 查看 对象 持有锁的情况
  7. PHP yii 框架源码阅读(二) - 整体执行流程分析
  8. jvm(2)-java内存区域
  9. Codeforces Round #311 (Div. 2)B. Pasha and Tea 水题
  10. Hibernate框架之HQL查询与Criteria 查询的区别
  11. OpenShift 4 - DevSecOps Workshop (9) - 向Dev环境部署应用镜像
  12. [数据恢复答疑]用partition manager导致资料丢失怎么办?
  13. 产品经理必备 [Axure组件、PRD模板、竞品分析、数据分析等模板]
  14. 科学的失控与范式的超越——《侏罗纪公园》读后感
  15. Oracle数据优化,超级全
  16. 音视频通话:​Linphone基于SIP协议的语音视频电话软件
  17. 演讲:星座决定命运(密码为作者姓名拼音)
  18. linux安装ati工具,Linux下ATI驱动安装傻瓜安装方法
  19. BZOJ 3036 绿豆蛙的归宿
  20. 数据结构(六)散列查找 —— 编程作业01 :电话聊天狂人

热门文章

  1. php和mysql web开发 笔记_PHP和MySQL Web开发读书笔记---创建Web数据库
  2. 用国产CH32替代STM32,快来试试看!
  3. 用心推荐三个嵌入式方向精品号
  4. yolov3-tiny神经网络FPGA(ZYNQ7020)实现
  5. getclass方法 给属性赋值_反射给没有set方法的属性赋值
  6. java xor_java 简单xor加密
  7. 苹果是c语言安卓是什么语言,主流app是用什么语言开发的苹果和安卓的主流开...
  8. java 中数组与list_Java中List与数组相互转换实例分析
  9. android可扩展列表,android-可扩展列表视图未显示
  10. 关于修改了virc(增加了:set nu)但是vim行号还是不显示的问题