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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速入门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(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)

image.png


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%
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

<%
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

$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文件,直接可用

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
16 3
|
10天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
20 1
|
16天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
21天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
16 1
|
22天前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
18 2
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
24天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
49 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
4天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
28天前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。