内容已经转出,请移步以下网址:

https://viadean.notion.site

Flask API 提供 scikit-learn 预测模型

 二维码 12
文章附图

背景

Scikit-learn 是一个直观且功能强大的 Python 机器学习库,它使许多模型的训练和验证变得相当容易。 Scikit-learn 模型可以被持久化(腌制)以避免每次使用时都重新训练模型。 您可以使用 Flask 创建一个 API,该 API 可以使用 pickled 模型根据一组输入变量提供预测。

在我们进入 Flask 之前,重要的是要指出 scikit-learn 不处理分类变量和缺失值。 分类变量需要编码为数值。 通常使用 OneHotEncoder (OHE) 或 LabelEncoder 转换分类变量。 LabelEncoder 为每个分类值分配一个整数,并将原始变量转换为新变量,并用对应的整数替换分类变量。 这种方法的问题在于,名义变量被有效地转换为有序变量,这可能会欺骗模型认为顺序是有意义的。 另一方面,OHE 不会遇到这个问题,但是它往往会增加转换变量的数量,因为为分类变量的每个值都创建了一个新变量。

关于 LabelEncoder 需要了解的一件事是,转换将根据变量中分类值的数量而变化。 假设您有一个具有“黄金”和“白金”值的“订阅”变量。 LabelEncoder 将分别将这些映射到 0 和 1。 现在,如果您将值“免费”添加到组合中,则分配将更改(免费编码为 0,黄金编码为 1,白金编码为 2)。 因此,在预测时保留原始 LabelEncoder 以进行转换非常重要。

内容

  • 加载数据源 Python 脚本

  • 替换和迭代分类变量 Python 脚本

  • OneHotEncoder 分类变量 Python 脚本

  • 转换数据源 Python 脚本

  • 使用 Flask 提供模型

    • 导入库 Python 脚本

    • 导入模型和创建输入端点 Python 脚本

  • 源代码


阅读完整文档