OpenCV python sklearn随机超参数搜索的实现


Posted in Python onJanuary 17, 2020

本文介绍了OpenCV python sklearn随机超参数搜索的实现,分享给大家,具体如下:

"""
房价预测数据集 使用sklearn执行超参数搜索
"""
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import tensorflow as tf
from tensorflow_core.python.keras.api._v2 import keras # 不能使用 python
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split, RandomizedSearchCV
from scipy.stats import reciprocal

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
assert tf.__version__.startswith('2.')

# 0.打印导入模块的版本
print(tf.__version__)
print(sys.version_info)
for module in mpl, np, sklearn, pd, tf, keras:
  print("%s version:%s" % (module.__name__, module.__version__))


# 显示学习曲线
def plot_learning_curves(his):
  pd.DataFrame(his.history).plot(figsize=(8, 5))
  plt.grid(True)
  plt.gca().set_ylim(0, 1)
  plt.show()


# 1.加载数据集 california 房价
housing = fetch_california_housing()

print(housing.DESCR)
print(housing.data.shape)
print(housing.target.shape)

# 2.拆分数据集 训练集 验证集 测试集
x_train_all, x_test, y_train_all, y_test = train_test_split(
  housing.data, housing.target, random_state=7)
x_train, x_valid, y_train, y_valid = train_test_split(
  x_train_all, y_train_all, random_state=11)

print(x_train.shape, y_train.shape)
print(x_valid.shape, y_valid.shape)
print(x_test.shape, y_test.shape)

# 3.数据集归一化
scaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train)
x_valid_scaled = scaler.fit_transform(x_valid)
x_test_scaled = scaler.fit_transform(x_test)


# 创建keras模型
def build_model(hidden_layers=1, # 中间层的参数
        layer_size=30,
        learning_rate=3e-3):
  # 创建网络层
  model = keras.models.Sequential()
  model.add(keras.layers.Dense(layer_size, activation="relu",
                 input_shape=x_train.shape[1:]))
 # 隐藏层设置
  for _ in range(hidden_layers - 1):
    model.add(keras.layers.Dense(layer_size,
                   activation="relu"))
  model.add(keras.layers.Dense(1))

  # 优化器学习率
  optimizer = keras.optimizers.SGD(lr=learning_rate)
  model.compile(loss="mse", optimizer=optimizer)

  return model


def main():
  # RandomizedSearchCV

  # 1.转化为sklearn的model
  sk_learn_model = keras.wrappers.scikit_learn.KerasRegressor(build_model)

  callbacks = [keras.callbacks.EarlyStopping(patience=5, min_delta=1e-2)]

  history = sk_learn_model.fit(x_train_scaled, y_train, epochs=100,
                 validation_data=(x_valid_scaled, y_valid),
                 callbacks=callbacks)
  # 2.定义超参数集合
  # f(x) = 1/(x*log(b/a)) a <= x <= b
  param_distribution = {
    "hidden_layers": [1, 2, 3, 4],
    "layer_size": np.arange(1, 100),
    "learning_rate": reciprocal(1e-4, 1e-2),
  }

  # 3.执行超搜索参数
  # cross_validation:训练集分成n份, n-1训练, 最后一份验证.
  random_search_cv = RandomizedSearchCV(sk_learn_model, param_distribution,
                     n_iter=10,
                     cv=3,
                     n_jobs=1)
  random_search_cv.fit(x_train_scaled, y_train, epochs=100,
             validation_data=(x_valid_scaled, y_valid),
             callbacks=callbacks)
  # 4.显示超参数
  print(random_search_cv.best_params_)
  print(random_search_cv.best_score_)
  print(random_search_cv.best_estimator_)

  model = random_search_cv.best_estimator_.model
  print(model.evaluate(x_test_scaled, y_test))

  # 5.打印模型训练过程
  plot_learning_curves(history)


if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中操作列表之List.pop()方法的使用
May 21 Python
Python实现简单拆分PDF文件的方法
Jul 30 Python
Python读写zip压缩文件的方法
Aug 29 Python
Python安装pycurl失败的解决方法
Oct 15 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
python requests模拟登陆github的实现方法
Dec 26 Python
520使用Python实现“我爱你”表白
May 20 Python
Python lambda表达式原理及用法解析
Aug 18 Python
Django实现随机图形验证码的示例
Oct 15 Python
python析构函数用法及注意事项
Jun 22 Python
实例详解Python的进程,线程和协程
Mar 13 Python
python numpy 矩阵堆叠实例
Jan 17 #Python
Python利用Scrapy框架爬取豆瓣电影示例
Jan 17 #Python
Python下利用BeautifulSoup解析HTML的实现
Jan 17 #Python
pytorch forward两个参数实例
Jan 17 #Python
Python实现CNN的多通道输入实例
Jan 17 #Python
Python面向对象编程基础实例分析
Jan 17 #Python
通过python实现windows桌面截图代码实例
Jan 17 #Python
You might like
php表单提交与$_POST实例分析
2015/01/26 PHP
php检查页面是否被百度收录
2015/10/28 PHP
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
python3实现名片管理系统
2020/11/29 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
Shein英国:女性时尚网上商店
2019/04/10 全球购物
财务管理专业自荐信范文
2013/12/24 职场文书
市场开发计划书
2014/05/07 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
Python中requests做接口测试的方法
2021/05/30 Python
MySQL的索引你了解吗
2022/03/13 MySQL