數據挖掘——回歸分析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)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM