2016-09-22 8 views
0

私はこの分類/回帰タスクを持っていますが、最も興味深いのは、各レコードの機能の数が異なるということです。フィーチャはすでに抽出されており、すでに準備されているため、データのコンテキストは不明で、フィーチャの値は-10から10まで変動します。200以上のフィーチャを持つレコードがあります。同様に、フィーチャの数が20未満のレコードがあります。異なる数の機能を持つデータを処理する

データフレームdfは、2つの列があります:IDATTRIBUTESを、出力は次のようになります。

df['ATTRIBUTES'].str.split(' ', expand=True).astype(float):私は別の列に列ATTRIBUTESを分割している

 ID           ATTRIBUTES     
    0 1 1.1 2.1 3.3 4.4 5.5 6.6 ... 99.9 100.0 101.1 102.2 
    1 2 1.1 2.1 3.3 4.4 5.5 6.6 ... 45.0 46.0 47.0 49.0 
    2 3 1.1 2.1 3.3 4.4 5.5 6.6 ... 9.0 10.0 11.0 12.0 
    3 4 1.1 2.1 3.3 4.4 5.5 6.6 ... 70.0 71.0 72.0 73.0 
    4 5 1.1 2.1 3.3 4.4 5.5 6.6 ... 131.0 132.0 134.0 135.0 

dfは次のようになります。

 0 1 2 3 4 5 6 7 8 9 ... 131 132 133 134 135 
     0 1.1 2.1 3.3 4.4. 5.5. 6.6. 7.7 8.8 9.9 ... NaN NaN NaN NaN NaN 
     1 1.1 2.1 3.3 4.4. 5.5. 6.6. 7.7 8.8 9.9 ... NaN NaN NaN NaN NaN 
     2 1.1 2.1 3.3 4.4. 5.5. 6.6. 7.7 8.8 9.9 ... NaN NaN NaN NaN NaN 
     3 1.1 2.1 3.3 4.4. 5.5. 6.6. 7.7 8.8 9.9 ... NaN NaN NaN NaN NaN 
     4 1.1 2.1 3.3 4.4. 5.5. 6.6. 7.7 8.8 9.9 ... 131.0 132.0 133.0 134.0 135.0 

はのは、RECORD1は102組の特徴、REC2ているとしましょう - rec1, rec2, rec3, rec4NaNが移入された分割操作を記録した後135 - 49、rec3- 12、rec4-73、REC5をデータフレームを満たす値。

私は、次のアイデアを思い付いてきたいくつかのグーグルで後:

  1. まず考えたのは Imputerを使用して意味のある機能をNaN値を変更することでした。
  2. 20(40,60など)未満の機能を持つレコードを破棄します。

私はRandomForestを選択しました。

ベースラインのパフォーマンスは約0.4117であり、トレーニングセットの10%(train_test_splitを使用)を検証しています。ベースライン性能はありませんでしたExtraTreesClassifier

を使用して主成分分析を経由して

  1. Feature scaling - standardisation
  2. 次元削減(PCA)
  3. ツリーベース特徴選択:

    私が試したすべてのものにもかかわらず、 0.4よりも高くなった... 私の質問は - どのようにして、特定の記録を調べる?

答えて

0

データ代入かもしれない仕事不足している属性を持つ

  • データポイントは、あなたのデータポイント
  • の小さな割合を表す場合、データポイントあたりの行方不明の属性の量は大きくはありません。

あなたが悪い結果になっている理由 - 少なくとも限りのデータ完全性を懸念している - あなたが本当に転嫁でデータ内のデータの分散を歪曲しているし、実際にあなたが任意の根本的な問題に固有の偽装されていることです元のデータに隠されたメタ情報分類問題での作業の結果は、データの品質とモデルの「正確さ」に非常に依存しています。

私は、この種のデータ問題に対処するためにいくつかの異なる方法を試してみるでしょう。いずれにせよ、これらは唯一の先進的な方法ではなく、どちらがあなたのために最善のものであるかは、あなたの問題とあなたのデータの特質によって決まります。

  1. 'missing'属性または 'extra'属性の一部が集約可能かどうかを確認してください。 1つのデータポイントにつき一定量のフィーチャがあり、それから何らかの方法で集計できる「オプション」フィーチャがある場合はありますか?

  2. 各セグメント内で、同じ量の機能を保持するデータポイントを持つ方法でデータをセグメント化できるかどうかを確認してください。次に、これらのセグメントに分類器を適合させてください。

  3. 特徴量とデータポイントクラスの間にパターンがあるかどうかを確認してください。

  4. データセットのNaN値を持つすべての機能を削除します。

私はこれが少し助けてくれることを願っています!

+0

1.レコード間に欠けている機能(場合によっては200以上の機能)があるため、追加の機能集約が役立つかどうかはわかりません。 2.同様のことをしました。追加のフィーチャ列を「カットオフ」することでフィーチャの量を減らしました。そのため、いくつかの重要な機能が削除されたにもかかわらず、すべてのレコードが同じ量のフィーチャを持つ可能性があります。 3.そのようなパターンがあるとしましょう。そのような情報をどのように進めるべきですか? –

+0

このようなパターンが検出された場合、この情報をカプセル化した新しいフィーチャをすべてのデータポイントに追加すると、スケールを使用して「余分な」フィーチャをカットして、すべてのデータポイントに存在する機能には、新しい機能が追加されています。この機能は、あなたが特徴量とクラスラベルの間に見つけた相関関係の「指標」として機能します。 – Thanos

関連する問題