一條SQL語(yǔ)句搞定機(jī)器學(xué)習(xí)模型?
這條SQL長(zhǎng)啥樣?
INSERT?INTO?mindsdb.`predictors`(`name`, `predict`, `select_data_query`)VALUES ('bikes_model', 'count','SELECT * FROM test.bike_data');

一條簡(jiǎn)單的語(yǔ)句實(shí)現(xiàn)創(chuàng)建、訓(xùn)練、測(cè)試和發(fā)布機(jī)器模型。
INSERT?INTO?mindsdb.predictors(name,?predict,?select_data_query)VALUES('' ,'columns to prediect','query?to?trainfrom')
是的,插入一條語(yǔ)句(最少只需要三個(gè)值)到mindsdb.`predictors`就好了,
,?模型名,也是預(yù)測(cè)時(shí)用于訪(fǎng)問(wèn)的表名,MindsDB叫它AI-Table columns to predict,預(yù)測(cè)變量(可以不止一個(gè))
query to trainfrom,?就是訓(xùn)練數(shù)據(jù),一般是一個(gè)SQL語(yǔ)句
MindsDB
今天的主角就是MindsDB[1], 它為現(xiàn)有數(shù)據(jù)庫(kù)提供了一個(gè)開(kāi)源AI層,可以讓我們輕松使用SQL查詢(xún)來(lái)開(kāi)發(fā),訓(xùn)練和部署最新的機(jī)器學(xué)習(xí)模型。
下面以MariaDB為例, 通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)對(duì)MindsDB有個(gè)直觀的認(rèn)識(shí)。

準(zhǔn)備工作
軟件環(huán)境
Python?>=3.6
MariaDB?>=10.02,因?yàn)樾枰狢ONNECT?Storage Engine(CONNECT存儲(chǔ)引擎)
MindsDB >= 2.0.0
安裝MariaDB
具體過(guò)程略,這里只強(qiáng)調(diào)一條,啟用CONNECT存儲(chǔ)引擎[2],如果沒(méi)有該存儲(chǔ)引擎,請(qǐng)另外安裝(MySQL是FEDERATED)
INSTALL SONAME 'ha_connect';安裝MindsDB
pip?install?-U?mindsdb準(zhǔn)備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}}}
運(yùn)行mindsdb
python3?-m?mindsdb??--config=config.json?--api=mysql數(shù)據(jù)準(zhǔn)備
本次數(shù)據(jù)來(lái)自Kaggle的共享單車(chē)項(xiàng)目[3]
DROP TABLES if EXISTS test.`bike_data`;-- 創(chuàng)建表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);??--?快速導(dǎo)入本地?cái)?shù)據(jù)LOAD DATA LOCAL INFILE'/data/bike-sharing-demand/train.csv'INTO TABLE bike_data columnsterminated by ','IGNORE 1 LINES;
訓(xùn)練模型
INSERT INTO mindsdb.`predictors`(`name`, `predict`, `select_data_query`)VALUES ('bikes_model', 'count','SELECT * FROM test.bike_data');
這一步需要多少時(shí)間,視機(jī)器性能和模型復(fù)雜程度而定,可以通過(guò)如下SQL判斷模型是否訓(xùn)練結(jié)束,
select * from mindsdb.predictors where name='bikes_model';返回
| name | status | accuracy |
|---|---|---|
| bikes_model | complete | 0.998 |
通過(guò)status(狀態(tài))可以得知,訓(xùn)練結(jié)束了,精確度?0.998。
查詢(xún)模型(預(yù)測(cè))
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 ;
返回結(jié)果
| count | count_confidence |
|---|---|
| 21 | 0.99 |
刪除模型
DELETE?FROM?mindsdb.predictors?WHERE?name='bikes_model'到此,一個(gè)完整的流程結(jié)束。
更多功能
更多數(shù)據(jù)庫(kù)支持
MindsDB不僅僅支持MariaDB,還支持Clickhouse, MySql, Postgres, MSSQL, Mongo, Snowflake。
支持API和網(wǎng)頁(yè)訪(fǎng)問(wèn)


支持訓(xùn)練和預(yù)測(cè)多個(gè)特征
鏈接
[1] https://mindsdb.com
[2]?https://mariadb.com/kb/en/installing-the-connect-storage-engine/
[3]?https://www.kaggle.com/c/bike-sharing-demand/
↓↓↓我的朋友圈更精彩↓
推薦閱讀
(點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)
Python 200個(gè)標(biāo)準(zhǔn)庫(kù)匯總!
老鐵,三連支持一下,好嗎?↓↓
推薦閱讀
(點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)
Python 200個(gè)標(biāo)準(zhǔn)庫(kù)匯總!
老鐵,三連支持一下,好嗎?↓↓
