PHP数据分析引擎计算余弦相似度算法示例


Posted in PHP onAugust 08, 2017

本文实例讲述了PHP数据分析引擎计算余弦相似度算法。分享给大家供大家参考,具体如下:

关于余弦相似度的相关介绍可参考百度百科:余弦相似度

<?php
/**
 * 数据分析引擎
 * 分析向量的元素 必须和基准向量的元素一致,取最大个数,分析向量不足元素以0填补。
 * 求出分析向量与基准向量的余弦值
 * @author yu.guo@okhqb.com
 */
/**
 * 获得向量的模
 * @param unknown_type $array 传入分析数据的基准点的N维向量。|eg:array(1,1,1,1,1);
 */
function getMarkMod($arrParam){
 $strModDouble = 0;
 foreach($arrParam as $val){
 $strModDouble += $val * $val;
 }
 $strMod = sqrt($strModDouble);
 //是否需要保留小数点后几位
 return $strMod;
}
/**
 * 获取标杆的元素个数
 * @param unknown_type $arrParam
 * @return number
 */
function getMarkLenth($arrParam){
 $intLenth = count($arrParam);
 return $intLenth;
}
/**
 * 对传入数组进行索引分配,基准点的索引必须为k,求夹角的向量索引必须为 'j'.
 * @param unknown_type $arrParam
 * @param unknown_type $index
 * @ruturn $arrBack
 */
function handIndex($arrParam, $index = 'k'){
 foreach($arrParam as $key => $val){
  $in = $index.$key;
  $arrBack[$in] = $val;
 }
 return $arrBack;
}
/**
 *
 * @param unknown_type $arrMark标杆向量数组(索引被处理过)
 * @param unknown_type $arrAnaly 分析向量数组 (索引被处理过) |array('j0'=>1,'j1'=>2....)
 * @param unknown_type $strMarkMod标杆向量的模
 * @param unknown_type $intLenth 向量的长度
 */
function getCosine($arrMark, $arrAnaly, $strMarkMod ,$intLenth){
 $strVector = 0;
 $strCosine = 0;
 for($i = 0; $i < $intLenth; $i++){
 $strMarkVal = $arrMark['k'.$i];
 $strAnalyVal = $arrAnaly['j'.$i];
 $strVector += $strMarkVal * $strAnalyVal;
 }
 $arrAnalyMod = getMarkMod($arrAnaly); //求分析向量的模
 $strFenzi = $strVector;
 $strFenMu = $arrAnalyMod * $strMarkMod;
 $strCosine = $strFenzi / $strFenMu;
 if(0 !== (int)$strFenMu){
 $strCosine = $strFenzi / $strFenMu;
 }
 return $strCosine;
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 删除一个目录及目录下的所有文件的函数代码
May 26 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
Jun 24 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
php实现的美国50个州选择列表实例
Apr 20 PHP
PHP实现递归无限级分类
Oct 22 PHP
详解YII关联查询
Jan 10 PHP
php操作access数据库的方法详解
Feb 22 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 #PHP
PHP 文件锁与进程锁的使用示例
Aug 07 #PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 #PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 #PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 #PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 #PHP
PHP基于IMAP收取邮件的方法示例
Aug 07 #PHP
You might like
用php实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
JavaScript中的高级函数
2018/01/04 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python批量解压zip文件的方法
2019/08/20 Python
利用python 下载bilibili视频
2020/11/13 Python
python xlsxwriter模块的使用
2020/12/24 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
学历公证委托书
2014/04/09 职场文书
爱心活动计划书
2014/04/26 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
秋菊打官司观后感
2015/06/03 职场文书
文明礼貌主题班会
2015/08/14 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
2019大学生实习报告
2019/06/21 职场文书
担保书范文
2019/07/09 职场文书
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers