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创建动态图像
Oct 09 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 PHP
php模板中出现空行解决方法
Mar 08 PHP
MySQL的FIND_IN_SET函数使用方法分享
Mar 27 PHP
PHP之密码加密的几种方式
Jul 29 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
PHP入门教程之图像处理技巧分析
Sep 11 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
php微信开发之图片回复功能
Jun 14 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 PHP
php实现的生成排列算法示例
Jul 25 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 pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
JS实现拼图游戏
2021/01/29 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
vscode自定义vue模板的实现
2021/01/27 Vue.js
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
Python 实现向word(docx)中输出
2020/02/13 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
2016/10/17 面试题
laravel使用redis队列实例讲解
2021/03/23 PHP
2014年应届大学生自我评价
2014/01/09 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
党员民主评议总结
2014/10/20 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技