from scipy import stats # Create new datasets with different no. of samples original_df = x_train[['Credit_History_Age', 'Payment_Behaviour']].reset_index(drop=True) new_df = x_train[['Credit_History_Age', 'Payment_Behaviour']].reset_index(drop=True) new_df1 = new_df.sample(n = 1000).reset_index(drop=True) new_df2 = new_df.sample(n = 5000).reset_index(drop=True) new_df3 = new_df.sample(n = len(x_train)).reset_index(drop=True) # Prepare drifted data for numeric feature def drift_numeric_col(df, numeric_col, drift_range): df[numeric_col] = df[numeric_col] + np.random.uniform(0, drift_range, size=(df.shape[0], )) drift_numeric_col(new_df1, 'Credit_History_Age', 2) drift_numeric_col(new_df2, 'Credit_History_Age', 2) drift_numeric_col(new_df3, 'Credit_History_Age', 2) # K-S Test def ks_test(original_df, new_df, numeric_col): test = stats.ks_2samp(original_df[numeric_col], new_df[numeric_col]) print("Column : %s , p-value : %1.3f" % (numeric_col, test[1])) # Conduct K-S Test for numeric feature ks_test(original_df, new_df1, 'Credit_History_Age') ks_test(original_df, new_df2, 'Credit_History_Age') ks_test(original_df, new_df3, 'Credit_History_Age')