私はこの分類/回帰タスクを持っていますが、最も興味深いのは、各レコードの機能の数が異なるということです。フィーチャはすでに抽出されており、すでに準備されているため、データのコンテキストは不明で、フィーチャの値は-10から10まで変動します。200以上のフィーチャを持つレコードがあります。同様に、フィーチャの数が20未満のレコードがあります。異なる数の機能を持つデータを処理する
データフレームdf
は、2つの列があります:ID
とATTRIBUTES
を、出力は次のようになります。
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, rec4
はNaN
が移入された分割操作を記録した後135 - 49、rec3- 12、rec4-73、REC5をデータフレームを満たす値。
私は、次のアイデアを思い付いてきたいくつかのグーグルで後:
- まず考えたのは Imputerを使用して意味のある機能を
NaN
値を変更することでした。 - 20(40,60など)未満の機能を持つレコードを破棄します。
私はRandomForestを選択しました。
ベースラインのパフォーマンスは約0.4117であり、トレーニングセットの10%(train_test_splitを使用)を検証しています。ベースライン性能はありませんでしたExtraTreesClassifier
を使用して主成分分析を経由して
- Feature scaling - standardisation
- 次元削減(PCA)
- ツリーベース特徴選択:
私が試したすべてのものにもかかわらず、 0.4よりも高くなった... 私の質問は - どのようにして、特定の記録を調べる?
1.レコード間に欠けている機能(場合によっては200以上の機能)があるため、追加の機能集約が役立つかどうかはわかりません。 2.同様のことをしました。追加のフィーチャ列を「カットオフ」することでフィーチャの量を減らしました。そのため、いくつかの重要な機能が削除されたにもかかわらず、すべてのレコードが同じ量のフィーチャを持つ可能性があります。 3.そのようなパターンがあるとしましょう。そのような情報をどのように進めるべきですか? –
このようなパターンが検出された場合、この情報をカプセル化した新しいフィーチャをすべてのデータポイントに追加すると、スケールを使用して「余分な」フィーチャをカットして、すべてのデータポイントに存在する機能には、新しい機能が追加されています。この機能は、あなたが特徴量とクラスラベルの間に見つけた相関関係の「指標」として機能します。 – Thanos