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

时间:2015-07-06 18:11:54

标签: python scikit-learn

我用Scikit学习建立了Predictive模型。我已经使用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

3 个答案:

答案 0 :(得分:3)

使用sklearn.linear_model.LinearRegression时我有类似的抱怨。在这个方法中,我可以在.fit()方法或构造函数中找到 no 详细参数。所以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)

我得到令人讨厌的输出:

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)

因为fit()方法返回指向自身的指针,并且此文本表示该对象。抑制此问题的一种简单方法是修改上述代码:

a = lr.fit(x,y)

从而将指针指向某个变量而不是屏幕。

答案 1 :(得分:1)

Last login: Mon Jul 6 20:27:54 on ttys000 cd '/Users/abc/Desktop/' && '/usr/bin/pythonw' '/Users/abc/Desktop/autoTag.py' && echo Exit status: $? && exit 1 abc-MacBook-Pro:~ abc$ cd '/Users/abc/Desktop/' && '/usr/bin/pythonw' '/Users/abc/Desktop/autoTag.py' && echo Exit status: $? && exit 1 Traceback (most recent call last): File "/Users/abc/Desktop/autoTag.py", line 6, in <module> response = urllib2.urlopen(request, json.dumps(input)) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen return _opener.open(url, data, timeout) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open response = meth(req, response) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response 'http', request, response, code, msg, hdrs) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error return self._call_chain(*args) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain result = func(*args) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 401: Unauthorized 参数更改为verbose

  

verbose:int,optional:详细级别:如果非零,则进度   邮件已打印。超过50,输出被发送到stdout。该   消息的频率随着详细程度而增加。如果它   超过10个,报告所有迭代。

例如使用SVM模型

False

答案 2 :(得分:1)

如果由于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