13

While I iterate within a for loop I continually receive the same warning, which I want to suppress. The warning reads:

C:\Users\Nick Alexander\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\preprocessing\data.py:193: UserWarning: Numerical issues were encountered when scaling the data and might not be solved. The standard deviation of the data is probably very close to 0. warnings.warn("Numerical issues were encountered "

The code that is producing the warning is as follows:

def monthly_standardize(cols, df_train, df_train_grouped, df_val, df_val_grouped, df_test, df_test_grouped):
    # Disable the SettingWithCopyWarning warning
    pd.options.mode.chained_assignment = None
    for c in cols:
        df_train[c] = df_train_grouped[c].transform(lambda x: scale(x.astype(float)))
        df_val[c] = df_val_grouped[c].transform(lambda x: scale(x.astype(float)))
        df_test[c] = df_test_grouped[c].transform(lambda x: scale(x.astype(float)))
    return df_train, df_val, df_test

I am already disabling one warning. I don't want to disable all warnings, I just want to disable this warning. I am using python 3.7 and sklearn version 0.0

njalex22
  • 297
  • 1
  • 2
  • 11
  • This might be helpful: https://stackoverflow.com/questions/9134795/how-to-get-rid-of-specific-warning-messages-in-python-while-keeping-all-other-wa – TYZ Feb 19 '19 at 14:30
  • 2
    Possible duplicate of [How to get rid of specific warning messages in python while keeping all other warnings as normal?](https://stackoverflow.com/questions/9134795/how-to-get-rid-of-specific-warning-messages-in-python-while-keeping-all-other-wa) – a_guest Feb 19 '19 at 14:31

3 Answers3

23

Try this at the beginning of the script to ignore specific warnings:

import warnings
warnings.filterwarnings("ignore", message="Numerical issues were encountered ")
DirtyBit
  • 16,151
  • 4
  • 28
  • 54
22
import warnings
with warnings.catch_warnings():
    warnings.simplefilter('ignore')
    # code that produces a warning

warnings.catch_warnings() means "whatever warnings. methods are run within this block, undo them when exiting the block".

pandichef
  • 586
  • 6
  • 9
-1

The python contextlib has a contextmamager for this: suppress

from contextlib import suppress

with suppress(UserWarning):
    for c in cols:
        df_train[c] = df_train_grouped[c].transform(lambda x: scale(x.astype(float)))
        df_val[c] = df_val_grouped[c].transform(lambda x: scale(x.astype(float)))
handras
  • 1,430
  • 12
  • 24