插入”自动构建/训练模型
可以使用“插入”自动构建/训练模型,并使用“选择”语句对其进行查询。例如:
INSERT INTO mindsdb.predictors(name, predict, select_data_query) VALUES('model_name', 'target_variable', 'SELECT * FROM table_name');
SELECT <predicted_variable> FROM <ML_model> WHERE <conditions>
它是通过AI Tables完成的,AI Tables是MindsDB的一种开源技术与最流行的数据库进行本地集成。 此解决方案通过标准数据库功能(例如联合存储引擎(MySQL,MariaDB)或ODBC驱动程序(Microsoft SQL Server)等)工作。 基本上,AI表会自动从数据库中的数据中学习,并通过标准SQL查询提供预测。它们看起来像常规表,但实际上是虚拟的。模型训练和处理是在MindsDB服务器上完成的,该服务器可能与数据库分开并在GPU机器上运行。 此外-优点在于可以将它同时连接到多个数据库!例如,你从PostgreSQL数据库中包含的数据训练ML模型,并从后端有MySQL的Web应用程序查询预测。相同的AI表在两个数据库上都是可见的-因为它们是虚拟的。
图形用户界面
还有一个图形用户界面,这使得使用模型更加容易,并提供了额外的可解释性见解,以了解准确性等。 AI Tables在其预测引擎(由Facebook AI团队开发)的后端使用PyTorch,许多人认为PyTorch是最好的开源深度学习框架。 因此,在数据库内部进行机器学习有很多好处。例如,不必为ML工作流构建和维护应用程序集成,也无需更改应用程序或BI工具。由于数据是机器学习的主要成分,因此数据层是最佳的选择。
直接编写
数据集上决策树的快速SQL实现iris
select Sepal_Length, Sepal_Width, Petal_Length, Petal_Width, Species,
case when Petal_Width < 0.75 then 'setosa'
when Petal_Width >= 0.75 and Petal_Width < 1.35 then 'versicolor'
when Petal_Width >= 0.75 and Petal_Width < 1.75 and Petal_Width >= 1.35 and Sepal_Width < 2.65 then 'virginica'
when Petal_Width >= 0.75 and Petal_Width < 1.75 and Petal_Width >= 1.35 and Sepal_Width >= 2.65 then 'versicolor'
when Petal_Width >= 0.75 and Petal_Width >= 1.75 then 'virginica'
end as Prediction
from iris_new
所使用的规则是使用R中的程序包生成的tree,并受75%的数据训练。提取规则很简单,并且可以直观地完成:
fit <- tree(Species ~ ., data = training)
plot(fit)
text(fit)
请注意,该模型仅具有〜97%的精度。虽然可以开发出一个完全适合数据的决策树,但要避免这样做以避免过度拟合,并指出这种方法的局限性。
转载自:https://www.quora.com/How-do-I-create-a-machine-learning-algorithm-with-SQL