我正在尝试找出正确的方法是使用Spark+MLlib生成的模型(在本例中是一个协作过滤推荐引擎)来快速、按需并作为服务器提供预测。
我目前的解决方案是为此目的连续运行Spark的实例,但我想知道是否有更好的解决方案,也许是不需要运行Spark的解决方案。也许有一种方法可以在不涉及Spark的情况下加载和使用Spark生成的模型?
发布于 2016-10-15 07:37:42
您可以通过pmml导出模型,然后将该模型用于另一个应用程序。
发布于 2017-11-23 12:47:58
现在我找到路了。首先,我们可以通过model.productFeatures() and Model.userFeatures()保存肌萎缩侧索硬化症模型的product_features和user_feaures
然后我们得到这样的产品特性
209699159874445020
0.0533636957407,-0.0878632888198,0.105949401855,0.129774808884,0.0953511446714,0.16420891881,0.0558457262814,0.0587058141828因此,我们可以在python中将产品特征和用户特征加载到两个dicts中,并通过tornado创建一个服务器,使用这两个dicts预测评级。例如,我将展示代码。
def predict(item_id, user_id):
ind = item_id_index[item_id]
gf = goods_features[ind,1:]
ind = user_id_index[user_id]
uf = user_features[ind,1:]
return blas.ddot(gf,uf,len(gf),0,1,0,1)作为结论。我们需要自己持久化als模型,这并不像我们想象的那么困难。欢迎提出任何建议。
https://stackoverflow.com/questions/40048347
复制相似问题