surprise库官方文档分析(二):使用预测算法
1、使用预测算法
Surprise提供了一堆内置算法。所有算法都派生自AlgoBase
基类,其中实现了一些关键方法(例如predict
,fit
和test
)。可以在prediction_algorithms
包文档中找到可用预测算法的列表和详细信息 。
每个算法都是全局Surprise命名空间的一部分,因此您只需要从Surprise包中导入它们的名称,例如:
from surprise import KNNBasic
algo = KNNBasic()
(1)、基线估计配置
可以使用两种不同的方式估算基线:
- 使用随机梯度下降(SGD)。
- 使用交替最小二乘法(ALS)。
可以使用bsl_options
在创建算法时传递的参数来配置基线的计算方式。此参数是一个字典,其中的键'method'
指示要使用的方法。可接受的值是'als'
(默认)和'sgd'
。根据其值,可以设置其他选项。
对于ALS:
reg_i:item的正则化参数。默认为10.
reg_u:user的正则化参数。默认为15.
n_epochs:ALS过程的迭代次数。默认为10.
对于SGD:
reg:优化的成本函数的正则化参数。默认为0.02.
learning_rate:SGD的学习率。默认为0.005.
n_epochs:SGD过程的迭代次数。默认为20.
不论SGD还是ALS,损失量默认为0.
例子:
print('Using ALS')
bsl_options = {'method': 'als',
'n_epochs': 5,
'reg_u': 12,
'reg_i': 5
}
algo = BaselineOnly(bsl_options=bsl_options) print('Using SGD')
bsl_options = {'method': 'sgd',
'learning_rate': .00005,
}
algo = BaselineOnly(bsl_options=bsl_options) #请注意,某些相似性度量可能会使用基线,例如 pearson_baseline相似性。无论基线是否用于实际预测r,配置的工作方式都相同 bsl_options = { 'method' : 'als' ,
'n_epochs' : 20 ,
}
sim_options = { 'name' : 'pearson_baseline' }
algo = KNNBasic (bsl_options = bsl_options , sim_options = sim_options )
(2):相似度配置
许多算法使用相似性度量来估计评级。它们的配置方式与基线评级类似:您只需sim_options
在创建算法时传递参数即可。此参数是包含以下(所有可选)键的字典:
name:要使用的相似性的名称,如similarities
模块中所定义 。默认是'MSD'
。
user_based:是否在用户之间或项目之间计算相似性。这对预测算法的性能有很大影响。默认是True
。
min_support:共同项目的最小数目(当'user_based'
是'True'
)或普通用户的最小数目(当'user_based'
是 'False'
用于相似性)不为零
shrinkage:要应用的收缩参数(仅与pearson_baseline
相似性相关 )。默认值为100。
用法:
sim_options = {'name': 'cosine',
'user_based': False # compute similarities between items
}
algo = KNNBasic(sim_options=sim_options) sim_options = {'name': 'pearson_baseline',
'shrinkage': 0 # no shrinkage
}
algo = KNNBasic(sim_options=sim_options)
surprise库官方文档分析(二):使用预测算法的更多相关文章
- surprise库官方文档分析(三):搭建自己的预测算法
1.基础 创建自己的预测算法非常简单:算法只不过是一个派生自AlgoBase具有estimate 方法的类.这是该方法调用的predict()方法.它接受内部用户ID,内部项ID,并返回估计评级r f ...
- surprise库官方文档分析(一)
一:入门 1.基本用法 (1).自动交叉验证 Surprise有一套内置的 算法和数据集供您使用.在最简单的形式中,只需几行代码即可运行交叉验证程序: from surprise import SVD ...
- 转:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述
原文地址:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述 ArcGIS JavaScript API允许在地图上绘制graphic(图形) ...
- OKHttp 官方文档【二】
OkHttp 是这几年比较流行的 Http 客户端实现方案,其支持HTTP/2.支持同一Host 连接池复用.支持Http缓存.支持自动重定向 等等,有太多的优点. 一直想找时间了解一下 OkHttp ...
- Gora官方文档之二:Gora对Map-Reduce的支持
参考官方文档:http://gora.apache.org/current/tutorial.html 项目代码见:https://code.csdn.net/jediael_lu/mygoradem ...
- Gora官方文档之二:Gora对Map-Reduce的支持 分类: C_OHTERS 2015-01-31 11:27 232人阅读 评论(0) 收藏
参考官方文档:http://gora.apache.org/current/tutorial.html 项目代码见:https://code.csdn.net/jediael_lu/mygoradem ...
- webpack官方文档分析(二):概念
1.概念 webpack的核心是将JavaScript应用程序的静态捆绑模块.当webpack处理您的应用程序时,它会在内部构建一个依赖关系图,它映射您的项目所需的每个模块并生成一个或多个包. 从版本 ...
- webpack官方文档分析(三):Entry Points详解
1.有很多种方法可以在webpack的配置中定义entry属性,为了解释为什么它对你有用,我们将展现有哪些方法可以配置entry属性. 2.单一条目语法 用法: entry: string|Array ...
- 【cocos2d-js官方文档】二十五、Cocos2d-JS v3.0中的单例对象
为何将单例模式移除 在Cocos2d-JS v3.0之前.全部API差点儿都是从Cocos2d-x中移植过来的,这是Cocos2d生态圈统一性的重要一环.可惜的是,这样的统一性也在非常大程度上限制了C ...
随机推荐
- 【C#】课堂知识点#3
1.讲解了实验1中,利用Char.is***来进行判断字符类型. using System; using System.Collections.Generic; using System.Linq; ...
- netty--buffer分配策略
AdaptiveRecvByteBufAllocator 动态分配buffer大小的类. 如果前一次读取完全填满了分配的缓冲区,它将逐渐增加预期的可读字节数.(增加的方式:初始化类的时候,会预先设置好 ...
- C#用户控件实战01_CSS布局
很多应用系统的主页布局,一般采用如下案例所示布局较多,如下图的CSS布局框架,上.中.下,接下来我们演示,在C#中实现如下的业务架构布局. 代码范例: 在<body></body&g ...
- SQL Server2008 删除重复记录只剩一条(无Uid)
INSERT INTO 表1 SELECT * FROM 视图1 CREATE TABLE ##TMP01 ---创建 ...
- VBA事件(十七)
在VBA中,要手动更改单元格或单元格值范围时,可以触发事件驱动的编程. 更改事件可能会使事情变得更容易,但您可以非常快速地结束一个完整的格式化页面.VBA中有两种事件 - 工作表事件 工作簿事件 工作 ...
- Java调用Python相关问题:指定python环境、传入参数、返回结果
本篇文章涉及到的操作均在Windows系统下进行,Java调用python在原理上不难,但是可能在实际应用中会有各种各样的需求,网上其他的资料很不全,所以又总结了这篇文章,以供参考. 一.指定pyth ...
- stm32 CAN通信 TJA1040
CAN协议特点 1.多主控制 所有单元都可以发送消息,根据标识符(Identifier简称ID)决定优先级.仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工 ...
- 网络基础 URL
一.用JAVA实现URL 在JAVA中,Java.net包里面的类是进行网络编程的,其中java.net.URL类和java.net.URLConection类使编程者方便地利用URL在Intern ...
- 阿里云给自己实例扩容-扩展分区和文件系统_Linux系统盘
阿里云买了台服务器ecs 磁盘容量40g 发现已经用了30g了 赶紧扩容 进入 e'cs实例 进入左边菜单 存储与快照 然后选择右边的扩容 然后支付 成功后 进入服务器 df -h 发现怎么还是没变 ...
- Go语言中的IO操作、Flag包以及urfave/cli命令行框架
一.格式化输入和输出 1.从终端获取用户的输入 fmt.Scanf 空格作为分隔符,占位符和格式化输出的一致 fmt.Scan 从终端获取用户的输入,存储在Scanln中的参数里,空格和换行符作为 ...