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 脚本
源代码
详情参阅 - 亚图跨际