首页 > 其他分享 >神经网络——基于sklearn的参数介绍及应用

神经网络——基于sklearn的参数介绍及应用

时间:2023-08-27 18:36:07浏览次数:37  
标签:ytest solver 神经网络 参数 print import model sklearn

一、MLPClassifier&MLPRegressor参数和方法

参数说明(分类和回归参数一致):

hidden_layer_sizes :例如hidden_layer_sizes=(50, 50),表示有两层隐藏层,第一层隐藏层有50个神经元,第二层也有50个神经元。
activation :激活函数,{‘identity’, ‘logistic’, ‘tanh’, ‘relu’}, 默认relu
identity:f(x) = x
logistic:其实就是sigmod,f(x) = 1 / (1 + exp(-x)).
tanh:f(x) = tanh(x).
relu:f(x) = max(0, x)
solver: 权重优化器,{‘lbfgs’, ‘sgd’, ‘adam’}, 默认adam
lbfgs:quasi-Newton方法的优化器
sgd:随机梯度下降
adam: Kingma, Diederik, and Jimmy Ba提出的机遇随机梯度的优化器
注意:默认solver ‘adam’在相对较大的数据集上效果比较好(几千个样本或者更多),对小数据集来说,lbfgs收敛更快效果也更好。
alpha :float,可选的,默认0.0001,正则化项参数
batch_size : int , 可选的,默认’auto’,随机优化的minibatches的大小batch_size=min(200,n_samples),如果solver是’lbfgs’,分类器将不使用minibatch
learning_rate :学习率,用于权重更新,只有当solver为’sgd’时使用,{‘constant’,’invscaling’, ‘adaptive’},默认constant
‘constant’: 有’learning_rate_init’给定的恒定学习率
‘incscaling’:随着时间t使用’power_t’的逆标度指数不断降低学习率learning_rate_ ,effective_learning_rate = learning_rate_init / pow(t, power_t)
‘adaptive’:只要训练损耗在下降,就保持学习率为’learning_rate_init’不变,当连续两次不能降低训练损耗或验证分数停止升高至少tol时,将当前学习率除以5.
power_t: double, 可选, default 0.5,只有solver=’sgd’时使用,是逆扩展学习率的指数.当learning_rate=’invscaling’,用来更新有效学习率。
max_iter: int,可选,默认200,最大迭代次数。
random_state:int 或RandomState,可选,默认None,随机数生成器的状态或种子。
shuffle: bool,可选,默认True,只有当solver=’sgd’或者‘adam’时使用,判断是否在每次迭代时对样本进行清洗。
tol:float, 可选,默认1e-4,优化的容忍度
learning_rate_int:double,可选,默认0.001,初始学习率,控制更新权重的补偿,只有当solver=’sgd’ 或’adam’时使用。
属性说明:

coefs_包含w的矩阵,可以通过迭代获得每一层神经网络的权重矩阵
classes_:每个输出的类标签
loss_:损失函数计算出来的当前损失值
coefs_:列表中的第i个元素表示i层的权重矩阵
intercepts_:列表中第i个元素代表i+1层的偏差向量
n_iter_ :迭代次数
n_layers_:层数
n_outputs_:输出的个数
out_activation_:输出激活函数的名称

二、使用MLPClassifier进行分类

import numpy as np
import pandas as pd
from sklearn.neural_network import MLPClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn import metrics

data=load_iris()
feature=data.data
target=data.target
print(np.unique(target))

xtrain,xtest,ytrain,ytest=train_test_split(feature,target,train_size=0.7,random_state=421)

nn=MLPClassifier(hidden_layer_sizes=(3,5),activation="tanh",shuffle=False,solver="lbfgs",alpha=0.001)
model=nn.fit(xtrain,ytrain)
pre=model.predict(xtest)

print(pre)
print(ytest)
print(model.coefs_)
print(model.n_layers_)
print(model.n_outputs_)
print(model.predict_proba(xtest))
print(model.score(xtest,ytest))
print(model.classes_)
print(model.loss_)
print(model.activation)
print(model.intercepts_)
print(model.n_iter_)
print(metrics.confusion_matrix(ytest,pre))

print("分类报告:", metrics.classification_report(ytest,pre))
print("W权重:",model.coefs_[:1])
print("损失值:",model.loss_)

