masalah memori LabelEncoder() scikit-learn

Saya memiliki train pandas df dengan 20 juta baris dan test pandas df dengan sekitar 10 juta baris.

Ada kolom di kedua df yang ingin saya terapkan LabelEncoder(), tetapi saya terus mendapatkan Memory Error di laptop saya dan bahkan pada instance AWS RAM 64 gig.

Apakah ada cara agar saya dapat menangani ini secara bertahap tanpa kehilangan pemetaannya?

Ini kode yang saya gunakan:

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()

for col in cols_to_encode:
    le.fit(list(train[col])+list(test[col]))
    train[col] = le.transform(train[col])
    test[col] = le.transform(test[col])

Saya mengambil sampel 500.000 baris dari masing-masing baris dan dapat menjalankan kode tanpa kesalahan, jadi saya tahu ini bukan kesalahan sintaksis atau semacamnya.

Bantuan apa pun akan sangat dihargai.


person Kevin Zakka    schedule 20.07.2016    source sumber


Jawaban (1)


Saya belum pernah menggunakan LabelEncoder sebelumnya, tetapi dari pekerjaan saya dengan Sklearn, saya tahu bahwa ada opsi yang dapat membantu memparalelkan. Sudahkah Anda mencoba memparalelkan tugas ini? Baik menggunakan parameter seperti n_jobs yang dimiliki banyak pengklasifikasi sklearn, atau bahkan pustaka multiprosesor python.

person danialcala    schedule 20.07.2016
comment
Hal pertama yang saya lakukan adalah memeriksa parameter n_jobs, tetapi sepertinya tidak ada untuk fungsi ini. Biasanya n_jobs ditujukan untuk pengklasifikasi, bukan fungsi pembantu. - person Kevin Zakka; 20.07.2016