Pau*_*Mag 5 python apache-spark pyspark apache-spark-ml
首先,我创建两个ML算法并将其保存到两个单独的文件中。注意,两个模型都基于相同的数据框。feature_1和feature_2是不同组的来自同一数据集提取的特征。
import sys
from pyspark.ml.classification import RandomForestClassificationModel
trainer_1 = RandomForestClassifier(featuresCol="features_1")
trainer_2 = RandomForestClassifier(featuresCol="features_2")
model_1 = trainer_1.fit(df_training_data)
model_2 = trainer_2.fit(df_training_data)
model_1.save(sys.argv[1])
model_2.save(sys.argv[2])
Run Code Online (Sandbox Code Playgroud)
然后,当我以后要使用模型时,我必须从它们各自的路径中加载它们,并提供路径f.ex。通过sys.argv。
import sys
from pyspark.ml.classification import RandomForestClassificationModel
model_1 = RandomForestClassificationModel.load(sys.argv[1])
model_2 = RandomForestClassificationModel.load(sys.argv[2])
Run Code Online (Sandbox Code Playgroud)
我想要的是一种优雅的方法,可以将这两个模型以相同的方式保存在一起。我主要希望这样做,这样用户每次保存和加载时都不必跟踪两个单独的路径名。这两个模型紧密相连,通常将始终创建并一起使用,因此它们属于一个模型。
这是管道打算使用的东西吗?
我想出了一种方法,只需将它们放在一起放在文件夹中即可。然后,用户只需要提供并知道该文件夹的路径即可。
import sys
import os
from pyspark.ml.classification import RandomForestClassificationModel
trainer_1 = RandomForestClassifier(featuresCol="features_1")
trainer_2 = RandomForestClassifier(featuresCol="features_2")
model_1 = trainer_1.fit(df_training_data)
model_2 = trainer_2.fit(df_training_data)
path = 'model_rfc'
os.mkdir(path)
model_1.save(os.path.join(sys.argv[1], 'model_1'))
model_2.save(os.path.join(sys.argv[1], 'model_2'))
Run Code Online (Sandbox Code Playgroud)
名称model_1和model_2是硬编码的,用户不需要知道。
import sys
import os
from pyspark.ml.classification import RandomForestClassificationModel
model_1 = RandomForestClassificationModel.load(os.path.join(sys.argv[1], 'model_1'))
model_2 = RandomForestClassificationModel.load(os.path.join(sys.argv[1], 'model_2'))
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题。这是做到这一点的最佳方法,还是有一种使用Spark库中的功能将模型捆绑在一起的更好方法?
| 归档时间: |
|
| 查看次数: |
6462 次 |
| 最近记录: |