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 相关文章推荐
人大复印资料处理程序_补充篇
Oct 09 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
May 07 PHP
PHP简洁函数(PHP简单明了函数语法)
Jun 10 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
PHP函数getenv简介和使用实例
May 12 PHP
Yii结合CKEditor实现图片上传功能
Jun 13 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 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
wordpress之wp-settings.php
2007/08/17 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
php中JSON的使用方法
2015/04/30 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
Python 如何访问外围作用域中的变量
2016/09/11 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
2018/10/29 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
2018/12/05 Python
python将txt文件读取为字典的示例
2018/12/22 Python
python ---lambda匿名函数介绍
2019/03/13 Python
python二进制文件的转译详解
2019/07/03 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
在Python中使用turtle绘制多个同心圆示例
2019/11/23 Python
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
车间调度岗位职责
2013/11/30 职场文书
长辈证婚人证婚词
2014/01/09 职场文书
党性心得体会
2014/09/03 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
中学生思想品德评语
2014/12/31 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
2016年安全月活动总结
2016/04/06 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
移除Selenium中window.navigator.webdriver值
2022/06/10 Python