首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python :将数据传递给机器学习python脚本并获得结果。

python :将数据传递给机器学习python脚本并获得结果。
EN

Stack Overflow用户
提问于 2015-07-29 15:11:16
回答 1查看 2.4K关注 0票数 0

我在web框架方面的知识非常糟糕。我在python中构建了一个机器学习模型,它使用一组字符串作为输入和返回结果。在网上搜索之后,我发现了Flask。但我不知道的是,如何真正创建一个烧瓶应用程序来实际获取一个字符串,并允许用户提交并将该字符串传递给我的机器,学习python脚本并返回结果。到目前为止,这就是我的全部

代码语言:javascript
运行
复制
import threading
import subprocess
import os
import sys
from flask import Flask
from flask import render_template, abort
app = Flask(__name__)
app.debug = True

def run_script():
    theproc = subprocess.Popen([sys.executable, "ML_script.py"])
    theproc.communicate()


if __name__ == "__main__":
    app.run()

如果您可以指向一个示例或提供一个解决方案,/skeleton,那就太棒了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-29 17:05:56

您可以像使用任何其他Python函数一样使用机器学习函数--不需要subprocess。安装应用程序:

代码语言:javascript
运行
复制
from flask import Flask
from flask import render_template, abort, jsonify, request,redirect, json
from my_app.machine_learning import analyzer
app = Flask(__name__)
app.debug = True

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/learning', methods=['POST'])
def learning():
    data = json.loads(request.data)
    # data == {"userInput": "whatever text you entered"}
    response = analyzer(data)
    return jsonify(response)


if __name__ == '__main__':
    app.run()

我在机器学习模块中使用了一个名列前茅,但是analyzer()应该是该模块中的一个函数,它调用执行计算所需的所有其他函数,并返回包含结果的字典。所以就像这样:

代码语言:javascript
运行
复制
def analyzer(data):
    vocab = build_vocab(training_data)
    cl = train_classifier(vocab, trianing_data)
    results = cl.predict(data)
    results = format_results_to_dict()
    return results

模板非常直接:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="../static/script.js"></script>
</script>
</head>

<body>
    <h1>Calculation</h1>
    <h1>Test Page</h1>
    <input id="user-input" placeholder="Text to be analyzed"></input>
    <p id="results">Results will go here<p>
    <button id="submit">Submit</button>
</body>
</html>

和JS脚本来把所有的东西联系在一起:

代码语言:javascript
运行
复制
$(document).ready(function(){
    $("#submit").click(function(event){
        var uInput = $("#user-input").val();
        $.ajax({
              type: "POST",
              url: '/learning',
              data: JSON.stringify({userInput: uInput}),
              contentType: 'application/json',
              success: function(response){
                   $("#results").text(response.results);
                },
          });
    });
});
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31704411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档