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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
对淘宝URL中ID提取的PHP代码
Sep 01 PHP
PHP中echo,print_r与var_dump区别分析
Sep 29 PHP
Mac OS下配置PHP+MySql环境
Feb 25 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
Jul 29 PHP
PHP实现文件上传和多文件上传
Dec 24 PHP
mac下多个php版本快速切换的方法
Oct 09 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
PHP+ajax实现获取新闻数据简单示例
May 08 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
Aug 06 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中使用接口实现工厂设计模式的代码
2012/06/17 PHP
PHP中使用BigMap实例
2015/03/30 PHP
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
前端性能优化建议
2020/09/17 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
医学专业毕业生个人的求职信
2013/12/04 职场文书
职业生涯规划怎么写
2013/12/29 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
单位工作证明范本
2015/06/15 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python