快速入门Python机器学习(33)
12.6 神经网络回归算法
12.6.1类、参数、属性和方法
类
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, max_fun=15000)
参数
参数 |
解释 |
hidden_layer_sizes |
tuple, length = n_layers - 2, default=(100,) ith元素表示ith隐藏层中的神经元数量。 |
activation |
{'identity', 'logistic', 'tanh', 'relu'}, default='relu'隐藏层的激活功能。 'identity',无操作激活,用于实现线性瓶颈,返回f(x) = x 'logistic',即logistic sigmoid函数,返回f(x) = 1 / (1 + exp(-x))。 'tanh',双曲tan函数,返回f(x) = tanh(x)。 'relu'是已校正的线性单位函数,返回f(x) = max(0,x) |
solver |
{'lbfgs', 'sgd', 'adam'}, default='adam'重量优化求解器。 'lbfgs'是拟牛顿方法家族中的优化器。 'sgd'指随机梯度下降。 'adam'指的是由金马、迪德里克和吉米巴提出的基于梯度的随机优化器注意:就训练时间和验证分数而言,默认解算器'adam'在相对较大的数据集(有数千个或更多的训练样本)上工作得相当好。然而,对于小数据集,'lbfgs'可以更快地收敛,性能更好。 |
alpha |
float, default=0.0001。L2惩罚(正则项)参数。 |
属性
属性 |
类别 |
介绍 |
loss_ |
float |
用损耗函数计算的电流损耗。 |
best_loss_ |
float |
求解器在整个拟合过程中达到的最小损失。 |
loss_curve_ |
list of shape (n_iter_,) |
列表中的第i个元素表示第i次迭代的损失。 |
t_ |
int |
拟合期间解算器看到的训练样本数。 |
coefs_ |
list of shape (n_layers - 1,) |
列表中的第i个元素表示与第i层对应的权重矩阵。 |
intercepts_ |
list of shape (n_layers - 1,) |
列表中的第i个元素表示对应于层i+1的偏置向量。 |
n_iter_ |
int |
解算器已运行的迭代次数。 |
n_layers_ |
int |
层数。 |
n_outputs_ |
int |
输出数量。 |
out_activation_ |
str |
输出激活函数的名称。 |
loss_curve_ |
list of shape (n_iters,) |
在每个训练步骤结束时评估损失值。 |
t_ |
int |
数学上等于n iters*X.shape[0],表示时间步长,由优化器的学习率调度器使用。 |
方法
fit(X, y) |
将模型拟合到数据矩阵X和目标y。 |
get_params([deep]) |
获取此估计器的参数。 |
predict(X) |
采用多层感知器模型进行预测。 |
score(X, y[, sample_weight]) |
返回预测的确定系数R2。 |
set_params(**params) |
设置此估计器的参数。 |
12.6.2神经网络回归算法
def MLPRegressor_make_regression(): warnings.filterwarnings("ignore") myutil = util() X,y = datasets.make_regression(n_samples=100,n_features=1,n_informative=2,noise=50,random_state=8) X_train,X_test,y_train,y_test = train_test_split(X, y, random_state=8,test_size=0.3) clf = MLPRegressor(max_iter=20000).fit(X,y) title = "MLPRegressor make_regression数据集(有噪音)" myutil.draw_line(X[:,0],y,clf,title)
def My_MLPRegressor(solver,hidden_layer_sizes,activation,level,alpha,mydata,title): warnings.filterwarnings("ignore") myutil = util() X,y = mydata.data,mydata.target X_train,X_test,y_train,y_test = train_test_split(X, y, random_state=8,test_size=0.3) clf = MLPRegressor(solver=solver,hidden_layer_sizes=hidden_layer_sizes,activation=activation,alpha=alpha,max_iter=10000).fit(X_train,y_train) mytitle = "MLPRegressor("+title+"):solver:"+solver+",node:"+str(hidden_layer_sizes)+",activation:"+activation+",level="+str(level)+",alpha="+str(alpha) myutil.print_scores(clf,X_train,y_train,X_test,y_test,mytitle) def MLPRegressor_base(): mydatas = [datasets.load_diabetes(), datasets.load_boston()] titles = ["糖尿病数据","波士顿房价数据"] for (mydata,title) in zip(mydatas, titles): ten = [10] hundred = [100] two_ten = [10,10] Parameters = [['lbfgs',hundred,'relu',1,0.0001], ['lbfgs',ten,'relu',1,0.0001], ['lbfgs',two_ten,'relu',2,0.0001],['lbfgs',two_ten,'tanh',2,0.0001],['lbfgs',two_ten,'tanh',2,1]] for Parameter in Parameters: My_MLPRegressor(Parameter[0],Parameter[1],Parameter[2],Parameter[3],Parameter[4],mydata,title)
输出
MLPRegressor(糖尿病数据):solver:lbfgs,node:[100],activation:relu,level=1,alpha=0.0001: 68.83% MLPRegressor(糖尿病数据):solver:lbfgs,node:[100],activation:relu,level=1,alpha=0.0001: 28.78% MLPRegressor(糖尿病数据):solver:lbfgs,node:[10],activation:relu,level=1,alpha=0.0001: 53.50% MLPRegressor(糖尿病数据):solver:lbfgs,node:[10],activation:relu,level=1,alpha=0.0001: 45.41% MLPRegressor(糖尿病数据):solver:lbfgs,node:[10, 10],activation:relu,level=2,alpha=0.0001: 68.39% MLPRegressor(糖尿病数据):solver:lbfgs,node:[10, 10],activation:relu,level=2,alpha=0.0001: 31.62% MLPRegressor(糖尿病数据):solver:lbfgs,node:[10, 10],activation:tanh,level=2,alpha=0.0001: 64.18% MLPRegressor(糖尿病数据):solver:lbfgs,node:[10, 10],activation:tanh,level=2,alpha=0.0001: 31.46% MLPRegressor(糖尿病数据):solver:lbfgs,node:[10, 10],activation:tanh,level=2,alpha=1: -0.00% MLPRegressor(糖尿病数据):solver:lbfgs,node:[10, 10],activation:tanh,level=2,alpha=1: -0.01% MLPRegressor(波士顿房价数据):solver:lbfgs,node:[100],activation:relu,level=1,alpha=0.0001: 90.04% MLPRegressor(波士顿房价数据):solver:lbfgs,node:[100],activation:relu,level=1,alpha=0.0001: 63.90% MLPRegressor(波士顿房价数据):solver:lbfgs,node:[10],activation:relu,level=1,alpha=0.0001: 85.23% MLPRegressor(波士顿房价数据):solver:lbfgs,node:[10],activation:relu,level=1,alpha=0.0001: 68.49% MLPRegressor(波士顿房价数据):solver:lbfgs,node:[10, 10],activation:relu,level=2,alpha=0.0001: 90.12%推荐阅读
学习C语言编写小游戏:通过一个简单实例快速入门!
在python机器学习中,classification_report函数用于输出模型评估报告,其中查全率的定义公式被包含
快速入门Python机器学习(33)
学习Python游戏编程的入门指南:使用PyGame开发
快速入门 ASP.NET LINQ to XML:学习 Descendants 和 Elements 遍历节点的方法
入门机器学习:Sklearn数据集、转换器和预测器详解
快速入门:完全合作下的多智能体强化学习 - 多智能体A2C
超快速上手!R语言机器学习实战指南第5篇
快速入门Tomcat 9.0.37并学习如何在IDEA中设置它
Python实现的机器学习模型迭代方法详解