Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Apache spark PySpark加载不合适的模型对象时出现问题_Apache Spark_Pyspark_Apache Spark Ml - Fatal编程技术网

Apache spark PySpark加载不合适的模型对象时出现问题

Apache spark PySpark加载不合适的模型对象时出现问题,apache-spark,pyspark,apache-spark-ml,Apache Spark,Pyspark,Apache Spark Ml,我在玩pyspark.ml.classification模型的save和load函数。我创建了一个RandomForestClassifier的实例,将值设置为几个参数,并调用分类器的save方法。它成功地保存了数据。没有问题 从pyspark.ml.classification导入分类器 #拯救 rf=随机森林分类器() rf.set杂质(‘熵’) rf.setPredictionCol('predme') rf.write().overwrite().save('rf_test')) 然后

我在玩
pyspark.ml.classification
模型的
save
load
函数。我创建了一个
RandomForestClassifier
的实例,将值设置为几个参数,并调用分类器的
save
方法。它成功地保存了数据。没有问题

从pyspark.ml.classification导入分类器
#拯救
rf=随机森林分类器()
rf.set杂质(‘熵’)
rf.setPredictionCol('predme')
rf.write().overwrite().save('rf_test'))
然后我尝试重新加载它,但我注意到它的参数没有保存前设置的值。下面是我正在尝试的代码

#加载
rf2=随机森林分类器()
rf2.负载(“rf_测试”)
print(rf2.getinclusion())#返回gini
打印(rf2.getPredictionCol())#返回预测
我想我对这段代码应该如何工作和它实际如何工作的理解有所不同

我该怎么做才能以我保存的方式取回该对象

编辑

我尝试了这里提到的方法。但那没用。这就是我试过的

from pyspark.ml.classification import RandomForestClassifier
rf = RandomForestClassifier()
rf.setImpurity('entropy')
rf.setPredictionCol('predme')
rf.write().overwrite().save('rf_test')
rf2 = RandomForestClassifier
rf2.load('rf_test')
print(rf2.getImpurity())
它返回了以下内容

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: getImpurity() missing 1 required positional argument: 'self'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:GetInjection()缺少1个必需的位置参数:“self”

这不是使用
load
方法的方式。它是一个
classmethod
,应该在类对象而不是实例上调用,以返回新对象:

rf2=RandomForestClassifier.load('rf_test'))
rf2.getinclusion()
从技术上讲,在实例上调用它也可以,但它不会修改调用者,而是返回一个新的独立对象:

rf2=RandomForestClassifier()。加载('rf\u测试')
但在实践中,应该避免这种构造