Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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
Python 基于个性化训练的机器学习模型_Python_Machine Learning - Fatal编程技术网

Python 基于个性化训练的机器学习模型

Python 基于个性化训练的机器学习模型,python,machine-learning,Python,Machine Learning,我和python一起从事一个php项目,该项目使用flask作为api,根据之前对其他帖子的参与以及纯粹基于用户的内容预测用户对帖子的喜好 我的要求是假设我们的系统中有1000个用户。他们以前也喜欢老帖子。当新帖子出现时,我需要以某种方式确定用户是否喜欢。这是通过cron作业完成的 方法1 我使用逻辑回归作为模型,因此可能需要为每个用户提供动态pkl文件。因为同一帖子上的不同用户参与程度不同,所以我需要保存一些类似model_{user_id}.pkl文件的内容,其中user_id是用户的用户i

我和python一起从事一个php项目,该项目使用flask作为api,根据之前对其他帖子的参与以及纯粹基于用户的内容预测用户对帖子的喜好

我的要求是假设我们的系统中有1000个用户。他们以前也喜欢老帖子。当新帖子出现时,我需要以某种方式确定用户是否喜欢。这是通过cron作业完成的

方法1

我使用逻辑回归作为模型,因此可能需要为每个用户提供动态pkl文件。因为同一帖子上的不同用户参与程度不同,所以我需要保存一些类似model_{user_id}.pkl文件的内容,其中user_id是用户的用户id

方法2

使用基于内容的推荐系统。但据我所知,它不能像生产中的pkl文件那样存储。因此,对于1000多个用户中的每个用户,我都需要运行推荐功能

方法1退税

为每个用户创建动态pkl文件,这意味着更多的文件。我在互联网上从未见过这种方法

方法2退税

我认为,为每个用户调用推荐函数可能是个坏主意。这将严重影响cpu使用率等


有人能帮我解决这个问题吗?我是机器学习新手。请考虑我的问题。提前谢谢。

我建议如下:

  • 将用户模型创建为模型数组(或数据帧)
  • 将此数组另存为pkl
  • 加载应用程序时(不是每次API调用时),将模型数组加载到内存中
  • 调用API时,模型已经在内存中-使用它来预测结果
类似这样的内容(未经测试-只是一个概念):


谢谢,我一定会试试。嗨,对每个用户进行培训是个坏主意吗?想象一下,在我们的系统中有成千上万的用户,对于每一个我需要通过cron作业进行培训的用户,基于他们收到的新邮件。有什么好的方法吗。如果你有足够的时间,你的宝贵建议是非常值得欣赏的——没关系。但是-你对新用户怎么办?我想我需要设置一些规则,比如建议只有在用户做出特定参与度之后才有效。可以吗?通过使用推荐系统,我们可以通过基于流行度的推荐器以较少的数据量实现这一点。但我认为我不能使用推荐人,因为不同的用户有不同的帖子,如果我没有错的话,推荐会建议无效的职位。在这两者之间,我可以使用推荐系统来实现吗?在这种情况下,推荐系统或使用回归或不使用回归的培训哪个更好?回归是评估职位质量的众多方法中的一种。您需要尝试几种方法并选择一种效果最好的方法。您只能将系统限制为注册用户。
#for saving the model
model_data = pd.DataFrame(columns=['user','model'])
temp_model = RandomForestClassifier().fit(X,y)
new = pd.DataFrame({'user':[user_id],'model':[temp_model]})
model_data = model_data.append(new)
packed_model = jsonpickle.pickler.Pickler.flatten(model_data)

#for loading the model
unpacked_model = jsonpickle.unpickler.Unpickler.restore(packed_model) #this should be in the begining of your flask file - loaded into the memory
user_model=unpacked_model.at(user_id,'model') #this should be inside every api call