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

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

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

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

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

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

中国科学院は「触覚」を備えたロボットを開発し、豚の肝臓に低侵襲手術を成功させた。

中国科学院が1月17日に発表したところによると、このほど中国科学院深圳先進技術研究所医療工学研究所低...

アヴネットの鍾喬海氏:人工知能はモノのインターネットの実装を加速させる

【51CTO.comオリジナル記事】 今日では、AI や IoT テクノロジーに投資する企業がますま...

...

近年、軍事用人工知能スタートアップが人気を集めている理由

ロシアとウクライナの紛争が始まって2週間、データ分析会社パランティアのCEO、アレクサンダー・カープ...

Python アルゴリズムの時間計算量

アルゴリズムを実装する場合、アルゴリズムの複雑さは通常、時間の複雑さと空間の複雑さという 2 つの側...

Windows 11 AI「パーソナルアシスタント」、Microsoft Windows Copilot が近日登場

6月26日のニュースによると、今年5月、マイクロソフトは毎年恒例のBuild開発者会議で、Windo...

マイクロソフト、クラウド移行のための企業向けビジネス管理ツールを提供するAIMプログラムを開始

Microsoft は最近、顧客がローカル ERP および CRM アプリケーションをクラウドに移行...

...

新しいソフトロボット:手足を再生し、自然にカモフラージュできるヒトデ

Science Fiction Network は 1 月 5 日に報じました (Liu Yazhu...

...

HDビデオは本物ではなく、数枚の写真でレンダリングされた3Dシーンでは本物かどうか判断が難しい。

今日の紹介を始める前に、次のシナリオを見てみましょう。 上記のアニメーションは、複数の写真からレンダ...

AIキーボード戦士が登場: DeepMindがエージェントのトレーニングを開始、コンピューターを人間のように「操作」

機械が人間のようにコンピューターを使用できる場合、機械は私たちが日常のタスクを完了するのを手助けする...

人工知能は人間の弱点を克服できる

人工知能の多くの利点はよく知られ、理解され、宣伝されていますが、その限界も明らかです。しかし、あまり...

自動運転システム向けBEV 3D検出改善戦略の総合分析

AV カメラは他のセンサーと比較して最も密度の高い情報を持っていることはよく知られており、自動運転車...

...