問題タブ [train-test-split]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
688 参照

python - Python 3.6でtrain-test-split関数を2回使用するときに入力パラメータとして渡す必要があるもの

基本的に、データセットをトレーニング、テスト、および検証セットに分割したかったのです。したがって、train_test_split 関数を 2 回使用しました。約 1000 万行のデータセットがあります。

最初の分割では、トレーニングとテストのデータセットを 7000 万のトレーニングと 3000 万のテストに分割しました。検証セットを取得するには、検証セットを取得するために、分割されたテスト データまたはトレーニング データを train-test-split の入力パラメーターとして使用するかどうかについて少し混乱しています。アドバイスをください。ティア

0 投票する
1 に答える
258 参照

machine-learning - 機械学習アルゴリズムは、以前の実行からの学習をどのように保持しますか?

Hands on Machine Learning の本を読んでいて、著者はトレーニングとテストの分割中のランダム シードについて語っています。

著者は、Tran と Test の分割に次の関数を使用しています。

これは機能しますが、完全ではありません。プログラムを再度実行すると、別のテスト セットが生成されます。時間の経過とともに、ユーザー (または機械学習アルゴリズム) がデータセット全体を確認できるようになりますが、これは回避したいことです。

Sachin Rastogi: これがモデルのパフォーマンスに影響を与える理由と方法は? トレーニング セットは常に異なるため、モデルの精度は実行ごとに異なることを理解しています。私のモデルは、時間の経過とともにデータセット全体をどのように認識しますか?

著者もいくつかの解決策を提供していますが、

1 つの解決策は、最初の実行でテスト セットを保存し、その後の実行でロードすることです。別のオプションは、np.random.permutation() を呼び出す前に乱数ジェネレーターのシード (たとえば、np.random.seed(42)) を設定することです。これにより、常に同じシャッフルされたインデックスが生成されます。

ただし、更新されたデータセットを次に取得するときに、これらのソリューションはいずれも機能しなくなります。一般的な解決策は、各インスタンスの識別子を使用して、テスト セットに入れるかどうかを決定することです (インスタンスには一意で不変の識別子があると仮定します)。

Sachin Rastogi: 良いトレーニング/テスト部門になるでしょうか? いいえ、Train と Test には、Train セットからの偏りを避けるために、データセット全体の要素を含める必要があります。

著者は例を挙げて、

各インスタンスの識別子のハッシュを計算し、ハッシュが最大ハッシュ値の 20% 以下である場合、そのインスタンスをテスト セットに入れることができます。これにより、データセットを更新しても、複数回の実行でテスト セットの一貫性が維持されます。

新しいテスト セットには新しいインスタンスの 20% が含まれますが、以前にトレーニング セットに含まれていたインスタンスは含まれません。

Sachin Rastogi: この解決策を理解できません。助けていただけますか?