部分原理:
下面是单个神经元的数学模型:
+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)