text_plain_output_2.png text_plain_output_1.png
import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

import seaborn as sns

df = pd.read_csv('../input/ml-olympiad-tensorflow-malaysia-user-group/train.csv')
test_df = pd.read_csv('../input/ml-olympiad-tensorflow-malaysia-user-group/test.csv')
df.dtypes

pltdf = df.copy()

def detect_NaNs(df_temp):
    return df.isnull().values.sum()
detect_NaNs(df)

df.iloc[:, :-1].columns

def replace_Nans(df_temp, columns, replacement):
    for col in columns:
        df[col] = df[col].fillna(replacement)
    return df_temp
df = replace_Nans(df, df.iloc[:, :-1].columns, -5)
test_df = replace_Nans(test_df, df.iloc[:, :-1].columns, -5)

def reduce_mem_usage(df, verbose=True):
    numerics = ['int8','int16', 'int32', 'int64', 'float16', 'float32', 'float64']
    start_mem = df.memory_usage().sum() / 1024**2

    for col in df.columns:
        col_type = df[col].dtypes

        if col_type in numerics:
            c_min = df[col].min()
            c_max = df[col].max()

            if str(col_type)[:3] == 'int':
                if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:
                    df[col] = df[col].astype(np.int8)
                elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:
                    df[col] = df[col].astype(np.int16)
                elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:
                    df[col] = df[col].astype(np.int32)
                elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:
                    df[col] = df[col].astype(np.int64)  
            else:
                if c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:
                    df[col] = df[col].astype(np.float32)
                else:
                    df[col] = df[col].astype(np.float64)

    end_mem = df.memory_usage().sum() / 1024**2

    if verbose:
        print('Mem. usage decreased to {:5.2f} Mb ({:.1f}% reduction)'.format(end_mem, 100 * (start_mem - end_mem) / start_mem))
    return df

test_df = reduce_mem_usage(test_df)
df = reduce_mem_usage(df)
df.dtypes

from pycaret.classification import *
setup(data=df.copy(), target='Class', silent=True, normalize=True, session_id=42, create_clusters=False, remove_perfect_collinearity=False, polynomial_features=False, fix_imbalance=False, fold=10)
display()