PySpark:Logistic回归Elastic Net正则化

2024-10-02 02:36:50 发布

您现在位置:Python中文网/ 问答频道 /正文

PySpark的Logistic回归接受一个elasticNetParam参数。如果我把这个参数设为0.2,它意味着什么?它是指l10.2和{}的{},还是相反?在

另外,我一直在尝试使用sklearn复制PySpark的结果。为此,我使用sklearn的SGDClassifier。在

这是我用来初始化PySpark Logistic回归模型的参数字典

{'elasticNetParam': 0.41880231596887807, 
'regParam': 0.05816730909769129, 
'threshold': 0.4011073540317653,
'maxIter': 21.0}

这是我用在sklearn的SGD分类器上的

^{pr2}$

这两个参数字典是等价的吗?还是应该将l1_ratio改为(1-0.41880231596887807)?在

关于max_iter,由于训练方法的不同,我考虑将其乘以行数。我知道我不会得到确切的结果,我正在寻找类似的结果。可以接受+/-0.01的差值。但目前,这一差距大约是-0.05,我正在努力弥补这一差距。在


Tags: 模型l1参数threshold字典分类器sklearnpyspark
1条回答
网友
1楼 · 发布于 2024-10-02 02:36:50

从pyspark ml v2.1.0文档中:

elasticNetParam = Param(parent='undefined', name='elasticNetParam', doc='the ElasticNet mixing parameter, in range [0, 1]. For alpha = 0, the penalty is an L2 penalty. For alpha = 1, it is an L1 penalty.')

因此,您应该将l1_ratio更改为(1-0.41880231596887807)。在

但即便如此,我认为你可能会在pyspark和scikitlearn之间得到不同的结果,因为它们的random_state和{}参数。在

相关问题 更多 >

    热门问题