文末有惊喜
12.6 神经网络回归算法
12.6.1类、参数、属性和方法
类
代码语言:javascript复制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神经网络回归算法
代码语言:javascript复制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)
代码语言:javascript复制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)
输出
代码语言:javascript复制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%
MLPRegressor(波士顿房价数据):solver:lbfgs,node:[10, 10],activation:relu,level=2,alpha=0.0001:
63.48%
MLPRegressor(波士顿房价数据):solver:lbfgs,node:[10, 10],activation:tanh,level=2,alpha=0.0001:
18.19%
MLPRegressor(波士顿房价数据):solver:lbfgs,node:[10, 10],activation:tanh,level=2,alpha=0.0001:
18.25%
MLPRegressor(波士顿房价数据):solver:lbfgs,node:[10, 10],activation:tanh,level=2,alpha=1:
85.37%
MLPRegressor(波士顿房价数据):solver:lbfgs,node:[10, 10],activation:tanh,level=2,alpha=1:
73.75%
数据 | solver | node | activation | level | alpha | 训练得分 | 测试得分 |
---|---|---|---|---|---|---|---|
糖尿病 | lbfgs | [100] | relu | 1 | 0.0001 | 68.83% | 28.78% |
lbfgs | [10] | relu | 1 | 0.0001 | 53.50% | 45.41% | |
lbfgs | [10,10] | relu | 2 | 0.0001 | 68.39% | 31.62% | |
lbfgs | [10,10] | tanh | 2 | 0.0001 | 64.18% | 31.46% | |
lbfgs | [10,10] | tanh | 2 | 1 | -0.00% | -0.00% | |
波士顿房价 | lbfgs | [100] | relu | 1 | 0.0001 | 90.04% | 63.90% |
lbfgs | [10] | relu | 1 | 0.0001 | 85.23% | 68.49% | |
lbfgs | [10,10] | relu | 2 | 0.0001 | 90.12% | 63.48% | |
lbfgs | [10,10] | tanh | 2 | 0.0001 | 18.19% | 18.25% | |
lbfgs | [10,10] | tanh | 2 | 1 | 85.37% | 73.75% |
文末惊喜
渗透式测试环境与代码
实验代码:
链接:https://pan.baidu.com/s/14XsCng6laiSiT_anuwr5dw?pwd=78dy
提取码:78dy
环境
Windows上安装tomcat、Apache和MySQL
Linux上安装tomcat、Apache和MySQL
操作
1、把tomcat中的sec拷贝到tomcat目录下,比如%TOMCAT-HOME%webapps
2、把Apache中的sec拷贝到Apache目录下,比如htdocs
3、tomcat中的sec目录下
include.jsp
代码语言:javascript复制<%
String
Windows_IP="127.0.0.1";
String
Linux_IP="192.168.0.150";
String
JSP_PORT="8080";
String
PHP_PORT="8100";
%>
- String Windows_IP:Windows的IP地址
- String Linux_IP:Linux的IP地址
- String JSP_PORT:JSP的端口号
- String PHP_PORT:PHP的端口号
3、Apache中的sec目录下include.php
代码语言:javascript复制$windows_ip="http://127.0.0.1";
$linux_ip="http://192.168.0.150";
$jsp_port="8080";
$php_port="8100";
?>
- $windows_ip:Windows的IP地址
- $linux_ip=:Linux的IP地址
- $jsp_port=:JSP的端口号
- $php_port:PHP的端口号
打开浏览,输入http://192.168.0.106:8080/sec/
192.168.0.106为本机IP地址
数据库配置
在建立MySQL下建立sec数据库,root/123456。将DB下的4个csv文件导入sec数据库中
渗透测试操作系统虚拟机文件vmx文件
1)Windows 2000 Professional
链接:https://pan.baidu.com/s/13OSz_7H1mIpMKJMq92nEqg?pwd=upsm
提取码:upsm
2)Windows Server 2003 Standard x64 Edition
链接:https://pan.baidu.com/s/1Ro-BoTmp-1kq0W_lB9Oiww?pwd=ngsb
提取码:ngsb
开机密码:123456
3)Windows 7 x64
链接:https://pan.baidu.com/s/1-vLtP58-GXmkau0OLNoGcg?pwd=zp3o
提取码:zp3o
4)Debian 6(Kali Linux)
链接:https://pan.baidu.com/s/1Uw6SXS8z_IxdkNpLr9y0zQ?pwd=s2i5
提取码:s2i5
开机密码:jerry/123456
安装了Apatche、Tomcat、MySQL、 vsftpd并且配套Web安全测试练习教案。
启动Tomcat
#/usr/local/apache-tomcat-8.5.81/bin/startup.sh
启动MySQL
#service mysql start
启动Apache
#/etc/init.d/apache2 start
打开浏览器输入127.0.0.1:8080/sec/
5)Metasploitable2-Linux (with vsftpd 2.3.4)
链接:https://pan.baidu.com/s/1a71zOXGi_9aLrXyEnvkHwQ?pwd=17g6
提取码:17g6
开机密码:见页面提示
解压后直接为vmx文件,直接可用