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

您现在的位置是:黎青松SEO博客 >>服务器运维

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

黎青松SEO博客2020-07-12 00:19:07112人已围观

简介importtensorflowastffromtensorflow_core.python.keras.api._v2importkeras#不能使用pythonfromsk

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__))

# 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)

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

# 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)[!--empirenews.page--]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。

转载:非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“黎青松SEO博客”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值