index=0
for w in model.coefs_:
    index += 1
    print('第{}层网络层:'.format(index))
    print('权重矩阵:', w.shape)
    print('系数矩阵:', w)

三、使用MLPRegressor进行回归

import numpy as np
import pandas as pd
from sklearn.neural_network import MLPRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

data=load_boston()
feature=data.data
target=data.target

xtrain,xtest,ytrain,ytest=train_test_split(feature,target,train_size=0.7,random_state=421)

nn=MLPRegressor(hidden_layer_sizes=(100,100),activation="identity",shuffle=False,solver="lbfgs",alpha=0.001)
model=nn.fit(xtrain,ytrain)
pre=model.predict(xtest)

print(pre)
print(ytest)
print(model.coefs_)
print(model.n_layers_)
print(model.n_outputs_)
print(model.score(xtest,ytest))

index=0
for w in model.coefs_:
    index += 1
    print('第{}层网络层:'.format(index))
    print('仅重矩阵:', w.shape)
    print('系数矩阵:', w)

plt.plot(range(152),pre,color='red')
plt.plot(range(152),ytest,color='blue')

plt.show()

 

标签:ytest,solver,神经网络,参数,print,import,model,sklearn
From: https://www.cnblogs.com/hongbao/p/17660636.html

相关文章

  • 循环神经网络
    循环神经网络frommxnetimportndx,w_xh=nd.random.normal(shape=(3,1)),nd.random.normal(shape=(1,4))h,w_hh=nd.random.normal(shape=(3,4)),nd.random.normal(shape=(4,4))print(nd.dot(x,w_xh)+nd.dot(h,w_hh))print(nd.dot(nd.concat(x,h,dim=1......
  • 【BP分类】基于粒子群优化算法优化BP神经网络的数据分类预测附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进。......
  • 【免费】基于径向基神经网络的时间序列预测附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进。......
  • pandas groupby 参数 group_keys
    pandasgroupby参数 group_keyshttps://zhuanlan.zhihu.com/p/545215035https://blog.csdn.net/m0_46669407/article/details/108243184......
  • 学习笔记413—python实现BP神经网络进行预测和误差分析(附源代码)
    python实现BP神经网络进行预测和误差分析(附源代码)反向传播算法也称为BP神经网络,是一种带有反馈的神经网络反向学习方法,它可以对神经网络的各层上的各个神经元的各个神经元之间的连接权重进行不断迭代修改,使神经网络将输入数据转换成期望的输出数据 BP神经网络的学习过程由正向......
  • 后端传递给前端的参数,怎么处理
    1.直接传递布尔值  2.传递状态码 3.传递json【用这种吧】   ......
  • XAPool的参数设置
    sleepTime:PoolKeeper检测时间间隔lifeTime:连接生命周期(上次访问时间-当前时间)deadLockMaxWait(:超过最大连接之后的调用getConnection的等待时间deadLockRetryWait:超过最大连接之后的调用getConnection等待,在等待中重试的时间间隔maxSize:连接池的容量deald-lock-max-wait和dead-......
  • Tomcat参数配置
    http://tomcat.apache.org/tomcat-6.0-doc/config/http.html enableLookups:是否反查域名,取值为:true或false,默认true。为了提高处理能力,如果不需要取得访问来源的域名,应设置为false,设置为false的时候,只能获取IP。 maxThreads:设置最大并发数,默认200。 acceptCount:允许的最大连接数......
  • struts2中的参数传递
    这个问题其实一直很困惑我的,在写平常的jsp程序时,传递参数很容易,通过表单,request,链接等都可以传递,但是到了struts2中,在写的各个地方,都看不到任何的request或是response,不知道该怎么传递参数了,到了今天学习了struts2中的参数传递这一节,终于解开了疑惑,但是还不是很清楚,有待以后探索。......
  • GO语言中的参数传递
    在Go语言中,函数参数传递有两种方式:值传递和引用传递。值传递(PassbyValue):当将一个值作为参数传递给函数时,函数会创建该值的一个副本,并将副本传递给函数。在函数内部,对参数的修改不会影响原始值。下面是一个示例:packagemainimport"fmt"funcmodifyValue(xint){x......