Использование памяти в Scikit Learn Solvers равно нулю с памятью-профилировщиком - PullRequest
0 голосов
/ 23 апреля 2020

Я использую в scikit изучение различных решателей и хочу посмотреть, сколько памяти требуется каждому решателю. Таким образом, чтобы отслеживать, какой алгоритм хорошо подходит для систем с низким объемом памяти, таких как встроенные системы. Я попытался с помощью memory-profiler найти в строках, сколько памяти требуется для расчета решателей:

from memory_profiler import profile

@profile
def z():

    from sklearn import svm

    clf = svm.SVR(C=1, cache_size=200, coef0=0.0, degree=1, epsilon=0.01, gamma=0.01,
    kernel='poly', max_iter=-1, shrinking=True, tol=0.001, verbose=False).fit(X_train, y_train)

    from sklearn.linear_model import LinearRegression

    clf = LinearRegression(copy_X=True, fit_intercept=True, n_jobs=0.0001, normalize=True).fit(X_train, y_train)

    from sklearn.tree import DecisionTreeRegressor

    clf = DecisionTreeRegressor().fit(X_train, y_train)

    from sklearn.ensemble import RandomForestRegressor 

    clf = RandomForestRegressor().fit(X_train, y_train)

    from sklearn.neural_network import MLPRegressor 

    clf = MLPRegressor(activation='tanh', alpha=0.001, batch_size='auto', beta_1=0.9,
             beta_2=0.999, early_stopping=False, epsilon=1e-08,
             hidden_layer_sizes=200, learning_rate='invscaling',
             learning_rate_init=0.001, max_iter=200, momentum=0.9,
             n_iter_no_change=10, nesterovs_momentum=True, power_t=0.5,
             random_state=None, shuffle=True, solver='lbfgs', tol=0.0001,
             validation_fraction=0.1, verbose=False, warm_start=False).fit(X_train, y_train)

    from sklearn.ensemble import GradientBoostingRegressor

    clf = GradientBoostingRegressor().fit(X_train, y_train)

    from sklearn.svm import LinearSVR

    clf = LinearSVR().fit(X_train, y_train)

z()

С результатом:

Line # Mem usage    Increment   Line Contents
================================================
553    337.9 MiB    337.9 MiB   @profile
554                             def z():
557    336.3 MiB      0.0 MiB           from sklearn import svm
558                                     
559    336.3 MiB      0.0 MiB           clf = svm.SVR(C=1, cache_size=200, coef0=0.0, degree=1, epsilon=0.01, gamma=0.01,
560    338.8 MiB      2.4 MiB           kernel='poly', max_iter=-1, shrinking=True, tol=0.001, verbose=False).fit(X_train, y_train)
561                                     
562    338.8 MiB      0.0 MiB           from sklearn.linear_model import LinearRegression
563                                     
564    336.4 MiB      0.0 MiB           clf = LinearRegression(copy_X=True, fit_intercept=True, n_jobs=0.0001, normalize=True).fit(X_train, y_train)
565                                     
566    336.4 MiB      0.0 MiB           from sklearn.tree import DecisionTreeRegressor
567                                     
568    336.4 MiB      0.0 MiB           clf = DecisionTreeRegressor().fit(X_train, y_train)
569                                     
570    336.4 MiB      0.0 MiB           from sklearn.ensemble import RandomForestRegressor 
571                                     
572    336.4 MiB      0.0 MiB           clf = RandomForestRegressor().fit(X_train, y_train)
573                                     
574    336.4 MiB      0.0 MiB           from sklearn.neural_network import MLPRegressor 
575                                     
576    336.4 MiB      0.0 MiB           clf = MLPRegressor(activation='tanh', alpha=0.001, batch_size='auto', beta_1=0.9,
577    336.4 MiB      0.0 MiB                    beta_2=0.999, early_stopping=False, epsilon=1e-08,
578    336.4 MiB      0.0 MiB                    hidden_layer_sizes=200, learning_rate='invscaling',
579    336.4 MiB      0.0 MiB                    learning_rate_init=0.001, max_iter=200, momentum=0.9,
580    336.4 MiB      0.0 MiB                    n_iter_no_change=10, nesterovs_momentum=True, power_t=0.5,
581    336.4 MiB      0.0 MiB                    random_state=None, shuffle=True, solver='lbfgs', tol=0.0001,
582    339.8 MiB      3.5 MiB                    validation_fraction=0.1, verbose=False, warm_start=False).fit(X_train, y_train)
583                                     
584                                     
585    339.8 MiB      0.0 MiB           from sklearn.ensemble import GradientBoostingRegressor
586                                     
587    336.8 MiB      0.0 MiB           clf = GradientBoostingRegressor().fit(X_train, y_train)
588                                     
589                                     
590    336.8 MiB      0.0 MiB           from sklearn.svm import LinearSVR
591                                     
592    336.8 MiB      0.0 MiB           clf = LinearSVR().fit(X_train, y_train)

Почему некоторые методы / решатели не использовать какую-либо память? Может быть, есть лучший способ отследить использование памяти различными решателями scikit learn?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...