客户机重组建议

recombee-api-client的Python项目详细描述


易于使用Recombee推荐api的python客户机。python 2和python 3都受支持。

如果您在recombee还没有帐户,可以创建一个免费帐户here

api的文档可以在docs.recombee.com找到。

安装

使用pip安装客户端:

$ pip install recombee-api-client

(如果使用python 3,请使用pip3而不是pip)

示例

基本示例

fromrecombee_api_client.api_clientimportRecombeeClientfromrecombee_api_client.exceptionsimportAPIExceptionfromrecombee_api_client.api_requestsimportAddPurchase,RecommendItemsToUser,Batchimportrandomclient=RecombeeClient('--my-database-id--','--db-private-token--')#Generate some random purchases of items by usersPROBABILITY_PURCHASED=0.1NUM=100purchase_requests=[]foruser_idin["user-%s"%iforiinrange(NUM)]:foritem_idin["item-%s"%iforiinrange(NUM)]:ifrandom.random()<PROBABILITY_PURCHASED:request=AddPurchase(user_id,item_id,cascade_create=True)purchase_requests.append(request)try:# Send the data to Recombee, use Batch for faster processing of larger dataprint('Send purchases')client.send(Batch(purchase_requests))# Get recommendations for user 'user-25'recommended=client.send(RecommendItemsToUser('user-25',5))print("Recommended items: %s"%recommended)exceptAPIExceptionase:print(e)

使用属性值

fromrecombee_api_client.api_clientimportRecombeeClientfromrecombee_api_client.api_requestsimportAddItemProperty,SetItemValues,AddPurchasefromrecombee_api_client.api_requestsimportRecommendItemsToItem,Batch,ResetDatabaseimportrandomNUM=100PROBABILITY_PURCHASED=0.1client=RecombeeClient('--my-database-id--','--db-private-token--')#Clear the entire databaseclient.send(ResetDatabase())# We will use computers as items in this example# Computers have four properties#   - price (floating point number)#   - number of processor cores (integer number)#   - description (string)#   - image (url of computer's photo)# Add properties of itemsclient.send(AddItemProperty('price','double'))client.send(AddItemProperty('num-cores','int'))client.send(AddItemProperty('description','string'))client.send(AddItemProperty('image','image'))# Prepare requests for setting a catalog of computersrequests=[SetItemValues("computer-%s"%i,#itemId#values:{'price':random.uniform(500,2000),'num-cores':random.randrange(1,9),'description':'Great computer','image':'http://examplesite.com/products/computer-%s.jpg'%i},cascade_create=True# Use cascadeCreate for creating item# with given itemId if it doesn't exist)foriinrange(NUM)]# Send catalog to the recommender systemclient.send(Batch(requests))# Prepare some purchases of items by usersrequests=[]items=["computer-%s"%iforiinrange(NUM)]users=["user-%s"%iforiinrange(NUM)]foritem_idinitems:#Use cascadeCreate to create unexisting userspurchasing_users=[user_idforuser_idinusersifrandom.random()<PROBABILITY_PURCHASED]requests+=[AddPurchase(user_id,item_id,cascade_create=True)foruser_idinpurchasing_users]# Send purchases to the recommender systemclient.send(Batch(requests))# Get 5 recommendations for user-42, who is currently viewing computer-6recommended=client.send(RecommendItemsToItem('computer-6','user-42',5))print("Recommended items: %s"%recommended)# Recommend only computers that have at least 3 coresrecommended=client.send(RecommendItemsToItem('computer-6','user-42',5,filter="'num-cores'>=3"))print("Recommended items with at least 3 processor cores: %s"%recommended)# Recommend only items that are more expensive then currently viewed item (up-sell)recommended=client.send(RecommendItemsToItem('computer-6','user-42',5,filter="'price' > context_item[\"price\"]"))print("Recommended up-sell items: %s"%recommended)

异常处理

为了简洁起见,上面的示例省略了异常处理。然而,在处理请求时可能会出现各种异常,例如,由于添加了已经存在的项、提交不存在的用户的交互或由于超时。

我们正在尽最大努力提供最快和最可靠的服务,但生产级应用程序必须实现回退解决方案,因为错误总是可能发生。例如,回退可能显示当前类别中最受欢迎的项目,或者根本不显示建议。

示例:

try:recommended=client.send(RecommendItemsToItem('computer-6','user-42',5,filter="'price' > context_item[\"price\"]"))exceptResponseExceptionase:#Handle errorneous request => use fallbackexceptApiTimeoutExceptionase:#Handle timeout => use fallbackexceptAPIExceptionase:#APIException is parent of both ResponseException and ApiTimeoutException

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
返回数组无效的java方法   异步Java CompletableFuture获取其请求   java是否可以像RDBMS那样使用视图?   java如何在屏幕上只运行一个片段?   java无法从Vertex jdbc查询中获取结果   java从jtable获取对象的正确方法   java Spring 3数据设备替代方案   Java BigDecimal:四舍五入到客户首选的数字和增量   JAVA主窗口没有出现,我必须左键单击主窗口。java并单击run查看它   Eclipse RCP中的java进程自定义设备事件   JavaEclipse一次又一次地构建代码(没有任何更改)?   java如何实现对象合并