JavaScript 開発者として、機械学習に飛び込むのは、思っているほど難しいことではありません。 Node.js パッケージを使用してすべてを処理することは技術的には可能ですが、Python ML エコシステムは無視するにはあまりにも豊富で確立されています。さらに、Python は非常に使いやすいです。したがって、バックエンドでの重労働には Python を使用するのが合理的です。モデルの準備ができたら、それをフロントエンドに適した形式にエクスポートし、クライアントにロードして予測を実行できます。
この投稿では、Twitter のフォロワー数に基づいてアーティストの人気を予測するモデルを構築します。
最初のステップは、データセットを入手することです。このプロジェクトでは、次のような Artists.csv ファイルを使用します:
twitter_followers,popularity,handle 111024636,94,justinbieber 107920365,91,rihanna 106599902,89,katyperry 95307659,97,taylorswift13 66325495,87,selenagomez 66325135,71,selenagomez 60943147,83,jtimberlake 54815915,82,britneyspears 53569307,85,shakira
ご覧のとおり、ここには 2 つの重要な値があります:twitter_followers と Popularity。これにより、シーケンス モデルが適切に設定されます。x は twitter_followers、y は人気になります。
シーケンス モデルは、モデルを構築するための最も簡単なオプションの 1 つです。最終的には特定の使用例によって選択が決まりますが、私はシンプルにして、今のところこのアプローチに固執しています。
モデルを構築するときは、取り組む必要のある基本的なタスクがいくつかあります:
次のコードはこれらのタスクの概要を示していますが、完全な図ではありません。完全なコードは Github で確認できます。
def get_model(x, y): x_normalized = layers.Normalization( axis=None, ) x_normalized.adapt(np.array(x)) model = tensorflow.keras.Sequential([x_normalized, layers.Dense(units=1)]) model.compile( optimizer=tensorflow.keras.optimizers.Adam(learning_rate=0.1), loss="mean_squared_error", ) model.fit( x, y, epochs=2, verbose=0, validation_split=0.2, ) return model def main: train_features, test_features, train_labels, test_labels = split_data(dataset) model = get_model( train_features["twitter_followers"], train_labels, ) test_loss = model.evaluate( test_features["twitter_followers"], test_labels, verbose=2 ) model.export("./saved_model")
ご覧のとおり、Python コードは非常に単純です。データの分割、モデルの取得、評価、そして最終的な保存を処理する main 関数があります。
簡単に言うと、これらはモデルを作成するための重要な手順です。しかし、現実的に考えてみましょう。実際に機能するモデルを構築することは、芸術であると同時に科学でもあります。ここでの私の目標は、Python を使い始めるのがいかに簡単かを示すことです。ただし、良好なパフォーマンスを発揮するモデルを作成するには、堅牢なデータセットの用意、データのクリーニングと正規化、適切なモデルと設定の選択、トレーニングするためのコンピューティング能力の確保など、多くのことが必要になります。これらすべてのタスクには、多大な時間と労力の投資が必要です!
モデルをトレーニングして保存したので、次はそれをフロントエンドに取り込みます。このステップでは、モデルを Web に適した形式で読み込みます。これにより、ブラウザーで直接予測を実行できるようになります。 TensorFlow.js を使用している場合でも、別のライブラリを使用している場合でも、機械学習を Web アプリに統合すると、可能性の世界が広がります。その方法を詳しく見ていきましょう!
TensorFlow は、保存されたモデルを JSON およびバイナリに変換するのに役立つ tensorflowjs_converter という npm パッケージを提供します。
tensorflowjs_converter --input_format=tf_saved_model model/saved_model out/public
ls -la out/public group1-shard1of1.bin model.json
このセットアップにより、Web アプリケーションに必要なファイルに簡単にアクセスできるようになります。
完全なコードは Github で確認できます。
const model = await tensorflow.loadGraphModel("model.json"); const getPopularity = (followers) => { const followers = 1_000; const normalized = followers; const x = tensorflow.tensor(normalized).reshape([-1, 1]); const result = model.predict(x); const values = result.arraySync(); const y = values[0][0].toFixed(2) * 100; const popularity = y; return popularity; };
前述の通り、このモデルはTwitterのフォロワー数をもとに「人気度を予測する」ことを目的としています。これは単純な例のように思えるかもしれませんが、バックエンドでモデルを生成し、それをフロントエンドで使用する方法を効果的に示しています。
get Popularity が入力をどのように処理するかを少し見てみましょう。しかし、重要な行は、model.predict(x) です。これは、モデルを使用して、入力 x に基づいて値 (y) を予測します。
デモ ページにアクセスして、いくつかの Twitter ハンドルを試してください。モデルがフォロワー数に基づいて人気をどのように予測するかを確認するのは楽しい方法です。
TensorFlow は、バックエンドとフロントエンドの両方の開発のためのツールを提供する素晴らしいライブラリです。 JavaScript 開発者は誰でも、Python または同様の言語を使用してモデルを作成し、そのモデルをフロントエンドに簡単にインポートして予測を実行できます。
機械学習は多くの知識を必要とする広大な分野ですが、TensorFlow のようなツールは、ソフトウェア開発者と機械学習開発者の間のギャップを埋めるのに役立ちます。これにより、プロジェクトに ML を組み込みたいと考えている人にとって、その作業がはるかにスムーズになります!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3