Advertisement

数据挖掘之人工神经网络

阅读量:

人工神经网络(Artificial Neural Networks, ANN)是模拟生物神经网络进行信息处理的一种数学模型。
人工神经元模型

激活函数主要分为域值函数(阶梯函数)、分段线性函数、非线性转移函数、Relu函数(计算简单、效果佳)。

人工神经网络的学习也称为训练,指神经网络在收到外部环境的刺激下调整神经网络的参数,使神经网络以一种新的方式对外部环境做出反应的过程。

目前,已有多种人工神经网络模型,常用来分类和预测的算法有BP神经网络(学习算法是elta学习规则,即误差校正学习算法)

举例:

数据样本如下:

复制代码
 #使用神经网络预测销量高低

    
 import pandas as pd
    
 data = pd.read_excel("sales_data.xls",index_col=u'序号')
    
  
    
 data[data==u'好'] = 1
    
 data[data==u'是'] = 1
    
 data[data==u'高'] = 1
    
 data[data!=1] = 0
    
  
    
 x = data.iloc[:,:3].as_matrix().astype(int)
    
 y = data.iloc[:,3].as_matrix().astype(int)
    
  
    
 from keras.models import Sequential
    
 from keras.layers.core import Dense,Activation
    
  
    
 model = Sequential() #建立模型
    
 model.add(Dense(input_dim=3,output_dim=10))
    
 model.add(Activation('relu')) #用relu函数作为激活函数,大幅提高准确度
    
 model.add(Dense(input_dim=10,output_dim=1))
    
 model.add(Activation('sigmoid')) #由于是0-1输出,用sigmoid函数作为激活函数
    
  
    
 model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
    
 #编译模型。由于二元分类,损失函数为binary_crossentropy。
    
 #另外常用的损失函数还有mean_squared_error、categorical_crossentropy等
    
 #求解方法用adam,还有sgd、rmsprop可选
    
  
    
 model.fit(x,y,nb_epoch=1000,batch_size=10) #训练模型,学习一千次
    
 model.predict_classes(x).reshape(len(y)) #分类预测
    
  
    
 def cm_plot(y, yp): #混淆矩阵可视化函数
    
     from sklearn.metrics import confusion_matrix #导入混淆矩阵函数
    
     cm = confusion_matrix(y, yp) #混淆矩阵
    
   
    
     import matplotlib.pyplot as plt #导入作图库
    
     plt.matshow(cm, cmap=plt.cm.Greens) #画混淆矩阵图,配色风格使用cm.Greens,更多风格请参考官网。
    
     plt.colorbar() #颜色标签
    
   
    
     for x in range(len(cm)): #数据标签
    
     for y in range(len(cm)):
    
         plt.annotate(cm[x,y], xy=(x, y), horizontalalignment='center', verticalalignment='center')
    
   
    
     plt.ylabel('True label') #坐标轴标签
    
     plt.xlabel('Predicted label') #坐标轴标签
    
     return plt
    
  
    
 cm_plot(y,yp).show()
    
    
    
    

输出结果如下:

可以看出预测准确率为25/34=73.5%,预测准确率较低,是由于神经网络训练需要较多样本,这里是由于训练数据较少造成的。

另外,神经网络的拟合能力是很强的,容易出现过拟合现象。目前流行的防止过拟合的方法是随机让部分神经网络节点休眠。

全部评论 (0)

还没有任何评论哟~