23

sklearn分類器をローカルでトレーニングしたので、その使用方法を示す単純な Web アプリケーションを作成する必要があります。私は Web アプリ開発の完全な初心者であり、使用しているモジュールをサポートしていないフレームワークを使用して Web アプリを作成するために時間を無駄にしたくありません。

  1. このタスクに適したアプローチは何だと思いますか?
  2. どの Web アプリ開発フレームワークを使用すればよいですか (ある場合)?
  3. などに飛び込む必要がありますかHerokudjangoまたは単純な科学的デモのためのより簡単で迅速なソリューションはありますか?

私が考えたのは、トレーニングした分類子を取得し、サーバー上でピクルしてピクル解除し、サーバーから実行するclassifyことでしたが、どこから始めればよいかわかりません。

4

6 に答える 6

18

これが単なるデモ用である場合は、分類器をオフラインでトレーニングし、モデルをピクルしてから、フラスコボトルなどの単純な Python Web フレームワークを使用して、サーバーの起動時にモデルをアンピクルし、HTTP 要求ハンドラーで予測関数を呼び出します。

django は完全な機能を備えたフレームワークであるため、flask や bottle よりも習得に時間がかかりますが、優れたドキュメントとより大きなコミュニティがあります。

heroku は、アプリケーションをクラウドでホストするサービスです。herokuでフラスコ アプリケーションをホストすることは可能です。簡単なテンプレート プロジェクトとそのための手順を次に示します。

「本番」セットアップの場合は、pickle を使用するのではなく、機械学習モデル用に独自の永続化レイヤーを記述して、ストアのパラメーターを完全に制御し、古いものの unpickle を壊す可能性のあるライブラリのアップグレードに対してより堅牢にすることをお勧めします。モデル。

于 2012-07-22T13:59:46.557 に答える
3

これは分類器ではありませんが、ボトル フレームワークと scikit-learn を使用して単純な機械学習 Web サービスを実装しました。.csv 形式のデータセットを指定すると、主成分分析および線形判別分析手法に関する 2D 視覚化が返されます。

詳細とデータ ファイルの例は、http: //mindwriting.org/blog/?p=153にあります。

これが実装です: upload.html:

<form
 action="/plot" method="post"
 enctype="multipart/form-data"
>
Select a file: <input type="file" name="upload" />
<input type="submit" value="PCA & LDA" />
</form>

pca_lda_viz.py (ホスト名とポート番号を変更):

import matplotlib
matplotlib.use('Agg')

import matplotlib.pyplot as plt
import numpy as np
from cStringIO import StringIO

from bottle import route, run, request, static_file
import csv
from matplotlib.font_manager import FontProperties
import colorsys

from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.lda import LDA

html = '''
<html>
    <body>
        <img src="data:image/png;base64,{}" />
    </body>
</html>
'''

 @route('/')
 def root():
     return static_file('upload.html', root='.')

 @route('/plot', method='POST')
    def plot():

       # Get the data
       upload = request.files.get('upload')
       mydata = list(csv.reader(upload.file, delimiter=','))

       x = [row[0:-1] for row in mydata[1:len(mydata)]]

       classes =  [row[len(row)-1] for row in mydata[1:len(mydata)]]
       labels = list(set(classes))
       labels.sort()

       classIndices = np.array([labels.index(myclass) for myclass in classes])

       X = np.array(x).astype('float')
       y = classIndices
       target_names = labels

       #Apply dimensionality reduction
       pca = PCA(n_components=2)
       X_r = pca.fit(X).transform(X)

       lda = LDA(n_components=2)
       X_r2 = lda.fit(X, y).transform(X)

        #Create 2D visualizations
       fig = plt.figure()
       ax=fig.add_subplot(1, 2, 1)
       bx=fig.add_subplot(1, 2, 2)

       fontP = FontProperties()
       fontP.set_size('small')

       colors = np.random.rand(len(labels),3)

       for  c,i, target_name in zip(colors,range(len(labels)), target_names):
           ax.scatter(X_r[y == i, 0], X_r[y == i, 1], c=c, 
                      label=target_name,cmap=plt.cm.coolwarm)
           ax.legend(loc='upper center', bbox_to_anchor=(1.05, -0.05),
                     fancybox=True,shadow=True, ncol=len(labels),prop=fontP)
           ax.set_title('PCA')
           ax.tick_params(axis='both', which='major', labelsize=6)

       for c,i, target_name in zip(colors,range(len(labels)), target_names):
           bx.scatter(X_r2[y == i, 0], X_r2[y == i, 1], c=c, 
                      label=target_name,cmap=plt.cm.coolwarm)
           bx.set_title('LDA');
           bx.tick_params(axis='both', which='major', labelsize=6)

       # Encode image to png in base64
       io = StringIO()
       fig.savefig(io, format='png')
       data = io.getvalue().encode('base64')

       return html.format(data)

run(host='mindwriting.org', port=8079, debug=True)
于 2014-06-04T15:24:24.533 に答える
2

以下のチュートリアルに従って、scikit-learn モデルを Azure ML にデプロイし、Web サービスを自動的に生成できます。

Python と Azure ML を使用して予測 Web アプリを構築およびデプロイする

またはyHat + Herokuの組み合わせでもうまくいくかもしれません

于 2015-09-17T05:51:23.280 に答える