[关闭]
@rianusr 2019-08-13T02:07:11.000000Z 字数 1161 阅读 3221

第六章:机器学习01:特征工程--04特征选择

06-机器学习


1 特征选择

1.1 特征选择与降维的差异

1特征选择与特征降维的区别.png-134.1kB

1.2 为什么要进行特征选择

2为什么要进行特征选择.png-74kB

1.3 特征选择的方法

3特征选择的方法.png-228.7kB

2 特征选择之单特征重要性评估-- Filter(过滤)方法

2.1 具体示例:

05案例.png-71.5kB

2.1.1 评估变量重要性指标:信息值(IV)

06评估变量重要性指标:信息值(IV).png-285.7kB

2.1.2 变量重要性的可视化:趋势分析(Trend analysis)

7变量重要性的可视化.png-195.9kB

2.3 更多的评估指标

8更多的评估指标.png-138.7kB

3 代码演示:单特征重要性评估 -- 基于pandas

  1. import numpy as np
  2. import pandas as pd
  3. def information_value(target,feature):
  4. """
  5. 计算变量的信息值
  6. :param target:ndarray,真实值,1=正例,0=负例
  7. :param feature:ndarray,离散变量
  8. :return:
  9. """
  10. iv_table=pd.DataFrame({"feature":feature,"y":target})
  11. tot_good=np.sum(target)
  12. tot_bad=len(target)-tot_good
  13. iv_table=iv_table.groupby("feature").agg({
  14. "y":{
  15. "bad_count":lambda x:len(x)-np.sum(x),
  16. "good_count":np.sum,
  17. }
  18. })["y"]
  19. iv_table["bad_percent"]=iv_table["bad_count"]/tot_bad
  20. iv_table["good_percent"]=iv_table["good_count"]/tot_good
  21. iv_table["woe"]=np.log(iv_table["good_percent"]/iv_table["bad_percent"])
  22. iv_table["iv"]=(iv_table["good_percent"]-iv_table["bad_percent"])*iv_table["woe"]
  23. iv_value=np.sum(iv_table["iv"])
  24. return iv_value,iv_table[["bad_count","bad_percent","good_count","good_percent","woe","iv"]]
  25. titanic=pd.read_csv(path) #读取数据
  26. titanic.head()
  27. feature=titanic.Pclass
  28. target=titanic.Survived
  29. iv_value,iv_table=information_value(target,feature)
  30. print(iv_table)
  31. print("information_value:",iv_value)

4 特征工程课程总结:

9特征工程总结.png-120.8kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注