Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PySpark:Logistic回归弹性网正则化_Python_Apache Spark_Scikit Learn_Pyspark - Fatal编程技术网

Python PySpark:Logistic回归弹性网正则化

Python PySpark:Logistic回归弹性网正则化,python,apache-spark,scikit-learn,pyspark,Python,Apache Spark,Scikit Learn,Pyspark,PySpark的逻辑回归接受elasticNetParam参数。如果我将这个参数设置为0.2,它意味着什么?它是指l1的0.2和l2的0.8,还是相反 此外,我一直在尝试使用sklearn重现PySpark的结果。为此,我使用sklearn的sgdclassizer 这是我正在初始化PySpark逻辑回归模型的参数字典 {'elasticNetParam': 0.41880231596887807, 'regParam': 0.05816730909769129, 'threshold':

PySpark的逻辑回归接受
elasticNetParam
参数。如果我将这个参数设置为
0.2
,它意味着什么?它是指
l1的
0.2
l2的
0.8
,还是相反

此外,我一直在尝试使用sklearn重现PySpark的结果。为此,我使用sklearn的
sgdclassizer

这是我正在初始化PySpark逻辑回归模型的参数字典

{'elasticNetParam': 0.41880231596887807, 
'regParam': 0.05816730909769129, 
'threshold': 0.4011073540317653,
'maxIter': 21.0}
这就是我用在sklearn的SGDClassizer上的

{'loss':'log',
'penalty':'elasticnet', 
'l1_ratio':0.41880231596887807, 
'alpha':0.05816730909769129, 
'fit_intercept':True, 
'max_iter':21*train_pandas.shape[0]}
这两个参数是等价的吗?或者我应该将
l1_比率
更改为
(1-0.41880231596887807)


关于
max\u iter
,由于训练方法的不同,我考虑将它乘以行数。我知道我不会得到确切的结果,我正在寻找类似的结果。差值+/-0.01是可以接受的。但目前,差异约为-0.05,我希望能够弥补这一点。

来自pyspark ml v2.1.0文档:

elasticNetParam=Param(parent='undefined',name='elasticNetParam',doc='ElasticNet混合参数,范围为[0,1]。对于alpha=0,惩罚为L2惩罚。对于alpha=1,惩罚为L1惩罚。

因此,您应该将
l1_比率
更改为
(1-0.41880231596887807)


但即使如此,我认为pyspark和scikit learn之间可能会得到不同的结果,因为其
随机状态
解算器
参数。

来自pyspark ml v2.1.0文档:

elasticNetParam=Param(parent='undefined',name='elasticNetParam',doc='ElasticNet混合参数,范围为[0,1]。对于alpha=0,惩罚为L2惩罚。对于alpha=1,惩罚为L1惩罚。

因此,您应该将
l1_比率
更改为
(1-0.41880231596887807)


但即使如此,我认为pyspark和scikit learn可能会得到不同的结果,因为它的
随机状态
解算器
参数。

您能进一步澄清吗?我想知道elasticNetParam是否必须为0或1,或者它可以取介于两者之间的值?它可以取介于两者之间的值。如果alpha=0,则为L2惩罚(岭回归)。如果alpha=1,则为L1惩罚(套索回归)。如果0