sklearn:关闭警告



当我使用 1 列 python pandas DataFrame(不是 Series 对象)拟合sklearnLogisticRegression时,我收到以下警告:

/Library/Python/2.7/site-packages/sklearn/preprocessing/label.py:125:         
DataConversionWarning: A column-vector y was passed when a 1d array was 
expected. Please change the shape of y to (n_samples, ), for example using 
ravel().
y = column_or_1d(y, warn=True)

我知道我可以轻松地在我的代码中宣传此警告,但是如何关闭这些警告?

你可以使用这个:

import warnings
from sklearn.exceptions import DataConversionWarning
warnings.filterwarnings(action='ignore', category=DataConversionWarning)

正如这里所发布的,

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    # Do stuff here

感谢上面的安德烈亚斯发布链接。

实际上,警告会告诉您问题所在:

你传递一个 2d 数组,它恰好是 (X, 1) 的形式,但该方法需要一个 1d 数组,并且必须采用 (X, ) 的形式。

此外,警告会告诉您如何转换为所需的形式:y.ravel() .因此,与其抑制警告,不如摆脱它。

注意:如果您想忽略或摆脱此类警告

import warnings 
warnings.filterwarnings("ignore")

否则,如果您正在调查问题的原因,这可能会有所帮助。

尝试拟合模型时,请确保X_testy_test与训练数据中使用的相似。 换句话说,X_trainX_test应该相同,具有相同的特征,并且对于X_testy_test

例如:np.array(X_test)X_test 不同,因为X_train只是一个 numpy 的DataFrame,并且X_test是从数据集中分离出来的:

# imports 
...
clf = RandomForestClassifier(n_estimators=100)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2)    
# the following produce warning since X_test's shape is different than X_train
y_predicts  = clf.predict(np.array(X_test))
# no warning (both are same) 
y_predicts  = clf.predict(X_test)

相关内容

  • 没有找到相关文章

最新更新