Pyspark 轮函数未按预期工作
Posted
技术标签:
【中文标题】Pyspark 轮函数未按预期工作【英文标题】:Pyspark round function not working as expected 【发布时间】:2020-07-01 01:43:34 【问题描述】:我已经使用 MulticlassClassificationEvaluator 模块计算了朴素贝叶斯模型的准确度,我正在尝试将其四舍五入到小数点后 2 位。以下是相同的代码:
print("Naive Bayes accuracy is: " + str(round(rf_accuracy,2)))
但我面临以下问题:
TypeError Traceback(最近一次调用最后一次) 在 () ----> 1 print("朴素贝叶斯精度为:" + str(round(rf_accuracy,2)))
1 帧 /usr/local/lib/python3.6/dist-packages/pyspark/sql/column.py 在 _to_java_column(col) 54 "0 类型为 1。" 55 "对于列文字,使用'lit'、'array'、'struct'或'create_map'" ---> 56 "函数".format(col, type(col))) 57 返回 jcol 58
TypeError:参数无效,不是字符串或列:
我在 google 上搜索了很多,并浏览了 pyspark 函数和示例,但没有运气。不知道我错过了什么。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:如果 rfaccuracy 是你的数据框的列名,那么你必须这样做
import pyspark.sql.functions aa f
df.select(f.round('rfaccuracy')).show()
【讨论】:
它不是一个列,它是一个这样计算的变量: evaluator = MulticlassClassificationEvaluator(labelCol = "label", predictionCol = "prediction", metricName = "accuracy") rf_accuracy = evaluator.evaluate(predictions) *100 什么是类型(rf_accuracy) rf_accuracy 是一个浮点数 是的..但不确定出了什么问题...我尝试通过硬编码精度值(随机浮点数)..即使这样我也面临同样的问题。跨度> 试试这个打印 ('accuracy is :0.2f'.format(rf_accuracy))以上是关于Pyspark 轮函数未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章
使用广播应用地图转换时,pyspark Udf 未按预期工作?
Pyspark:将UDF的结果迭代地写回数据框不会产生预期的结果