MLP(多层神经网络)
MLP是感知器的推广,克服了感知器不能对线性不可分数据进行识别的弱点。神经网络流程分为前向过程和反向过程,反向过程一般用于训练。
每个神经元上面都有对于一个输入的权值,以及一个偏置,还有一个激活函数。所以一个前向过程的流程就是input输入,然后经过一层神经元运算,得到输出,然后第一层的输出作为第二层的输入,运算,得到第二层的输出…直到到输出层运算,然后得到结果。神经网络就是依靠这样的一套机制来进行计算和预测的。我们的任务就是找到权值和偏置这些参数的值,使得输出的东西让我们满意,达到我们的要求。
num_hidden:隐藏层节点数目
activation:隐藏层/输出层节点的激发函数
weights/biases:连接权重/偏置
python实现代码
# -*- coding: utf-8 -*-
import IOUtil as iou
import pandas as pd
import numpy as np
from sklearn import svm
from sklearn import metrics
from decimal import Decimal
num=[]
#### 训练
print ("MLP start")
X = iou.readArray('X_train.csv')
y = iou.readArray('y_train.csv')
y = y.ravel()
print ("MLP Data OK")
from sklearn.neural_network import MLPRegressor
model = MLPRegressor(hidden_layer_sizes=130,learning_rate="adaptive")
model.fit(X, y)
######预测
X_test = iou.readArray('X_test.csv')
y_test = iou.readArray('y_test.csv')
print ("MLP predict...")
y_predict = model.predict(X_test)
test_auc = metrics.roc_auc_score(y_test,y_predict)#验证集上的auc值
score_avg=score_avg+float(test_auc)
print (test_auc)
print ("MLP Done!!!!!!")