機械学習モデルの導入が不安ですか?ここにステップバイステップのチュートリアルがあります

機械学習モデルの導入が不安ですか?ここにステップバイステップのチュートリアルがあります

[[283211]]

Unsplash の Franck V による写真

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式サイトにアクセスして許可を申請してください。

この記事を読めば、希望するプログラミング言語で機械学習モデルを展開し、予測を行うことができるようになります。はい、Python を使い続けることも、Java または Kotlin を介して Android アプリで直接予測を行うこともできます。あるいは、Web アプリケーションでモデルを直接使用することもできます。選択肢は数多くあります。簡単にするために、Postman を使用します。

ただし、オプションが非常に多いため、このモデルをライブ サーバーに配置する方法については説明しません。モデルはローカルホスト上で実行されるため、別のネットワークからはアクセスできません (ただし、モデルを AWS などにデプロイする方法については、Google で検索してください)。

次のようなディレクトリ構造を作成しました。

ML 展開:

  • モデル/Train.py

  • アプリ.py

Anaconda 経由で Python をインストールした場合は、Flask を除くすべてのライブラリが事前にインストールされている可能性があります。したがって、ターミナルを起動して次のステートメントを実行します。

  1. pip で Flask をインストールする
  2. pip で Flask-RESTful をインストールします

順調に進んでいますか?よし、それでは本題に入りましょう。

基本的な予測スクリプトの作成

ディレクトリ構造に従っている場合は、model/Train.py ファイルが開いているはずです。まず、アイリス データセットを読み込み、単純な決定木分類器を使用してモデルをトレーニングします。トレーニングが完了したら、joblib ライブラリを使用してモデルを保存し、精度スコアをユーザーに報告します。

ここでは何も複雑なことはありません。この記事の焦点は機械学習ではなく、単にモデルの展開だからです。スクリプト全体は次のとおりです。

  1. sklearnからデータセットをインポートする
  2. sklearn.tree からDecisionTreeClassifierをインポートします
  3. sklearn.model_selection からtrain_test_splitをインポートします
  4. sklearn.metricsからaccuracy_scoreをインポートする
  5. sklearn.externalsからjoblibをインポートする
  6.  
  7. def train_model():
  8. iris_df = データセット.load_iris()
  9.  
  10. x = iris_df.データ
  11. y = iris_df.target
  12.  
  13. X_train、X_test、y_train、y_test = train_test_split(x、y、test_size= 0.25 )
  14. dt = DecisionTreeClassifier().fit(X_train, y_train)
  15. 予測 = dt.predict(X_test)
  16.  
  17. 精度 = 精度スコア(y_test, preds)
  18. joblib.dump(dt, 'iris-model.model' )を実行します。
  19. print( 'モデルのトレーニングが完了しました。\n\t取得された精度: {}' .format(accuracy))

展開する

これで、app.py ファイルを開いてインポートを行うことができます。 OS モジュール (Flask と Flask RESTful の一部、10 秒前に作成したモデル トレーニング スクリプト) が必要であり、それらおよび joblib をトレーニング モデルに読み込む必要があります。

  1. インポートOS
  2. FlaskからFlaskをインポートし、jsonify、リクエスト
  3. flask_restfulからApi、リソースをインポート
  4. model.Train からtrain_modelをインポート
  5. sklearn.externalsからjoblibをインポートする

ここで、Flask のインスタンスと Flask RESTful からの API を作成する必要があります。何も複雑なことはありません:

  1. アプリ = Flask(__name__)
  2. api = Api(アプリ)

次に行うことは、モデルがトレーニングされたかどうかを確認することです。 Train.py では、モデルが iris-model.model ファイルに保存され、そのファイルが存在しない場合は、まずモデルをトレーニングする必要があることを指定しています。トレーニングが完了したら、joblib を通じてロードできます。

  1. os.path.isfile( 'iris-model.model' ) でない場合:
  2. モデルのトレーニング()
  3.  
  4. モデル = joblib.load( 'iris-model.model' )

ここで、予測を行うためのクラスを宣言する必要があります。 Flask RESTful はこのコーディング規則を使用するため、クラスは Flask RESTful リソース モジュールから継承する必要があります。クラスでは、get()、post()、またはデータを処理するその他のメソッドを宣言できます。

データが URL を介して直接渡されないように、 post() を使用します。ユーザー入力から属性を取得する必要があります(ユーザーが入力した属性値に基づいて予測を行います)。次に、読み込んだモデルの .predict() 関数を呼び出すことができます。このデータセットのターゲット変数の形式が ('Iris-setosa', 'Iris versicolor', 'Iris virginica') ではなく (0, 1, 2) であるため、これも修正する必要があります。最後に、予測の JSON 表現を返すことができます。

  1. クラスMakePrediction(リソース):
  2. @静的メソッド 
  3. デフポスト():
  4. 投稿データ = request.get_json()
  5. sepal_length = posted_data[ 'sepal_length' ]
  6. sepal_width = posted_data[ 'sepal_width' ]
  7. petal_length = posted_data[ 'petal_length' ]
  8. petal_width = posted_data[ 'petal_width' ]は、投稿されたデータです。
  9.  
  10. 予測 = model.predict([[がく片の長さ, がく片の幅, 花弁の長さ, 花弁の幅]])[ 0 ]
  11. 予測 == 0の場合:
  12. 予測クラス = 'Iris-setosa'  
  13. elif予測 == 1 :
  14. 予測クラス = 'アイリス-versicolor'  
  15. それ以外
  16. 予測クラス = 'Iris-virginica'  
  17.  
  18. jsonifyを返す({
  19. 「予測」 : 予測クラス
  20. })

