欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

快速入门Python机器学习(33)

最编程 2024-08-13 11:00:39
...

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(0x)

solver

{'lbfgs', 'sgd', 'adam'}, default='adam'重量优化求解器。

'lbfgs'是拟牛顿方法家族中的优化器。

'sgd'指随机梯度下降。

'adam'指的是由金马、迪德里克和吉米巴提出的基于梯度的随机优化器注意:就训练时间和验证分数而言,默认解算器'adam'在相对较大的数据集(有数千个或更多的训练样本)上工作得相当好。然而,对于小数据集,'lbfgs'可以更快地收敛,性能更好。

alpha

float, default=0.0001L2惩罚(正则项)参数。


属性

属性

类别

介绍

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%