我想执行多项逻辑回归,但我无法正确设置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
我有一个df带有一列的 DataFrame ,column我想转换column成一个向量(例如 a DenseVector),以便我可以在向量和矩阵产品中使用它。
当心:我不需要一列向量;我需要一个矢量对象。
这该怎么做?
我找到了vectorAssembler函数(链接),但这对我没有帮助,因为它将一些 DataFrame 列转换为向量列,这仍然是一个 DataFrame 列;我想要的输出应该是一个向量。
关于这个问题的目标:为什么我要尝试将 DF 列转换为向量?假设我有一个带有数字列的 DF,我需要计算矩阵和该列之间的乘积。我怎样才能做到这一点?(同样适用于 DF 数字行。)欢迎使用任何替代方法。