feature_utils.py 994 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: yq
  4. @time: 2023/12/28
  5. @desc: 特征工具类
  6. """
  7. import pandas as pd
  8. from entitys import DataSplitEntity
  9. def f_get_bins(data: DataSplitEntity) -> pd.DataFrame:
  10. # 等频分箱
  11. if strategy == 'quantile':
  12. kbin_encoder = KBinsDiscretizer(n_bins=nbins, encode='ordinal', strategy='quantile')
  13. feature_binned = kbin_encoder.fit_transform(data[feat])
  14. return feature_binned.astype(int).astype(str)
  15. # 等宽分箱
  16. if strategy == 'width':
  17. bin_width = (data[feat].max() - data[feat].min()) / nbins
  18. return pd.cut(data[feat], bins=nbins, labels=[f'Bin_{i}' for i in range(1, nbins + 1)])
  19. def f_get_woe(data: DataSplitEntity) -> pd.DataFrame:
  20. pass
  21. def f_get_iv(data: DataSplitEntity) -> pd.DataFrame:
  22. pass
  23. def f_get_psi(data: DataSplitEntity) -> pd.DataFrame:
  24. pass
  25. def f_get_corr(data: DataSplitEntity) -> pd.DataFrame:
  26. pass
  27. def f_get_ivf(data: DataSplitEntity) -> pd.DataFrame:
  28. pass