在Pyspark中的功能重要性

时间:2019-12-18 09:22:45

标签: pyspark logistic-regression feature-selection

LogisticRegressionModel中使用PySpark时,有什么方法可以获取功能重要性信息?

pipeline = Pipeline(stages = stages)
pipelineModel = pipeline.fit(some_df)
df = pipelineModel.transform(some_df)

train, test = df.randomSplit([0.80, 0.20], seed = some_seed)
LR = LogisticRegression(featuresCol = 'features', labelCol = 'label', maxIter=some_max_iter)
LR_model = LR.fit(train_data)

有什么方法可以对LR_model起作用吗?

1 个答案:

答案 0 :(得分:-1)

简而言之,只要您已标准化输入数据,就可以使用LR_model.coefficients获得功能重要性。

这是因为对于逻辑回归,拟合系数将告诉您在相同比例的数据上特征的重要性。

以下有关玩具数据的示例。有了这个玩具数据,

dvec1 = DenseVector([1.0, 3.0, 2.9])
dvec2 = DenseVector([7.0, 1.0, 8.9])
dvec3 = DenseVector([3.0, 9.0, 1.6])

df = spark.createDataFrame([{'features': dvec1, 'label': 0},
                            {'features': dvec2, 'label': 1},
                            {'features': dvec3, 'label': 1}])

通过此处的最小-最大缩放对数据进行标准化。

from pyspark.ml.feature import MinMaxScaler

scaler = MinMaxScaler(inputCol='features', outputCol='scaled_features')
scalerModel = scaler.fit(df)
scaled_df = scalerModel.transform(df)

最后,我们可以拟合逻辑回归模型并获取系数(即特征重要性)。

LR = LogisticRegression(featuresCol = 'scaled_features', labelCol = 'label')
LR_model = LR.fit(scaled_df)

LR_model.coefficients
# DenseVector([48.1199, 24.2459, -7.366])