Ben Benim sabit diskinde çok yer alırNeden skolearn RandomForest modeli, kaydettikten sonra çok fazla disk alanı alıyor?
with open('/tmp/rf.model', 'wb') as f:
cPickle.dump(RF_model, f)
altında koduyla sklearn kütüphanesinden RandomForestClassifier modelini kurtarıyorum. Modelde sadece 50 ağaç var, ancak disk üzerinde 50 MB'yi aştı (analiz edilen veri kümesi 21 özellik ile ~ 20MB). Neden olduğu hakkında fikri olan var mı? ExtraTreesClassifier için benzer davranış gözlemlerim.
Düzenleme: RF parametreleri:
"n_estimators": 50,
"max_features": 0.2,
"min_samples_split": 20,
"criterion": "gini",
"min_samples_leaf": 11
@dooms önerdiği gibi ben sys.getsizeof kontrol ve 64 döndürür - Bu sadece işaretçi boyutu olduğunu varsayalım. Ben önceki 53 MB'den böylece daha küçük 1 * .pkl dosyası ve toplam boyutu 14.9 MB 201 * .npy dosyaları almak bu şekilde kullanarak
from sklearn.externals import joblib
joblib.dump(RF_model, 'filename.pkl')
:
Ben bir model kurtarmak için başka bir yol denedi.
ilk dosya (231 KB) içerik:
array([(1, 1062, 20, 0.2557438611984253, 0.4997574055554296, 29168, 46216.0),
(2, 581, 12, 0.5557271242141724, 0.49938159451291675, 7506, 11971.0),
(3, 6, 14, 0.006186043843626976, 0.4953095968671224, 4060, 6422.0),
...,
(4123, 4124, 15, 0.6142271757125854, 0.4152249134948097, 31, 51.0),
(-1, -1, -2, -2.0, 0.495, 11, 20.0),
(-1, -1, -2, -2.0, 0.3121748178980229, 20, 31.0)],
dtype=[('left_child', '<i8'), ('right_child', '<i8'), ('feature', '<i8'), ('threshold', '<f8'), ('impurity', '<f8'), ('n_node_samples', '<i8'), ('weighted_n_node_samples', '<f8')])
İkinci dosya (66 kB) içeriği:
orada Ormanı'nda ağaç başına 4 dosyaları - bu 201 NPY dosyalarda bir model vardırarray([[[ 2.25990000e+04, 2.36170000e+04]],
[[ 6.19600000e+03, 5.77500000e+03]],
[[ 3.52200000e+03, 2.90000000e+03]],
...,
[[ 3.60000000e+01, 1.50000000e+01]],
[[ 1.10000000e+01, 9.00000000e+00]],
[[ 2.50000000e+01, 6.00000000e+00]]])
üçüncü dosya (88B): grup (96B) arasından
array([2])
son dosya:
array([ 0., 1.])
Ne olduğu hakkında bir fikrin var mı? Sklearn'da Tree koduna bakmaya çalıştım ama zor. Sklearn ağacının daha az disk sakladığını nasıl edindiniz? (sadece xgboost'un benzer boyuttaki topluluğunun toplam boyutu ~ 200 KB aldığını belirtmek için)
Sınıflandırıcı için parametreler nelerdir? ağaç sayısı ve maksimum derinlik/min_samples_ {split, yaprak} ile ilgilidir. –