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

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

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

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

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

ブログ    
ブログ    

推薦する

すべては応用のため!九張雲記DataCanvas大型モデルシリーズ成果発表!

11月21日、北京で「基礎を築き、力をつけ、未来へスマートに進む」九張雲済DataCanvasビッ...

Pythonでゲームボーイエミュレーターを作成し、AIモデルをトレーニングする:デンマーク人の大学のプロジェクトが大ヒット

Atari ゲームを使って人工知能を研究するのは、ちょっと現実的ではないと感じますか?これでゲームボ...

ビッグデータに圧倒された米国の諜報機関は人工知能に期待をかけている

[[205975]]膨大な量のデータを精査する必要があるため、米国の諜報機関は人工知能に期待をかけて...

AI とブロックチェーンは 2020 年にモバイル アプリ業界にどのような革命を起こすのでしょうか?

新たな10年を迎えるにあたり、人々は過去10年間の経験と教訓を活用する必要があります。モバイル アプ...

AF2を超える? Iambic、NVIDIA、Caltech が、状態固有のタンパク質-リガンド複合体の構造予測のためのマルチスケール深層生成モデルを開発

タンパク質と小分子リガンドによって形成される結合複合体は、生命にとって遍在し、不可欠です。科学者は最...

機械学習の導入を容易にする 6 つのツール

今日、多くのベンダーは、データインテリジェントなビジネスユーザーが AI テクノロジーを採用できるよ...

...

AI時代のクラウドベースのインテリジェントコンピューティング

人工知能の計算能力に対する需要は弾力性と拡張性があり、ピーク需要に耐える能力と日常使用中に調整する能...

大規模マルチビューガウスモデル(LGM):5秒で高品質の3Dオブジェクトを生成、試用可能

メタバースにおける 3D クリエイティブ ツールの需要の高まりに対応するため、3 次元コンテンツ生成...

1000ステップ未満の微調整で、LLaMAコンテキストは32Kに拡張されました。これは、Tian Yuandongチームの最新の研究です。

誰もが独自の大規模モデルをアップグレードして反復し続けるにつれて、コンテキスト ウィンドウを処理する...

自動機械学習でニューラルネットワークを進化させる方法

機械学習に携わるほとんどの人にとって、ニューラル ネットワークの設計は芸術作品の作成に似ています。ニ...

2015年9月のプログラミング言語ランキング: 新しいインデックスアルゴリズムにより急上昇が解消

9月に、TIOBE Indexは改良されたアルゴリズムを使用してプログラミング言語の人気度を計算しま...

お気に入りのランダムフォレストは? TensorFlow オープンソース決定森ライブラリ TF-DF

[[402276]]人工知能の発展の歴史の中で、さまざまなアルゴリズムが際限なく登場してきました。...