一条SQL语句搞定机器学习模型?
这条SQL长啥样?
INSERT INTO mindsdb.`predictors`(`name`, `predict`, `select_data_query`)VALUES ('bikes_model', 'count','SELECT * FROM test.bike_data');

一条简单的语句实现创建、训练、测试和发布机器模型。
INSERT INTO mindsdb.predictors(name, predict, select_data_query)VALUES('' ,'columns to prediect','query to trainfrom')
是的,插入一条语句(最少只需要三个值)到mindsdb.`predictors`就好了,
, 模型名,也是预测时用于访问的表名,MindsDB叫它AI-Table columns to predict,预测变量(可以不止一个)
query to trainfrom, 就是训练数据,一般是一个SQL语句
MindsDB
今天的主角就是MindsDB[1], 它为现有数据库提供了一个开源AI层,可以让我们轻松使用SQL查询来开发,训练和部署最新的机器学习模型。
下面以MariaDB为例, 通过一个简单的例子来对MindsDB有个直观的认识。

准备工作
软件环境
Python >=3.6
MariaDB >=10.02,因为需要CONNECT Storage Engine(CONNECT存储引擎)
MindsDB >= 2.0.0
安装MariaDB
具体过程略,这里只强调一条,启用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 columnsterminated 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';返回
| name | status | accuracy |
|---|---|---|
| bikes_model | complete | 0.998 |
通过status(状态)可以得知,训练结束了,精确度 0.998。
查询模型(预测)
SELECT count, count_confidenceFROM mindsdb.bikes_modelWHERE datetime='2011-01-20 00:00:00' ANDseason='1' ANDholiday='0' ANDworkingday='1' ANDweather='1' ANDtemp='10.66' ANDatemp='11.365' ANDhumidity='56' ANDwindspeed='26.0027' ANDregistered=13 ;
返回结果
| count | count_confidence |
|---|---|
| 21 | 0.99 |
删除模型
DELETE FROM mindsdb.predictors WHERE name='bikes_model'到此,一个完整的流程结束。
更多功能
更多数据库支持
MindsDB不仅仅支持MariaDB,还支持Clickhouse, MySql, Postgres, MSSQL, Mongo, Snowflake。
支持API和网页访问


支持训练和预测多个特征
链接
[1] https://mindsdb.com
[2] https://mariadb.com/kb/en/installing-the-connect-storage-engine/
[3] https://www.kaggle.com/c/bike-sharing-demand/
↓↓↓我的朋友圈更精彩↓
推荐阅读
(点击标题可跳转阅读)
老铁,三连支持一下,好吗?↓↓
推荐阅读
(点击标题可跳转阅读)
老铁,三连支持一下,好吗?↓↓
