在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
起作用吗?
答案 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])