最近想着在天池上做一些简单的比赛,发现大家都用的sklearn的库来写机器学习算法。最近正在使用一个神经网络,在此翻译了一下sklearn的文档做了一下总结
sklearn官方文档:https://scikit-learn.org/stable/modules/classes.html#module-sklearn.neural_network
神经网络在sklearn.neural_network中存放,有三个类。
neural_network.BernoulliRBM([n_components, …]) 伯努利受限玻尔兹曼机(RBM)
neural_network.MLPClassifier([…]) 多层感知分类器
neural_network.MLPRegressor([…]) 多层感知回归
多层感知包括分类器和回归类,其库是一样的
分类器:classification
回归函数:Regressor
sklearn.neural_network.MLPRegressor 回归类
class sklearn.neural_network.MLPRegressor(hidden_layer_sizes=(100, ), activation=’relu’, solver=’adam’, alpha=0.0001, batch_size=’auto’, learning_rate=’constant’, learning_rate_init=0.001, power_t=0.5, max_iter=200, shuffle=True, random_state=None, tol=0.0001, verbose=False, warm_start=False, momentum=0.9, nesterovs_momentum=True, early_stopping=False, validation_fraction=0.1, beta_1=0.9, beta_2=0.999, epsilon=1e-08, n_iter_no_change=10)[source]
参数:
1)hidden_layer_sizes 每一层隐含层神经元个数
2)activation激活函数 默认为relu 可选:identity logistic tanh relu
3)solver权重优化的解决方案
lbfgs
sgd随机梯度下降法
adam
4)alpha L2正则系数,默认0.0001
5)batch_size 单词训练样本数量
6)learning_rate 学习率
7)learning_rate_init初始学习率,这个是当采用sgd和adam方法是
8)momentum:动量;梯度下降更新的动量。应介于0和1之间。仅在solver='sgd’时使用。
9)beta_1 学习率滑动衰减率,范围0-1,默认0.9
10)beta_2和上面一样,说是第二个向量的控制,不是太明白~~
…
类的属性
loss_ : float 当前计算损失值
coefs_ : list, length n_layers - 1存储权重
intercepts_ : list, 存储偏置bias
n_iter_ : int,当前优化步伐
n_layers_ : int 网络层数
n_outputs_ : int输出个数
out_activation_ :输出激活函数
常用函数
fit(X, y) 装载数据
get_params([deep]) 获取参数
predict(X) 预测
score(X, y[, sample_weight]) Returns the coefficient of determination R^2 of the prediction.
set_params(**params) Set the parameters of this estimator.
示例代码:
# First 声明神经网络回归函数
NNmodel = MLPClassifier([10,6],learning_rate_init= 0.001,activation='relu',\
solver='adam', alpha=0.0001,max_iter=30000) # 神经网络
#Second 训练数据
print('start train!')
NNmodel.fit(X_train,y_train)
print('end train!')
#Third 检验训练集的准确性
ppp = NNmodel.predict(X_train)
dd = np.mean(np.square(ppp - y_train))
print(dd)