热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用GridSearchCV和KerasClassifier进行超参数调整

使用GridSearchCV和KerasClassifier进行超参数调整

使用 GridSearchCV 和 KerasClassifier 进行超参数调整

原文:https://www . geeksforgeeks . org/hyperparameter-tuning-using-gridsearchcv-and-kerasclassifier/

超参数调整是通过调整神经网络的参数来提高模型的效率。一些 sci kit-learn API,如 GridSearchCV 和 RandomizedSearchCV,用于执行超参数调整。

在本文中,您将学习如何使用 GridSearchCV 来调整 Keras 神经网络超参数。

方法:



  1. 我们将包装在 scikit 中使用的 Keras 模型——学习使用 KerasClassifier,它是一个包装器。

  2. 我们将使用使用 KerasClassifier 和 GridSearchCV 的交叉验证

  3. 调整超参数,如时期数、神经元数和批次大小。


为 Keras 实现 scikit-learn 分类器应用编程接口;


tf.keras.wrappers.scikit_learn。KerasClassifier(

build _ fn =无,**sk_params

)

Code:

# import the libraries 
import tensorflow as tf
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import StandardScaler

数据集可以从这里的
下载导入数据集,使用该数据集我们可以预测客户是留下还是离开。

代码:

# The last column is a binary value
dataset = pd.read_csv('Churn_Modelling.csv')
X = dataset.iloc[:, 3:-1].values
y = dataset.iloc[:, -1].values

编码:数据预处理

le = LabelEncoder()
X[:, 2] = le.fit_transform(X[:, 2])
#perform one hot encoding 
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])], remainder='passthrough')
X = np.array(ct.fit_transform(X))
# perform standardization of the data. 
sc = StandardScaler()
X = sc.fit_transform(X)

要使用 KerasClassifier 包装器,我们需要在一个函数中构建我们的模型,该函数需要传递给 KerasClassifier 构造函数中的 build_fn 参数。

代码:

def build_clf(unit):
  # creating the layers of the NN
  ann = tf.keras.models.Sequential()
  ann.add(tf.keras.layers.Dense(units=unit, activation='relu'))
  ann.add(tf.keras.layers.Dense(units=unit, activation='relu'))
  ann.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))
  ann.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
  return ann

代码:创建 KerasClassifier 类的对象

model=KerasClassifier(build_fn=build_clf)

现在我们将创建我们想要调优的参数的字典,并在 GridSearchCV 中作为参数传递。

代码:

params={'batch_size':[100, 20, 50, 25, 32], 
        'nb_epoch':[200, 100, 300, 400],
        'unit':[5,6, 10, 11, 12, 15],
        }
gs=GridSearchCV(estimator=model, param_grid=params, cv=10)
# now fit the dataset to the GridSearchCV object. 
gs = gs.fit(X, y)

best_score_ 成员给出了优化过程中观察到的最佳得分, best_params_ 描述了获得最佳结果的参数组合。

代码:

best_params=gs.best_params_
accuracy=gs.best_score_

输出:



精度:0.80325


最佳参数:{'batch_size': 20,' nb_epoch': 200,' unit': 15}



推荐阅读
  • Canvas漫游:碰撞检测与动画模拟
    探索Canvas在Web开发中的应用,通过碰撞检测与动画模拟提升交互体验。 ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • 利用Java与Tesseract-OCR实现数字识别
    本文深入探讨了如何利用Java语言结合Tesseract-OCR技术来实现图像中的数字识别功能,旨在为开发者提供详细的指导和实践案例。 ... [详细]
  • 吴恩达推出TensorFlow实践课程,Python基础即可入门,四个月掌握核心技能
    量子位报道,deeplearning.ai最新发布了TensorFlow实践课程,适合希望使用TensorFlow开发AI应用的学习者。该课程涵盖机器学习模型构建、图像识别、自然语言处理及时间序列预测等多个方面。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 本文总结了优化代码可读性的核心原则与技巧,通过合理的变量命名、函数和对象的结构化组织,以及遵循一致性等方法,帮助开发者编写更易读、维护性更高的代码。 ... [详细]
  • 本文介绍了如何利用TensorFlow框架构建一个简单的非线性回归模型。通过生成200个随机数据点进行训练,模型能够学习并预测这些数据点的非线性关系。 ... [详细]
  • 修复了Datepicker组件中,当字段值默认为null时,输入验证器直到选择日期后才被调用的问题。 ... [详细]
  • 面临考试压力,急需解决四个编程问题,包括实现乒乓球的动态效果、计算特定日期是一年的第几天、逆序输出数字以及创建弹出菜单。每个问题的解决都能在TC3.0环境中获得50分。 ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
  • 强人工智能时代,区块链的角色与前景
    随着强人工智能的崛起,区块链技术在新的技术生态中扮演着怎样的角色?本文探讨了区块链与强人工智能之间的互补关系及其在未来技术发展中的重要性。 ... [详细]
  • 本文详细记录了作者从7月份的提前批到9、10月份正式批的秋招经历,包括各公司的面试流程、技术问题及HR面的常见问题。通过这次秋招,作者深刻体会到了技术积累和面试准备的重要性。 ... [详细]
  • Chapter11&12:DefocusBlur&FinalScene在Camera.h中修改如下:#pragmaonce#define_USE ... [详细]
author-avatar
Eva绫波_772
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有