这条SQL长啥样?
INSERT INTO mindsdb.`predictors`
(`name`, `predict`, `select_data_query`)
VALUES ('bikes_model', 'count',
'SELECT * FROM test.bike_data');
![f1f89b712a97a52fad28de98299a3e7d.png](https://i-blog.csdnimg.cn/blog_migrate/04d5e0bcfe9ff66a93224a6d2211ce07.jpeg)
一条简单的语句实现创建、训练、测试和发布机器模型。
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](https://i-blog.csdnimg.cn/blog_migrate/ffbba45286cafbd7e3f0251a15ed155a.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';
返回
name | status | accuracy |
---|---|---|
bikes_model | complete | 0.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 ;
返回结果
count | count_confidence |
---|---|
21 | 0.99 |
删除模型
DELETE FROM mindsdb.predictors WHERE name='bikes_model'
到此,一个完整的流程结束。
更多功能
- 更多数据库支持
MindsDB不仅仅支持MariaDB,还支持Clickhouse, MySql, Postgres, MSSQL, Mongo, Snowflake。
- 支持API和网页访问
![30ed44ed4702f3b6f293083febfbea8f.png](https://i-blog.csdnimg.cn/blog_migrate/02c55ac331aa3f1006e1e54c352197de.png)
![73b6b741be4705b05080fb0ada2398f2.png](https://i-blog.csdnimg.cn/blog_migrate/276f2b8fbf7c567ee48c1d6de6dcf7cd.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/