zoukankan      html  css  js  c++  java
  • 数据挖掘——回归分析2——简单神经网络的python实现

     
    神经网络(Artificial Neural Network):全称为人工神经网络(ANN),是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型。
     
    部分原理:
    下面是单个神经元的数学模型:
    这里写图片描述
    +1代表偏移值(偏置项, Bias Units);X1,X2,X2代表初始特征;w0,w1,w2,w3代表权重(Weight),即参数,是特征的缩放倍数;特征经过缩放和偏移后全部累加起来,此后还要经过一次激活运算然后再输出。

    最常见的激活函数是Sigmoid(S形曲线),Sigmoid有时也称为逻辑回归(Logistic Regression),简称logsig。logsig曲线的公式如下:
    这里写图片描述
    还有一种S形曲线也很常见到,叫双曲正切函数(tanh),或称tansig,可以替代logsig。
    这里写图片描述
    下面是它们的函数图形,从图中可以看出logsig的数值范围是0~1,而tansig的数值范围是-1~1。

    这里写图片描述

     
     
     这里写图片描述
     
    在python中的实现:
    对训练集的预处理与逻辑回归相同,从模型构建开始不同
    ###对训练集做预处理操作
    ###模型构建、训练、评分
    from sklearn.neural_network import MLPClassifier
    
    for i in range(1,11):
        ANNmodel = MLPClassifier(
                activation='relu',   #激活函数为relu,类似于s型函数
               hidden_layer_sizes=i)  #隐藏层为i
        ANNmodel.fit(inputData,outputData)  #训练模型
        score = ANNmodel.score(inputData,outputData)  #模型评分
        print(str(i) + ',' + str(score))  #每次循环都打印模型评分
    #模型评分基本稳定在0.83x左右   

    可以发现,隐藏层增大,模型评分趋于一个较稳定的值,即并非隐藏层越多,模型越好。

    ###对测试集做相同的预处理操作
    ###输入测试集作为参数
    inputNewData = dummyNewData[dummySelect]
    ###得到预测结果,以序列形式进行输出
    ANNmodel.predict(inputNewData)

     
  • 相关阅读:
    Python之黏包
    Python的subprocess模块
    (经典)TCP粘包分析
    python--数据类型bytes
    python socket编程
    Python之模块和包
    Memcache的客户端连接系列(二) Python
    Memcache的客户端连接系列(一) Java
    Stunnel客户端安装和配置
    分布式数据库中间件的实现原理介绍四:平滑扩容
  • 原文地址:https://www.cnblogs.com/rix-yb/p/9751833.html
Copyright © 2011-2022 走看看