首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Python中构建可部署的ML分类器

现在,由于问题的复杂性和大量数据的关联,机器学习已经成为找到问题解决方案的必要、有效且高效的方式。在大多数资源中,为了检查模型的准确性,在结构化数据中开发了机器学习模型。但是,实时开发机器学习模型的一些主要要求是在构建模型时处理不平衡数据,在模型中进行参数调整,并将模型保存到文件系统中供以后使用或部署。

在这里,我们将看到如何在处理上面指定所有三个需求同时在python中设计一个二进制分类器。

在开发机器学习模型时,我们通常将所有创新都放在标准工作流程中。其中涉及的一些步骤是获取数据,对其进行特征工程,通过迭代训练和测试构建具有适当参数的模型,并在生产环境中部署构建的模型。

机器学习工作流程

我们将通过构建一个二元分类器来预测红酒的质量,从可用的功能中完成这一工作流程。该数据集可在UCI 机器学习存储库中公开获得。Scikit学习库用于分类器设计。

首先,我们需要导入所有必要的依赖关系并加载数据集。由于数据框架、矩阵和阵列操作都涉及到,所以在任何ml模型设计中,我们都需要numpy和pandas。

数据集看起来像。

从这里可以看出,质量是由3到8的数字表示。为了使其成为二元分类问题,让我们取> 5的质量设为好,否则为不好。

获取数据描述的摘要。

从快照中可以看到,数据值在某些属性上有相当的偏离。标准化这些值是一个很好的做法,因为它会使方差达到合理的水平。另外,由于大多数算法在背景中使用欧氏距离,因此在模型构建中缩放特征效果更好。

这里使用了fit_transform,以使标准标量可以适应X_data并转换X_data。如果你需要在两个不同的数据集上进行拟合和转换,也可以分别调用拟合和转换函数。现在,我们共有1599个数据实例,其中855个质量差,744个质量好。

数据在这里显然是不平衡的,由于数据实例的数量较少,所以我们将进行过采样。但重要的是要注意,重采样应该总是只在训练数据而不是测试、验证数据上进行。现在,我们将数据集划分为模型构建的训练和测试数据集。

除了训练和测试拆分之外,你还可以选择更有效的交叉验证方法。现在我们有588个质量差和531个质量好的训练实例,仍有267个质量差和213个质量良好的实例。现在是对训练数据进行重新采样以平衡它的时候,这样模型就不会出现偏差。这里我们将使用SMOTE算法进行过采样。

经过抽样调查,共有588例优质和劣质葡萄酒实例。那我们来看一下模型选择,在这里采用了随机梯度分类器。但是,你可以检查几个模型,并比较准确性来选择合适的。

结果看起来像。

得到的准确度是65.625%。学习率、损失函数等参数对模型的性能起主要作用。我们可以使用GridSearchCV有效地选择模型的最佳参数。

从这里可以看出,这里只提供了损失函数和alpha值,以便为它们找到最佳选择。其他参数也可以做到这一点,损失函数的最佳选择似乎是“铰链”的i.r.线性支持向量机和alpha值,它似乎是0.001。现在,我们将使用网格搜索选择的最佳参数来构建模型。

现在,我们选择了模型,调整了参数,以便在部署之前验证模型。

从这里可以看出,调整参数后,度量值已经提高了2-3%。准确度也从65.625%提高到70.625%。如果你对该模型不满意,可以通过一些训练和测试迭代来尝试其他算法。现在,由于模型已经建立,所以需要将其保存到文件系统以备后用或在其他地方部署。

当你需要分类器时,可以使用joblib简单加载它,并通过特性树组来获得结果。

那么,恭喜,现在你已经准备好了设计可部署的机器学习模型。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180308G14JX400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券