1

私は、5つの異なるジャンル(ロック、エレクトロ、ラップ、カントリー、ジャズ)から30秒のサンプルを分類するプロジェクトに取り組んでいます。私のデータセットは、各ジャンルごとに正確に120の600曲から構成されています。この機能は、1曲につき13 mfccの1Dアレイであり、ラベルはジャンルです。 本質的には、30秒のサンプルの各フレームに対して、13個のmfccの各セットの平均をとっています。これにより、各曲につき13 mfccsになります。次に、データセット全体を取得し、sklearnのスケーリング関数を使用します。sklearnによる音楽ジャンルの分類:異なるモデルを正確に評価する方法

私の目標は、sklearnツールセットを使用して、svm、knearest、およびnaiveベイ分類子を比較することです。私はすでにいくつかのテストを行ってきましたが、ランダムサンプリングを行うか層別サンプリングを行うかによって結果が異なることに気付きました。

I訓練および試験セットを得るためにsklearnに次の関数を実行します。

X_train、X_test、y_train、y_test = train_test_split(X、Y、test_size = 0.20、random_state = 0、階層化= Y)

"random state"と "stratify"というパラメータがあります。 「ランダムな状態」が指定されていない場合は、データセット全体からランダムにサンプリングされます。 0に設定すると、トレーニングセットとテストセットが毎回同じになることが保証されます。

私の質問は、さまざまな分類子を適切に比較する方法です。私は、各クラスファイヤーを訓練してテストする前に、この関数に同じ同じ呼び出しを行う必要があると仮定します。私の疑念は、私は各分類器に正確に同じ分割を渡す必要がありますので、それは無作為抽出と階層化であってはならないということです。

層別化する必要がありますか(およびランダムサンプリングする必要がありますか)。

答えて

0

分類子の精度を別の分類子と比較するには、学習とテストのためにデータセットからランダムにサンプリングする必要があります。テストデータセットを使用して各分類子を評価し、一度に精度を比較します。

データフレームに格納されたデータセットを訓練とテストに分割します(すべてのケースで分類子がどれほど優れているかを理解するにはランダムサンプリングが適しています。

特定のカテゴリで層別サンプリングを実行している場合(このカテゴリには非常に大量のデータがあると仮定し、分類子が1つのカテゴリをうまく予測していると仮定すると、階層化されたサンプリングがより効果的な場合はどこですか?実際のデータも歪曲することがわかっている場合、最も重要なカテゴリが予測される場合に満足できます(これは間違いなく、あなたのクラシファイアが情報量の少ないカテゴリで悪い動作をすることを意味するものではなく、うまく機能することがあります)。

同じトレーニングダすべての分類子とそれらを評価するために同じテストデータセットを訓練するために訓練を受けました。また、無作為標本採取はより良いでしょう。

関連する問題