卡方检验特征选择原理
计算特征变量与因变量的卡方独立性检验统计量,如果特征变量与因变量独立,说明其对预测因变量效果差。
根据p值从大到小(p值越大,越有可能不独立,)取设定的K个变量即可
在机器学习的决策树算法中,可以根据卡方独立性检验、基尼系数(CART)、信息增益(ID3)、信息增益率(C4.5)进行选择,一般来说,使用CART或C4.5较好
from pyspark.sql import SparkSession
from pyspark.ml.feature import ChiSqSelector
from pyspark.ml.linalg import Vectors
spark = SparkSession\
.builder\
.appName("ChiSqSelectorExample")\
.getOrCreate()
df = spark.createDataFrame([
(7, Vectors.dense([0.0, 0.0, 18.0, 1.0]), 1.0,),
(8, Vectors.dense([0.0, 1.0, 12.0, 0.0]), 0.0,),
(9, Vectors.dense([1.0, 0.0, 15.0, 0.1]), 0.0,)], ["id", "features", "clicked"])
# 假设我们使用2个变量预测是否点击
selector = ChiSqSelector(numTopFeatures=2, featuresCol="features",
outputCol="selectedFeatures", labelCol="clicked")
result = selector.fit(df).transform(df)
print("ChiSqSelector output with top %d features selected" % selector.getNumTopFeatures())
result.show()
# sklearn中实现
from sklearn.feature_selection import SelectKBest
selector=SelectKBest(score_func='chi2',k=2)
fit=selector.fit(X,y)
newX=fit.transform(X)# 选择变量后的数据
fit.scores_# p值
网友评论