神經網絡(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)