设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

60行代码徒手实现深度神经网络(3)

发布时间:2019-07-25 11:44 所属栏目:19 来源:佚名
导读:设置2个隐藏层,隐藏层节点数都为5,隐藏层都使用ReLu激活函数。 #设置两个隐藏层,采用ReLu激活函数 NN=NNClassifier(n=[np.nan,5,5,1],alpha=0.02, ITERNUM=200000,gfunc='ReLu') NN.fit(X_train,y_train) #绘制

设置2个隐藏层,隐藏层节点数都为5,隐藏层都使用ReLu激活函数。

  1. # 设置两个隐藏层,采用ReLu激活函数 
  2. NN = NNClassifier(n = [np.nan,5,5,1],alpha = 0.02, 
  3.  ITERNUM = 200000, gfunc = 'ReLu') 
  4. NN.fit(X_train,y_train) 
  5. # 绘制目标函数迭代曲线 
  6. %matplotlib inline 
  7. NN.dfJ.plot(figsize = (12,8)) 
  8. # 测试在验证集的auc得分 
  9. from sklearn.metrics import roc_auc_score 
  10. Y_prob = NN.predict_prob(X_test) 
  11. roc_auc_score(list(y_test),list(Y_prob)) 
60行代码徒手实现深度神经网络

AUC得分0.99874比采用单隐藏层的最优得分0.99958有所降低,可能是模型复杂度过高,我们尝试减少隐藏层节点的个数至3以降低模型复杂度。

  1. # 双隐藏层,隐藏层节点数为3 
  2. NN = NNClassifier(n = [np.nan,3,3,1],alpha = 0.02, 
  3.  ITERNUM = 200000, gfunc = 'ReLu') 
  4. NN.fit(X_train,y_train) 
  5. # 绘制目标函数迭代曲线 
  6. %matplotlib inline 
  7. NN.dfJ.plot(figsize = (12,8)) 
  8. # 测试在验证集的auc得分 
  9. from sklearn.metrics import roc_auc_score 
  10. Y_prob = NN.predict_prob(X_test) 
  11. roc_auc_score(list(y_test),list(Y_prob)) 
60行代码徒手实现深度神经网络

AUC得分0.99979,又有所提高。

和sklearn中自带的神经网络分类器进行对比。

  1. # 和sklearn中的模型对比 
  2. from sklearn.neural_network import MLPClassifier 
  3. # 第一隐藏层神经元个数为3,第二隐藏层神经元个数为3 
  4. MLPClf = MLPClassifier(hidden_layer_sizes=(3,3),max_iter=200000,activation='relu') 
  5. MLPClf.fit(X_train,y_train) 
  6. # 绘制目标函数迭代曲线 
  7. dfJ = pd.DataFrame(data = np.array(MLPClf.loss_curve_),columns = ['J']) 
  8. dfJ.plot(figsize = (12,8)) 
  9. # 测试在验证集的auc得分 
  10. from sklearn.metrics import roc_auc_score 
  11. Y_prob = MLPClf.predict_proba(X_test)[:,1] 
  12. roc_auc_score(list(y_test),list(Y_prob)) 
60行代码徒手实现深度神经网络

以上试验表明,针对当前数据数据集,选择ReLu激活函数,采用双隐藏层,每个隐藏层节点数设置为3是一个不错的选择,AUC得分为0.99979。该得分高于采用CV交叉验证优化超参数后的逻辑回归模型的0.99897的AUC得分。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读