sql语句删除一条数据_一条SQL语句搞定机器学习模型?

一条SQL语句搞定机器学习模型?​mp.weixin.qq.com

这条SQL长啥样?

INSERT INTO mindsdb.`predictors`
       (`name`, `predict`, `select_data_query`)
VALUES ('bikes_model', 'count', 
'SELECT * FROM test.bike_data');

f1f89b712a97a52fad28de98299a3e7d.png

一条简单的语句实现创建、训练、测试和发布机器模型。

INSERT INTO mindsdb.predictors
(name, predict, select_data_query)
VALUES(
'<AI-Table name>',
'columns to prediect',
'query to trainfrom'
)

是的,插入一条语句(最少只需要三个值)到mindsdb.`predictors`就好了,

  • <AI-Table name>, 模型名,也是预测时用于访问的表名,MindsDB叫它AI-Table
  • columns to predict,预测变量(可以不止一个)
  • query to trainfrom, 就是训练数据,一般是一个SQL语句

MindsDB


今天的主角就是MindsDB[1], 它为现有数据库提供了一个开源AI层,可以让我们轻松使用SQL查询来开发,训练和部署最新的机器学习模型。

下面以MariaDB为例, 通过一个简单的例子来对MindsDB有个直观的认识。

ab43a0d12324eede01c8bc2a98cb58e3.png

准备工作

软件环境

  • Python >=3.6
  • MariaDB >=10.02,因为需要CONNECT Storage Engine(CONNECT存储引擎)
  • MindsDB >= 2.0.0

安装MariaDB

具体过程参见开窗函数很香,但我的数据库不支持咋办?(有详细的MariaDB、MySQL安装教程以及CONNECT和FEDERATED的使用),这里只强调一条,启用CONNECT存储引擎[2],如果没有该存储引擎,请另外安装(MySQL是FEDERATED)。

INSTALL SONAME 'ha_connect';

安装MindsDB

pip install -U mindsdb

准备config.json

{
    "api": {
        "http": {
            "host": "0.0.0.0",
            "port": "47334"
        },
        "mysql": {
            "host": "127.0.0.1",
            "password": "password",
            "port": "47335",
            "user": "root"
        }
    },
    "config_version": "1.3",
    "debug": true,
    "integrations": {
        "default_mariadb": {
            "enabled": true,
            "host": "127.0.0.1",
            "port": 3306,
            "type": "mariadb",
            "user": "root"
        }
    },
    "storage_dir": "/data/mindsdb/datastore",
     "interface":{
       "datastore": {
           "enabled": false
       }, 
     "mindsdb_native": {
           "enabled": true
       }
     }
}

运行mindsdb

python3 -m mindsdb  --config=config.json --api=mysql

数据准备

本次数据来自Kaggle的共享单车项目[3]

DROP TABLES if EXISTS test.`bike_data`;
-- 创建表
CREATE TABLE test.`bike_data` (
  `datetime` datetime DEFAULT NULL,
  `season` int(11) DEFAULT NULL,
  `holiday` int(11) DEFAULT NULL,
  `workingday` int(11) DEFAULT NULL,
  `weather` int(11) DEFAULT NULL,
  `temp` double DEFAULT NULL,
  `atemp` double DEFAULT NULL,
  `humidity` double DEFAULT NULL,
  `windspeed` double DEFAULT NULL,
  `casual` int(11) DEFAULT NULL,
  `registered` int(11) DEFAULT NULL,
  `count` int(11) DEFAULT NULL);
  
  -- 快速导入本地数据
  LOAD DATA LOCAL INFILE 
  '/data/bike-sharing-demand/train.csv'
   INTO TABLE bike_data columns 
   terminated by ',' 
   IGNORE 1 LINES;

训练模型

INSERT INTO mindsdb.`predictors`
       (`name`, `predict`, `select_data_query`)
VALUES ('bikes_model', 'count',
 'SELECT * FROM test.bike_data');

这一步需要多少时间,视机器性能和模型复杂程度而定,可以通过如下SQL判断模型是否训练结束,

select * from mindsdb.predictors where name='bikes_model';

返回

namestatusaccuracy
bikes_modelcomplete0.998

通过status(状态)可以得知,训练结束了,精确度 0.998。

查询模型(预测)

SELECT count, count_confidence
FROM mindsdb.bikes_model
WHERE datetime='2011-01-20 00:00:00' AND
     season='1' AND
     holiday='0' AND
     workingday='1' AND
     weather='1' AND
     temp='10.66' AND
     atemp='11.365' AND
     humidity='56' AND
     windspeed='26.0027' AND
     registered=13 ;

返回结果

countcount_confidence
210.99

删除模型

DELETE FROM mindsdb.predictors WHERE name='bikes_model'

到此,一个完整的流程结束。

更多功能

  • 更多数据库支持

MindsDB不仅仅支持MariaDB,还支持Clickhouse, MySql, Postgres, MSSQL, Mongo, Snowflake。

  • 支持API和网页访问

30ed44ed4702f3b6f293083febfbea8f.png

73b6b741be4705b05080fb0ada2398f2.png
  • 支持训练和预测多个特征

链接

[1] https://mindsdb.com
[2] https://mariadb.com/kb/en/installing-the-connect-storage-engine/

[3] https://www.kaggle.com/c/bike-sharing-demand/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值