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

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

[[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

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

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

ブログ    
ブログ    
ブログ    

推薦する

...

2022 年に予測されるロボット技術のトレンド トップ 10

COVID-19パンデミックは、物流やスーパーマーケットなどの分野に問題と機会の両方をもたらしまし...

自分で作成したデータセット、TensorFlow を使用した株価予測チュートリアル

[[211061]] STATWORX チームは最近、Google Finance API から S...

...

人工知能はマーケティング業界に破壊的な影響を及ぼすだろう

ビッグデータと人工知能の市場は現在、活況を呈しています。調査会社の最近の予測によると、これら2つの技...

アルコールで動く88mgのマイクロロボットは2時間連続稼働可能

マイクロロボットは極めて狭い空間でも移動できますが、これは人間や従来のロボットでは不可能なことです。...

COVID-19ヘルスケア市場はこれまでと異なる

[[355787]]画像ソース: https://pixabay.com/images/id-537...

...

医学と人工知能が出会うとき、将来の医学の5つの主要なトレンドを知っておく必要があります

[[257227]] 2015年、映画『ベイマックス』は多くの人々の心を動かし、『ベイマックス』とい...

チップ大手がCESで新年の幕開けを飾る戦いを繰り広げる! AMD、インテル、NVIDIA、クアルコムの衝撃的な対決

毎年恒例のテクノロジー業界のオープニングショー「CES」が現在、米国ラスベガスで開催されています。 ...

快手テクノロジーのマルチメディアコンテンツ理解部門のLi Yan氏:AI技術は快手製品に統合されています

「AI技術はKuaishou製品ライン全体に浸透しています。AI技術による多次元のエンパワーメントに...

...

...

モノのインターネットの可能性を最大限に引き出す方法

モノのインターネットは大量のセンサーデータを生成すると予測されており、それが人工知能と組み合わさるこ...

Python 機械学習の実践: クレジットカード詐欺検出

ストーリーの背景:元のデータは個人の取引記録ですが、データ自体のプライバシーを考慮して、元のデータは...