文档

用户自定义模型使用案例

更新时间:

本文将介绍使用用户自定义模型进行预测分类的案例。

假设需要做一个预测任务,根据检测的数据来预测患者是否生病。

训练的数据是由一个正则化后的30维度的向量组成,该数据从Wisconsin Breast Cancer Dataset获取,并已提前将数据导入至数据库中,如下图所示:

11.png

其中,通过训练数据中的diagnosis列来判断患者是否真的生病。

使用的模型为TensorFlow平台训练的一个逻辑回归预测模型,将模型保存为TensorFlow的二进制文件并上传至oss bucket。具体的训练过程本案例参考https://www.tensorflow.org/guide/core/logistic_regression_core

使用自定义模型进行预测分类的操作步骤如下:

  1. 在目标集群上开启PolarDB for AI功能和冷数据归档功能。具体的操作步骤请参见开启PolarDB for AI功能开启冷数据归档

  2. 连接数据库,并将训练好的模型上传至AI节点。

    1. 执行以下SQL语句上传模型lr_model,此处您可以自定义模型名称,但要以字母开头且不能包含中折线(-),且下文使用的SQL语句中模型名称需保持一致。

      /*polar4ai*/ UPLOAD MODEL lr_model WITH (model_location = 'https://shared-model.oss-cn-hangzhou.aliyuncs.com/logistic_regression_model.tgz');
    2. 执行以下命令查看模型状态。

      /*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,表示模型上传成功。

  3. 部署模型。

    1. 执行以下SQL语句部署模型。

      /*polar4ai*/ DEPLOY MODEL lr_model WITH (mode = 'in_db');
    2. 执行以下命令查看模型状态。

      /*polar4ai*/ SHOW MODEL lr_model;

      返回结果如下:

      +-------------+---------------------------------------------------------+
      | modelStatus | modelPath                                               |
      +-------------+---------------------------------------------------------+
      | serving     | http://user_bucket_prefix/logistic_regression_model.tgz |
      +-------------+---------------------------------------------------------+
      1 row in set (0.16 sec)

      模型状态显示为serving,表示模型部署完成。

  4. 创建函数。

    执行以下SQL语句创建函数lr_model

    CREATE FUNCTION lr_model RETURNS REAL SONAME "#ailib#_lr_model.so";

    返回结果如下表示创建成功:

    Query OK, 0 rows affected (0.11 sec)
  5. 调用函数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表示没有生病。

  • 本页导读 (0)
文档反馈