博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用-TensorFlow-构建卷积神经网络
阅读量:2440 次
发布时间:2019-05-10

本文共 3950 字,大约阅读时间需要 13 分钟。

作者:chen_h

微信号 & QQ:862251340
微信公众号:coderpai


我记得在我最初采用机器学习进行项目实践的几天,我花了很多的时间去构建一个很好的模型。我请教了很多的算法专家,让它们对我的模型提出建议,并且优化我的特征提取,以获得最好的性能。但是,我遇到了一个严重的问题,那就是我如何在现实生活中应用这个模型?我查阅了很多的文献,但是大家都是在讨论如何对模型进行修改优化,我也询问了很多一线的算法工作人员,但是大家给我的答案都是去搭建一个很庞大的基础平台,然后采用服务器集群或者分布式去现实应用。但是这些根本就不适合我这种初入门的学习者。

那么,如何采用一个简单的方式可以达到我们的目的呢?这也是我们这篇文章需要解决的问题。在接下来的文章中,我会给大家介绍如何采用 Flask 框架来设计一个简单的机器学习模型 API,然后我们可以在别的地方调用这个 API 来实现模型的应用。

目录

  1. 应用一个机器学习的方式
  2. 什么是 API ?
  3. Python 环境设置和 Flask 基础介绍
  4. 创建机器学习模型
  5. 保存机器学习模型:序列化和反序列化
  6. 使用 Flask 创建一个 API

1. 应用一个机器学习的方式

在大多数情况下,我们的机器学习模型并非处在产品的核心,比如只是自动邮件系统或者聊天机器人的一小部分,这是没有办法的局面。在很多的情况下,我们都会使用 R 或者 Python 语言俩进行实验。但是那些模型的应用者(开发工程师)都是不同语言的软件工程师,那么这时候如果要应用我们的模型,就只有两种方式来解决这个问题:

  • 方法 1:我们采用软件工程师所采用的语言来重写我们整个模型。这个看起来是一个不错的选择,但是作为算法工程师去用新的语言重构整个模型所需要的时间和精力是非常巨大的,而且是有点浪费的。像 JavaScript 这种语言并没有很好的机器学习库来支撑我们,所有放弃这种想法吧。

  • 方法 2:设计 API 方法。Web API 的设计使得在同一个应用程序中使用不同的编程语言就显得非常简单。如果前端开发人员需要使用机器学习模型来构建一个 Web 小应用,那么他们只需要从 API 服务器中获取响应的 API 接口就可以,这就会显得非常简单,所以我们也推荐使用这种方法。

2. 什么是 API ?

简单来说,API 是一个连接不同软件应用之间的桥梁,比如一个软件程序作为数据的产生地,然后另一个软件程序需要使用这些数据。API 就是起到链接这两者的作用。

你可以阅读这篇文章,来了解为什么 API 在开发人员中那么热门?

大多数大型云计算提供商和小型机器学习算法提供商都会提供很健全的 API 接口,这也是他们为了那些没有机器学习专业知识的开发者(或者企业)专门开发的,他们可以帮助他们在产品流程中使用机器学习。

就是这样一个 Web API 的例子。

你所要做的只是通过 Google 提供的 SDK(软件开发工具包)对 API 进行简单的调用。

这是不是听起来非常棒!!在本文中,我们就是要实现这个非常棒的事情,我们会利用 Flask(Python 中的 Web 框架)创建自己的机器学习 API。

注意:Flask 不是唯一可用的 Web 框架,还有 Django,Falcon,Hug 等等。对于 R 语言,我们有一个叫做 的包。

3. Python 环境设置和 Flask 基础介绍

  • 使用 Anaconda 创建一个虚拟环境。如果你需要在 Python 中创建工作流,并且将相关环境分离或者共享出来,那么 Anaconda 将是一个非常不错的选择。
    • 你可以从这里下载 来进行安装使用。
    • wget
    • bash Miniconda3-latest-Linux-x86_64.sh
    • 按照问题的序列进行处理;
    • source .bashrc
    • 如果你运行 conda,你应该就能看到一些命令列表和帮助了;
    • 如果你要创建一个新环境,请运行:conda create –name python=3.6
    • 创建好之后,请启动这个环境:source activate
    • 安装一些你需要的包,在这里最重要的是两个:flask 和 tensorflow。
  • 我们在这里使用 Flask 编写一个最简单的 Hello-World 应用。
    • 你可以使用你最喜欢的编辑器来创建一个 hello-world.py 文件,并且进行编写。
    • 编写如下代码:
