import scorecardpy as sc
from sklearn.datasets import load_iris
import numpy as np
import pandas as pd
data=pd_iris.copy()
bins = sc.woebin(data, y=flag,count_distr_limit=0.05, bin_num_limit=5)
iv_data = pd.DataFrame()
for i in data.columns[:-1]:
iv_data = iv_data.append(bins[i])
#正则化解决bins小数点后面多位的问题,仅保留三位
iv_data["bin"]=iv_data["bin"].apply(lambda x: re.sub(r"(\d+\.\d+)", lambda m: "{:.3f}".format(float(m.group(0))), x))
sc.woebin_plot(iv_data)
"""
将bins存为数据框
使用正则化改变bins列的小数点解决
"""
使用前:
使用后: