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

這裏寫圖片描述

 
 
  這裏寫圖片描述
 
在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)
相關文章
相關標籤/搜索