小编Van*_*era的帖子

在PySpark多项Logistic回归中设置阈值

我想执行多项逻辑回归,但我无法正确设置threshold和thresholds参数.考虑以下DF:

from pyspark.ml.linalg import DenseVector

test_train_df = (
sqlc
.createDataFrame([(0, DenseVector([-1.0, 1.2, 0.7])),
                  (0, DenseVector([3.1, -2.0, -2.9])),
                  (1, DenseVector([1.0, 0.8, 0.3])),
                  (1, DenseVector([4.2, 1.4, -1.7])),
                  (0, DenseVector([-1.9, 2.5, -2.3])),
                  (2, DenseVector([2.6, -0.2, 0.2])),
                  (1, DenseVector([0.3, -3.4, 1.8])),
                  (2, DenseVector([-1.0, -3.5, 4.7]))],
                 ['label', 'features'])
)
Run Code Online (Sandbox Code Playgroud)

我的标签有3个类,所以我必须设置thresholds(复数,默认为None)而不是threshold(单数,默认为0.5).然后我写道:

from pyspark.ml import classification as cl

test_logit_abst = (
    cl.LogisticRegression()
    .setFamily('multinomial')
    .setThresholds([.5, .5, .5])
)
Run Code Online (Sandbox Code Playgroud)

然后我想在我的DF上安装模型:

test_logit = test_logit_abst.fit(test_train_df)
Run Code Online (Sandbox Code Playgroud)

但是当执行最后一个命令时,我收到一个错误:

---------------------------------------------------------------------------
Py4JJavaError                             Traceback …
Run Code Online (Sandbox Code Playgroud)

machine-learning logistic-regression apache-spark pyspark apache-spark-ml

5
推荐指数
1
解决办法
1812
查看次数

Spark:将 DataFrame 列转换为向量

我有一个df带有一列的 DataFrame ,column我想转换column成一个向量(例如 a DenseVector),以便我可以在向量和矩阵产品中使用它。

当心:我不需要一列向量;我需要一个矢量对象。

这该怎么做?

我找到了vectorAssembler函数(链接),但这对我没有帮助,因为它将一些 DataFrame 列转换为向量列,这仍然是一个 DataFrame 列;我想要的输出应该是一个向量。


关于这个问题的目标:为什么我要尝试将 DF 列转换为向量?假设我有一个带有数字列的 DF,我需要计算矩阵和该列之间的乘积。我怎样才能做到这一点?(同样适用于 DF 数字行。)欢迎使用任何替代方法。

vector apache-spark apache-spark-sql pyspark

-1
推荐指数
1
解决办法
3472
查看次数