#!/usr/bin/env python# -*- coding: utf-8 -*-from flask import Flaskapp = Flask(__name__)@app.route('/users/
')def hello_world(username=None): return ("hello {}!".format(username))if __name__ == "__main__": app.run(host='0.0.0.0')
  • 保存这个文件,并且返回到终端页面
  • 之后,我们来启动这个服务,执行 python hello-world.py
  • 我们可以在浏览器中访问:,得到如下图:

Wow!!你顺利编写了你的第一个 Flask 应用程序。正如你刚刚所经历的几个简单步骤,我们就能在服务器上面创建一个简单的 API 了。

使用 Flask ,我们可以很容易的包装我们的机器学习模型,并且把它作为一个 API 进行服务提供。而且,如果我们想创建一些更加复杂的 web 服务器,那么我们也只需要在上面的应用中添加一些修改就可以了。

4. 创建机器学习模型

  • 我们以一个具体的比赛作为例子:。这个比赛的主要目的是设置一个预处理数据通道,并且创建一个机器学习模型,最后可以完成部署,轻松实现贷款预测。
import os import jsonimport numpy as npimport pandas as pdfrom sklearn.externals import joblibfrom sklearn.model_selection import train_test_split, GridSearchCVfrom sklearn.base import BaseEstimator, TransformerMixinfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.pipeline import make_pipelineimport warningswarnings.filterwarnings("ignore")
  • 在文件夹中保存我们需要的数据,如下:
├── hello-world.py├── model.py├── sample.csv├── test.csv└── train.csv

之后,我们可以利用 pandas 进行数据读取,如下代码:

>>> import pandas as pd>>> data = pd.read_csv('train.csv')>>> list(data.columns)['Loan_ID', 'Gender', 'Married', 'Dependents', 'Education', 'Self_Employed', 'ApplicantIncome', 'CoapplicantIncome', 'LoanAmount', 'Loan_Amount_Term', 'Credit_History', 'Property_Area', 'Loan_Status']>>> data.shape(614, 13)
  • 寻找数据中的缺失项(null / Nan):
for _ in data.columns:    print("The number of null values in:{} == {}".format(_, data[_].isnull().sum()))# outputThe number of null values in:Loan_ID == 0The number of null values in:Gender == 13The number of null values in:Married == 3The number of null values in:Dependents == 15The number of null values in:Education == 0The number of null values in:Self_Employed == 32The number of null values in:ApplicantIncome == 0The number of null values in:CoapplicantIncome == 0The number of null values in:LoanAmount == 22The number of null values in:Loan_Amount_Term == 14The number of null values in:Credit_History == 50The number of null values in:Property_Area == 0The number of null values in:Loan_Status == 0

5. 保存机器学习模型:序列化和反序列化

6. 使用 Flask 创建一个 API

转载地址:http://dldqb.baihongyu.com/

你可能感兴趣的文章
大家好,新学生。 请问怎么升级Redhat9.0 kernel 2.4.X-->2.6.18 的详细过程(转)
查看>>
FreeBSD6.1+无线+永中......桌面安装【附笔记】(转)
查看>>
adsl设置(转)
查看>>
Wii将有一个可升级的Linux操作系统(转)
查看>>
Linux机为先锋智能机和PDA06销量大(转)
查看>>
Oracle与SQL Server在企业应用中的比较(转)
查看>>
Unix类操作系统入门(转)
查看>>
让FreeBSD使用ntpd同步时间(转)
查看>>
用cat命令查看文件内的特殊字符(转)
查看>>
debian sid下vmware不能运行一则(转)
查看>>
Linux操作系统套接字编程的5个隐患(转)
查看>>
Ubuntu Linux:定制Ubuntu安装CD(转)
查看>>
调查显示:企业级Linux用户不断攀升(转)
查看>>
Ubuntu/Linux入门介绍-dpkg(转)
查看>>
SCO UNIX学习宝典 高级进阶(转)
查看>>
Oracle9i RAC for RedFlag Linux DC4.1 32bit 安装流程(转)
查看>>
Sybase和Oracle安装过程中常遇到的问题(转)
查看>>
红帽Linux新系统整合虚拟技术 实现简易操作(转)
查看>>
Linux下/etc/default/boot文件字段说明(转)
查看>>
Linux壁纸系列三十四(转)
查看>>