本文将介绍使用用户自定义模型进行预测分类的案例。
假设需要做一个预测任务,根据检测的数据来预测患者是否生病。
模型创建的数据是由一个正则化后的30维度的向量组成,该数据从Wisconsin Breast Cancer Dataset获取,并已提前将数据导入至数据库中,如下图所示:
其中,通过模型创建数据中的diagnosis
列来判断患者是否真的生病。
使用的模型为TensorFlow平台模型创建的一个逻辑回归预测模型,将模型保存为TensorFlow的二进制文件并上传至oss bucket。具体的模型创建过程本案例参考https://www.tensorflow.org/guide/core/logistic_regression_core。
使用自定义模型进行预测分类的操作步骤如下:
在目标集群上开启PolarDB for AI功能和冷数据归档功能。具体的操作步骤请参见开启PolarDB for AI功能和开启冷数据归档。
连接数据库,并将创建好的模型上传至AI节点。
执行以下SQL语句上传模型
lr_model
,此处您可以自定义模型名称,但要以字母开头且不能包含中折线(-),且下文使用的SQL语句中模型名称需保持一致。/*polar4ai*/ UPLOAD MODEL lr_model WITH (model_location = 'https://shared-model.oss-cn-hangzhou.aliyuncs.com/logistic_regression_model.tgz');
执行以下命令查看模型状态。
/*polar4ai*/ SHOW MODEL lr_model;
返回结果如下:
+-------------+----------------------------------------------------+ | modelStatus | modelPath | +-------------+----------------------------------------------------+ | saved_oss | http://bucket_prefix/logistic_regression_model.tgz | +-------------+----------------------------------------------------+ 1 row in set (0.16 sec)
模型状态为saved_oss,表示模型上传成功。
部署模型。
执行以下SQL语句部署模型。
/*polar4ai*/ DEPLOY MODEL lr_model WITH (mode = 'in_db');
执行以下命令查看模型状态。
/*polar4ai*/ SHOW MODEL lr_model;
返回结果如下:
+-------------+---------------------------------------------------------+ | modelStatus | modelPath | +-------------+---------------------------------------------------------+ | serving | http://user_bucket_prefix/logistic_regression_model.tgz | +-------------+---------------------------------------------------------+ 1 row in set (0.16 sec)
模型状态显示为serving,表示模型部署完成。
创建函数。
执行以下SQL语句创建函数
lr_model
。CREATE FUNCTION lr_model RETURNS REAL SONAME "#ailib#_lr_model.so";
返回结果如下表示创建成功:
Query OK, 0 rows affected (0.11 sec)
调用函数
lr_model
进行数据预测分类。SELECT lr_model(radius_mean, texture_mean, perimeter_mean, area_mean, smoothness_mean, compactness_mean, concavity_mean, concave_poinits_mean, symmetry_mean, fractal_dimension_mean, radius_ste, texture_ste, perimeter_ste, area_ste, smoothness_ste, compactness_ste, concavity_ste, concave_poinits_ste, symmetry_ste, fractal_dimension_ste, radius_largest, texture_largest, perimeter_largest, area_largest, smoothness_largest, compactness_largest, concavity_largest, concave_poinits_largest, symmetry_largest, fractal_dimension_largest) AS classification_result FROM logistic_regression_model_norm_table limit 10;
返回结果如下:
+-----------------------+ | classification_result | +-----------------------+ | 1.00000000 | | 1.00000000 | | 1.00000000 | | 0.00000000 | | 1.00000000 | | 0.00000000 | | 1.00000000 | | 0.00000000 | | 1.00000000 | | 0.00000000 | +-----------------------+ 10 rows in set (0.71 sec)
返回结果中,1表示生病,0表示没有生病。
文档内容是否对您有帮助?