1

pd.get_dummies 関数を使用して疎行列を作成しました。私が持っている行列は 7 億行 * 400 列ですが、他の人が解決している多くの問題に比べてそれほど大きくはないと思います。しかし、train、val、test セットへのスライスには永遠にかかることがあります。(ロジスティック回帰とランダムフォレストを使用して予測を行い、疎行列をサポートします。)sparseDataFrameを効率的にスライスする方法はありますか、または私が行っているプロセス全体について、とにかく改善する必要がありますか?

例を挙げると、

これは、カテゴリ変数をダミー変数に変換する前に私が持っている列のリストです:

[u'a.exch', u'a.is_mobile', u'a.os_family', u'a.os_major', u'a.ua_family', u'a.ua_major', u'a.creative_id', u'a.creative_format',u'a.banner_position', u'a.day_hour_etc', u'b.country', u'b.connspeed',u'b.home_bus']

これは、各列の一意の値の数です。

a.exch 14
a.is_mobile 2
a.os_family 21
a.os_major 35
a.ua_family 49
a.ua_major 56
a.creative_id 30
a.creative_format 3
a.banner_position 6
a.day_hour_etc 4
b.country 94
b.connspeed 9
b.home_bus 3

pd.get_dummies を使用した後、たとえば 300 以上の列があります。

a.exch_1, a.exch_2, ..., b.home_bus1, b.home_bus2

そうしないとメモリエラーが発生するため、 pd.get_dummies(input_df, sparse=True) を設定します。しかし、このまばらな表現では、すべてが本当に遅くなります。

更新: train、val、および test に分割するには、6:2:2 の 3 つの部分にランダムに分割します

4

1 に答える 1

1

7 億行のデータ セットを持つことは膨大です。そして、get dummes を使用すると、ほぼ 20 倍大きくなります。

使用するdf.column =pd.factorize(df.column)[0]

また

DictVectorizer

パフォーマンスについてはわかりませんが、get_dummies ほど悪くはありません。これは 380 以上の列を作成しないためです。サブセット化は、次の問題の始まりであり、トレーニングモデルはこの量のデータで永遠に実行されると思います.

于 2015-11-13T04:35:14.293 に答える