Почему sklearn Random Forest требует одно и то же время для прогнозирования одной выборки, чем n выборок - PullRequest
0 голосов
/ 04 июня 2018

Я использую sklearn в Python 3.6, и я заметил, что для прогнозирования одной отдельной выборки в качестве 1-мерного массива требуется одно и то же время, чем n выборок в качестве 2-мерного массива с произвольным лесом (~ 0,1 с оба).Похоже, что sklearn требуется определенное время, чтобы сначала настроить деревья на каждом шаге прогнозирования, а прогноз - сразу после этого.Это может объяснить, почему время выполнения для прогнозирования большого двумерного массива такое же, как у одномерного массива?

Вот мой код для обучения модели:

clf = RandomForestClassifier(n_estimators=1, #or > 1 
        n_jobs=-1,
        random_state=2,
        max_depth=15,
        min_samples_leaf=1,
        verbose=0,
        max_features='auto'
        )

clf.fit(X_train, y_train)

with open('classifier.pkl', 'wb') as fid:
   cPickle.dump(clf, fid)  

В моем случае янужно в режиме реального времени прогнозировать один за другим в цикле, как это:

with open('classifier.pkl', 'rb') as fid:
   clf = cPickle.load(fid)

for s in samples:
   #my feature extraction method
   pred = clf.predict(feature) #feature is a 1D np array containing features 
                               #computed for the sample s

Это потому, что я использую это неправильно?Или sklearn просто не оптимизирован для одного на один прогноз?

1 Ответ

0 голосов
/ 04 июня 2018

Вы правы, sklearn сильно оптимизирован для векторных операций.Вы используете это правильно.Вы должны увидеть значительное ускорение, если вы сделаете что-то вроде этого:

features = np.zeros((len(samples), n_features))
for i, s in enumerate(samples):
   features[i] = feature_extraction(s)
preds = clf.predict(features)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...