协同过滤-皮尔逊相关系数算法
来源:互联网 发布:java游戏引擎 编辑:程序博客网 时间:2024/06/12 02:45
<?php /** * 皮尔逊相关系数的算法-求乘积之和 * @param array $a 用户a商品浏览秒数或评分数 * @param array $b 用户b商品浏览秒数或评分数 * @return int 乘积之和 */ function multipl($a, $b) { $sumfab = 0; foreach ($a as $k => $v) { $sumfab += $v * $b[$k]; } return $sumfab; } /** * 求平方和 * @param array $a 用户a商品浏览评分数组 * @return int 平方和 */ function sum_of_squares($a) { if (!$a) { return false; } $sum = 0; foreach ($a as $v) { $sum += pow($v, 2); } return $sum; } /** * 皮尔逊相关系数的算法-求出相关系数 * @param array $a 用户a商品浏览秒数或评分数 * @param array $b 用户b商品浏览秒数或评分数 * @return float 相关系数 */ function corrcoef($a, $b) { if (count($a) != count($b)) return false; $n = count($a); // 求总和 $sum_a = array_sum($a); $sum_b = array_sum($b); // 乘积和 $sum_of_ab = multipl($a, $b); // 平方和 $sum_of_a = sum_of_squares($a); $sum_of_b = sum_of_squares($b); $up = $sum_of_ab - (number_format($sum_a, 2, '.', '')*number_format($sum_b, 2, '.', '')/$n); $down = sqrt(($sum_of_a - number_format(pow($sum_a, 2), 2, '.', '')/$n) * ($sum_of_b - number_format(pow($sum_b, 2), 2, '.', '')/$n)); return $up/$down; } $x = [3.3,6.5]; $y = [3.4,5.8]; print_r(corrcoef($x,$y)); // 得出结果是: 1
算法来源文章
阅读全文
0 0
- 协同过滤-皮尔逊相关系数算法
- 基于皮尔森相关系数的协同过滤算法
- 基于皮尔森相关系数的协同过滤算法
- 基于皮尔森相关系数的协同过滤算法
- 基于用户的协同过滤和皮尔逊相关系数
- 基于用户的协同过滤和皮尔逊相关系数
- 基于用户的协同过滤和皮尔逊相关系数
- 【推荐系统】协同过滤--高度稀疏数据下的数据清理(皮尔逊相关系数)
- 协同过滤算法
- 协同过滤推荐算法
- 协同过滤推荐算法
- 协同过滤算法
- 协同过滤推荐算法
- 协同过滤推荐算法
- 协同过滤推荐算法
- 协同过滤算法
- 协同过滤推荐算法
- 协同过滤推荐算法
- 3DSlicer33:Adding MRML
- ubuntu16.04+cuda8.0+cudnn6+tensorflow安装
- 从豆瓣电影评分算法说起
- 资本寒冬,这十大创业公司值得尊重(上)
- 右值 移动
- 协同过滤-皮尔逊相关系数算法
- Angular4 环境搭建与项目创建与发布
- 利用python进行数据分析译者给出的注意事项
- c# 图片浏览器
- POJ 1131 Octal Fractions——高精度
- C++template(模板)的使用
- PMCAFF微课堂 (已结束)| 京东平台产品负责人:如何打造一个支撑3200万日订单量的平台型产品
- C#中的foreach和yield
- 从《芈月传》看热门IP在互联网视频行业的“前世今生”