もうすぐ到着です。そのまま進みましょう!また、リクエストを処理するために使用される URL の部分であるルートを宣言する必要があります。

  1. api.add_resource(予測を行う, '/predict' )

最後に、Python にアプリケーションをデバッグ モードで実行するように指示します。

  1. __name__ == '__main__'の場合:
  2. app.run(デバッグ=True)を実行します。

それは正しいことだ。 Postman やその他のツールを使用してモデルを起動し、予測を行うことができます。

何か見逃した場合に備えて、app.py ファイル全体を参考として示します。

  1. インポートOS
  2. FlaskからFlaskをインポートし、jsonify、リクエスト
  3. flask_restfulからApi、リソースをインポート
  4. model.Train からtrain_modelをインポート
  5. sklearn.externalsからjoblibをインポートする
  6.  
  7. アプリ = Flask(__name__)
  8. api = Api(アプリ)
  9.  
  10. os.path.isfile( 'iris-model.model' ) でない場合:
  11. モデルのトレーニング()
  12.  
  13. モデル = joblib.load( 'iris-model.model' )
  14.  
  15. クラスMakePrediction(リソース):
  16. @静的メソッド 
  17. デフポスト():
  18. 投稿データ = request.get_json()
  19. sepal_length = posted_data[ 'sepal_length' ]
  20. sepal_width = posted_data[ 'sepal_width' ]
  21. petal_length = posted_data[ 'petal_length' ]
  22. petal_width = posted_data[ 'petal_width' ]は、投稿されたデータです。
  23.  
  24. 予測 = model.predict([[がく片の長さ, がく片の幅, 花弁の長さ, 花弁の幅]])[ 0 ]
  25. 予測 == 0の場合:
  26. 予測クラス = 'Iris-setosa'  
  27. elif予測 == 1 :
  28. 予測クラス = 'アイリス-versicolor'  
  29. それ以外
  30. 予測クラス = 'Iris-virginica'  
  31.  
  32. jsonifyを返す({
  33. 「予測」 : 予測クラス
  34. })
  35.  
  36. api.add_resource(予測を行う, '/predict' )
  37.  
  38. __name__ == '__main__'の場合:
  39. app.run(デバッグ=True)を実行します。

さて、準備はいいですか?

良い!ルート ディレクトリ (app.py がある場所) に移動し、ターミナルを起動して以下を実行します。

  1. Python アプリ.py

約 1 秒後、アプリケーションがローカルホスト上で実行されていることを示す出力が表示されます。

ここで、Postman を開いて次の操作を行います。

  • メソッドをPOSTに変更する

  • URLとしてlocalhost:5000/predictと入力します

  • 本文タブでJSONを選択します

  • 予測を行うためにJSONを入力します

次に、[送信] をクリックします。

見て!ほぼすぐにモデルからの予測が得られます。

最後に

この記事を最後まで読んでいただければ幸いです。すべてをコピーして貼り付けるだけであれば、必要なライブラリがすべてインストールされている限り、問題なく実行できるはずです。

新しく得た知識を、独自のデータセットやビジネス上の問題に活用することを強くお勧めします。 Python 以外の言語でアプリケーションを作成し、データと機械学習関連のものにのみ Python を使用する場合に便利です。

出典: http://t.cn/AirsMxVF

<<:  将来、人工知能は冷酷な大量虐殺者になるのでしょうか?

>>:  顔認識技術とは何ですか?適用シナリオは何ですか?

ブログ    
ブログ    
ブログ    

推薦する

将来のモバイル通信ネットワーク、6Gと人工知能の統合

将来の 6G ネットワークのより豊富なビジネス アプリケーションと極めて厳しいパフォーマンス要件を満...

ルーティングアルゴリズムの概念

この記事では主にルーティング アルゴリズムの概念を説明し、ルーティング アルゴリズムの基本的な概念を...

...

ダニエル・ウーの顔を5秒で変える!人気のAIアプリ「ZAO」は依然として技術的な問題に直面しています。あなたの「顔」は認証されましたか?

制作:ビッグデータダイジェスト編集部ZAOは一夜にして人気者になった。一昨夜、文翁の友人の輪には、さ...

AIロボットが2025年までにクラウドデータセンターの半分を占める可能性

[[437396]]コネチカット州スタンフォード — 新しいレポートによると、人工知能 (AI) を...

...

AIと分析がIoT収益化の鍵となる理由

通信業界は現在、競争力を維持するために IoT を収益化するという厳しい課題に直面しており、高度なテ...

自動運転のための LiDAR とビジョンフュージョン認識の理解

2022年は、インテリジェント運転がL2からL3/L4に飛躍する絶好のチャンスです。ますます多くの自...

人工知能に関するよくある誤解

ビッグデータ、自動化、ニューラルネットワークが日常語となっている世界では、人工知能とその背後にあるプ...

時空間アルゴリズム研究に基づくビジネス意思決定分析

[[191733]]諺にもあるように、「時間と空間は予測不可能である」。自然界では、時間と空間が急速...

スタンフォード大学の研究:スマートフォンの録画で人が酔っているかどうかを98%の精度で識別できる

11月9日、スタンフォード大学の最近の研究で、スマートフォンは音声パターンから人が酔っているかどうか...

...

業界初のAIリアルタイムステルス技術、ステルスの超能力を手に入れるために快手へ

先ほど終わった快手千夜一夜パーティで、ディルラバ・ディルムラトの突然の登場に、司会者と観客から「かっ...

...

ディープニューラルネットワークをデバッグするにはどのような方法を使用しますか? 4つの簡単な方法をご紹介します

データセットの構築、ニューラル ネットワークのコーディング、モデルのトレーニングに何週間も費やした後...