我们可以通过包装器将Sequential模型(仅有一个输入)作为Scikit-Learn工作流的一部分,相关的包装器定义在keras.wrappers.scikit_learn.py中:

这里有两个包装器可用:

分类器接口:keras.wrappers.scikit_learn.KerasClassifier(build_fn=None, **sk_params)

回归器接口:keras.wrappers.scikit_learn.KerasRegressor(build_fn=None, **sk_params)

参考文献:https://keras-cn.readthedocs.io/en/latest/scikit-learn_API/

"""
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
def model(optimizer="adam"):
#create model
model = Sequential()
model.add(Dense(input_dim=4,units=12,activation="relu"))
model.add(Dense(units=8,activation="relu"))
model.add(Dense(units=1,activation="sigmoid"))
#compile model
model.compile(loss="mse",optimizer=optimizer,metrics=["accuracy"],)
return model
#######################################################################################
#create data
np.random.seed(seed=10)
X = np.random.randn(100,4)
y = np.random.randn(100) #split data in train dataset and test dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42) #using wrappers to create sklearn interface model = KerasRegressor(build_fn=model,epochs=10,batch_size=5) #training
model.fit(X_train,y_train)
#predicting
y_pred = model.predict(X_test)
#evalution
print("mse:"+str(mean_squared_error(y_test,y_pred))) #cross_validation
from sklearn.model_selection import cross_val_score
mse = cross_val_score(estimator=model,X=X,y=y,cv=5,n_jobs=1,scoring="neg_mean_squared_error")
print("average value of mse:"+str(mse))
#########################################################################################
#adjust parameters of model
#gridSearchCV
from sklearn.model_selection import GridSearchCV
params = {"optimizer":['rmsprop','adam'],
"epochs": [5,10],
"batch_size":[5,10],
} gridSearchCV = GridSearchCV(estimator=model,param_grid=params,cv=5)
result = gridSearchCV.fit(X,y) result.best_params_
result.best_score_
#########################################################################################
#skopt
from skopt.space import Real,Integer,Categorical
from skopt.utils import use_named_args
from skopt import gp_minimize space = [Categorical(categories=['rmsprop','adam'],name="optimizer"),
Categorical(categories=[1,2,3],name="epochs")] @use_named_args(space)
def objective(**params):
model.set_params(**params)
return -np.mean(cross_val_score(model,X,y,cv=5,n_jobs=1,scoring="neg_mean_squared_error")) result = gp_minimize(objective, space, n_calls=50, random_state=0)
print("best score:%.4f"%(result.fun))
print("best parameters:",result.x)

keras开发成sklearn接口的更多相关文章

  1. JAVAEE——Mybatis第一天:入门、jdbc存在的问题、架构介绍、入门程序、Dao的开发方法、接口的动态代理方式、SqlMapConfig.xml文件说明

    1. 学习计划 第一天: 1.Mybatis的介绍 2.Mybatis的入门 a) 使用jdbc操作数据库存在的问题 b) Mybatis的架构 c) Mybatis的入门程序 3.Dao的开发方法 ...

  2. Spring Boot入门(四):开发Web Api接口常用注解总结

    本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...

  3. FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发

    接上一篇文章FastAPI(六十六)实战开发<在线课程学习系统>接口开发--用户注册接口开发.这次我们分享实际开发--用户登陆接口开发. 我们先来梳理下逻辑 1.查询用户是否存在2.校验密 ...

  4. 使用Thinkphp框架开发移动端接口

     本文给大家分享的是使用thinkphp框架开发移动端接口的2种方法,一种是开发API,另外一种是实现移动端访问自动切换移动主题模板,从而实现伪app访问,下面我们就来详细看下如何实现吧. 方案一:给 ...

  5. Openfire开发广播服务接口,支持离线广播消息

    Openfire开发广播服务接口,支持离线广播消息 概要 最近公司要求做一个web端向所有移动端发送公告,所以考虑到即时性就用openfire做服务.不过为了减轻web端的工作量,我们开发一个简单的插 ...

  6. django2_开发web系统接口

    1.单独创建.../sign/views_if.py文件,开发添加发布会接口 from django.http import JsonResponse from cmdb.models import ...

  7. 准备开发开放API接口

    准备开发APP开放接口,允许JQUERY直接调用http://blog.csdn.net/wuxiangege/article/details/52238968 SIGN的设计与实现http://bl ...

  8. Vue-cli 本地开发请求https 接口 DEPTH_ZERO_SELF_SIGNED_CERT

    环境:npm run dev 本地开发连接后台的开发环境的接口. 贴上proxyTable 的转发(代理?反向?这个具体叫什么不明白...) proxyTable: { "/api" ...

  9. JMeter5.1开发Java协议接口脚本【待完成】

    JMeter5.1开发Java协议接口脚本

随机推荐

  1. Iview同步异步验证

    直接上代码了: html: <Form ref="termForm" :model="currentData" :rules="ruleTerm ...

  2. Android AES 加密、解密

    AES加密介绍 ASE 加密.解密的关键在于秘钥.只有使用加密时使用的秘钥,才可以解密. 生成秘钥的代码网上一大堆,下面的代码可生成一个秘钥 private SecretKey generateKey ...

  3. 为什么在开发中大部分的时候都在用session而Application基本上都不去使用?

    问题描述 为什么在开发中大部分的时候都在用session而Application基本上都不去使用? 为什么在开发中大部分的时候都在用session而Application基本上都不去使用?为什么在开发 ...

  4. 在WisOne平台上学习TypeScript

    TypeScript是微软公司推出的开源的类型化脚本语言,目的是用于为弱类型的javaScript提供强类型的识别和感知功能,同时它提供了类.接口.继承等相关在javaScript中不容易实现的功能, ...

  5. Eclipse中SVN的安装步骤(两种)和使用方法

    Eclipse中SVN的安装步骤(两种)和使用方法 一.给Eclipse安装SVN,最常见的有两种方式:手动方式和使用安装向导方式.具体步骤如下: 方式一:手动安装 1.下载最新的Eclipse,我的 ...

  6. 【转】游戏buff设计参见

    其实这类帖子并没有多少的设计理论,对于策划的提升和帮助也并不大,原因其实在于其适用性太窄,当我要设计XX象棋的时候,它就滚一边去了. 废话不多说切入正题: 游戏中的BUFF/DEBUFF我们见过很多, ...

  7. magento小常识

    magento后台设置好产品分类及添加产品后前台没有显示出来:以下几个可能: 1.首先检查网店商城的Root Category 以 及跟目录下面的子目录设置是否有误,具体在目录->管理分类-&g ...

  8. QT-This application failed to start because it could not find or load the Qt platform plugin "windows"

    前言 将qt的vs工程生成Release版本,不过出现错误,现将可以解决该问题的方法记录下来. 项目环境 系统:win7_64 软件:VS2013.QT5.6.2.qt-vs-addin-1.2.5 ...

  9. LeetCode-Microsoft-Populating Next Right Pointers in Each Node

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  10. day 2 Linux Shell笔记

    ------------------------------------------------------------------- -------------------------------- ...