从Scikit学习预测中抑制控制台消息

Vig*_*ati 5 python scikit-learn

我已经使用Scikit学习建立了预测模型。我已经用Flask,joblib部署了此模型。每当我预测加载的模型有新的传入请求时,它在控制台上的打印消息中都会显示有关内核的总时间。

现在,我要禁用此打印。当模型预测新的传入数据时,我如何抑制给定消息。

[Parallel(n_jobs=24)]: Done 117 out of 174 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 121 out of 179 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 122 out of 181 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 123 out of 183 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 125 out of 185 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 127 out of 188 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 128 out of 190 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 129 out of 192 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 132 out of 196 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 133 out of 198 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 135 out of 201 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 137 out of 204 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 138 out of 205 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 140 out of 208 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 143 out of 213 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 148 out of 220 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 149 out of 222 | elapsed:    0.0s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 153 out of 228 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 155 out of 231 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 159 out of 237 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 165 out of 246 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 168 out of 250 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 169 out of 252 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 171 out of 255 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 173 out of 258 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 177 out of 264 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 181 out of 270 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 183 out of 273 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 185 out of 276 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 187 out of 279 | elapsed:    0.1s remaining:    0.0s
[Parallel(n_jobs=24)]: Done 335 out of 500 | elapsed:    0.3s remaining:    0.1s
[Parallel(n_jobs=24)]: Done 500 out of 500 | elapsed:    0.3s finished
Run Code Online (Sandbox Code Playgroud)

Dr *_*oze 6

我在使用 sklearn.linear_model.LinearRegression 时也有类似的抱怨。在这种方法中,我能找到无论是在.fit()方法构造详细参数。所以python代码:

import numpy as np
from sklearn.linear_model import LinearRegression as LR

lr = LR()
y = np.random.rand(100) + 0.01 * np.arange(100)     # noisy line to fit    
x = np.arange(100)
x = np.reshape(y,[100,1])
lr.fit(x,y)
Run Code Online (Sandbox Code Playgroud)

我得到了烦人的输出:

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
Run Code Online (Sandbox Code Playgroud)

因为 fit() 方法返回一个指向自身的指针,而这个文本代表那个对象。抑制这种情况的一种简单方法是将上面的代码修改为:

a = lr.fit(x,y)
Run Code Online (Sandbox Code Playgroud)

从而将指针分配给某个变量而不是您的屏幕。

  • 我建议使用“_”,而不是使用“a”(或任何其他变量),因为[使用它来忽略函数的输出值](https://www.tutorialspoint. com/下划线-in-python)。因此,该行将显示为 `_ = lr.fit(x,y)` (2认同)

Nic*_*ens 5

verbose = True如果由于在模型的构造函数中而产生了不需要的输出,则可以稍后将其更改为成员变量:

from sklearn.some_category import SomeModel as M

m = M(verbose=True)
m.fit(x, y)  # has output
m.verbose = False
m.predict(x) # no output
Run Code Online (Sandbox Code Playgroud)


小智 2

verbose参数更改为False.

verbose:int,可选:详细级别:如果非零,则打印进度消息。超过 50 时,输出将发送到 stdout。消息的频率随着详细程度的增加而增加。如果超过 10,则报告所有迭代。

例如使用SVM模型

SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
  kernel='rbf', max_iter=-1, probability=False, random_state=None,
  shrinking=True, tol=0.001, verbose=False)
Run Code Online (Sandbox Code Playgroud)