【教程】sqlflow实现用sql玩转机器学习

 

机器学习有很多流程,包含数据预处理、特征工程、模型训练、模型评估和预测。今天所有做机器学习服务的人,无论是云上服务还是开源软件,大家都在尝试通过某种方式将如此灵活的流程串联起来。今天给大家介绍一种方式,适用所有人都了解的SQL语言。sqlflow,一种基于sql语言的机器学习实现方案

01 概述

sqlflow是一种基于sql的描述语言,用户可以基于sql的方式实现机器学习模型训练和预测。目前sqlflow已经开源,并且支持了keras、tensorflow、xgboost等算法框架。

sqlflow的地址:https://github.com/sql-machine-learning/sqlflow

作者看法:sql描述语言可能是贯穿机器学习流程的一种解法,但是因为算法流程串联需要极大的灵活性,接下来就看下如何安装并运行。

02 安装流程

1.安装Docker平台工具

sqlflow官方提供了一种基于Docker的安装方式,可以减少配置环境的过程,安装docker可以参考:https://docs.docker.com/install/

屏幕快照 2019-10-08 下午7.09.19.png

安装成功后启动工具,可以在terminal中使用docker命令:

屏幕快照 2019-10-08 下午7.10.45.png

2.Pull docker镜像

有了docker工具后可以通过docker pull命令拉取sqlflow最新的镜像:

docker pull sqlflow/sqlflow

拉取过程中比较慢,需要接近半小时时间

屏幕快照 2019-10-08 下午7.12.20.png

3.启动Docker

docker run --rm -it -p 8888:8888 sqlflow/sqlflow

启动后,可以通过浏览器打开localhost8888,

http://localhost:8888/notebooks

03 使用流程

接下来介绍下sqlflow怎么使用,这里用一个官方例子,如何使用sqlflow基于iris数据,使用DNN实现一个分类模型。

1.首先看下训练数据

屏幕快照 2019-10-08 下午7.17.05.png


2.模型训练

屏幕快照 2019-10-08 下午7.17.44.png

* 通过TRAIN参数选择使用的分类算法,可以选择xgboost、DNN等

* model.n_classes和hidden_units设置模型相关的参数

* train.epoch设置模型迭代的次数

* COLUMN参数设置训练特征

* LABEL设置目标列

* INTO参数设置保存的模型

3.模型预测

屏幕快照 2019-10-08 下午7.20.34.png

使用USING参数调用保存好的模型进行预测

04 我的体感

根据我做了4年多机器学习平台的经验,我也一直在探索有哪种标准化的模型是可以覆盖机器学习全部流程。目前看SQL可能是一种解法,大家通过本文也看出整个使用是比较顺畅。但是如果涉及到很复杂的数据上下文的处理,用SQL可能不一定能满足需求。目前sqlflow更多的意义是给大家一个借鉴,机器学习算法是可以通过sql来描述。后续或许sql成为了最终解决机器学习全流程的答案,或许有新的技术出现,我也跟大家一起期待着。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
JFinal 是一款基于 Java 的轻量级 Web 开发框架,支持使用 Java 语言进行 Web 应用开发。JFinal 提供了一个简单的 ORM 框架来操作数据库,使用 JFinal 可以很方便地将中文换为 SQL 语句。 以下是实现步骤: 1. 首先需要在项目中引入 jfinal 和 druid 的 jar 包。 2. 在 src/main/resources 目录下创建一个名为 druid.properties 的文件,配置数据库连接信息。例如: ``` jdbcUrl=jdbc:mysql://localhost:3306/test username=root password=123456 driverClassName=com.mysql.jdbc.Driver ``` 3. 在项目中创建一个继承自 JFinalConfig 的配置类,配置数据库连接池和路由。例如: ``` public class AppConfig extends JFinalConfig { public void configConstant(Constants constants) { // 配置开发模式 constants.setDevMode(true); } public void configRoute(Routes routes) { // 配置路由 routes.add("/user", UserController.class); } public void configPlugin(Plugins plugins) { // 配置 druid 数据库连接池插件 DruidPlugin druidPlugin = new DruidPlugin( getProperty("jdbcUrl"), getProperty("username"), getProperty("password"), getProperty("driverClassName") ); plugins.add(druidPlugin); // 配置 ActiveRecord 插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin); plugins.add(arp); // 配置 MySQL 数据库方言 arp.setDialect(new MysqlDialect()); } } ``` 4. 创建一个 UserController 类,处理中文 SQL 的请求。例如: ``` public class UserController extends Controller { public void index() { renderText("Welcome to JFinal!"); } public void search() { String keyword = getPara("keyword"); String sql = Db.getSql("user.search", keyword); List<User> userList = User.dao.find(sql); renderJson(userList); } } ``` 5. 在 src/main/resources 目录下创建一个名为 sql 的文件夹,用于存放 SQL 文件。例如: ``` user.search=SELECT * FROM user WHERE name LIKE '%?%' ``` 6. 运行项目,在浏览器中访问 http://localhost:8080/user/search?keyword=张三,即可将关键字“张三”换为 SQL 语句并执行查询。查询结果将以 JSON 格式返回。 以上就是使用 JFinal 实现中文 SQL 的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值