本文实例讲述了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程序设计算法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》及《PHP数组(Array)操作技巧大全》
希望本文所述对大家PHP程序设计有所帮助。
# PHP
# 计算
# 余弦相似度
# 算法
# 总结PHP中数值计算的注意事项
# PHP中浮点数计算比较及取整不准确的解决方法
# php计算函数执行时间的方法
# PHP几个数学计算的内部函数学习整理
# php计算两个整数的最大公约数常用算法小结
# PHP计算加权平均数的方法
# php数字游戏 计算24算法
# php常用字符串String函数实例总结【转换
# 替换
# 截取
# 加密】
# PHP之浮点数计算比较以及取整数不准确的解决办法
# php数值计算num类简单操作示例
# 程序设计
# 求出
# 相关内容
# 感兴趣
# 数据结构
# 给大家
# 几位
# 更多关于
# 所述
# 面向对象
# 素以
# 操作技巧
# 讲述了
# unknown_type
# array
# function
# guo
# okhqb
# param
# foreach
相关文章:
建站之星会员如何解锁更多建站功能?
如何在新浪SAE免费搭建个人博客?
建站之星与建站宝盒如何选择最佳方案?
如何在IIS7上新建站点并设置安全权限?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
孙琪峥织梦建站教程如何优化数据库安全?
公司网站的制作公司,企业网站制作基本流程有哪些?
建站主机类型有哪些?如何正确选型
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
网站app免费制作软件,能免费看各大网站视频的手机app?
网站制作软件有哪些,制图软件有哪些?
,sp开头的版面叫什么?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
建站之星安装模板失败:服务器环境不兼容?
如何在云主机快速搭建网站站点?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
如何访问已购建站主机并解决登录问题?
建站之星2.7模板快速切换与批量管理功能操作指南
linux top下的 minerd 木马清除方法
建站之星如何助力企业快速打造五合一网站?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
nginx修改上传文件大小限制的方法
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
建站之星安装后界面空白如何解决?
如何制作一个表白网站视频,关于勇敢表白的小标题?
手机网站制作与建设方案,手机网站如何建设?
建站主机无法访问?如何排查域名与服务器问题
建站主机是否属于云主机类型?
如何基于云服务器快速搭建个人网站?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
建站之星导航如何优化提升用户体验?
怀化网站制作公司,怀化新生儿上户网上办理流程?
平台云上自主建站:模板化设计与智能工具打造高效网站
建站主机选购指南:核心配置优化与品牌推荐方案
如何在Golang中使用replace替换模块_指定本地或远程路径
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
建站之星如何修改网站生成路径?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
高防服务器如何保障网站安全无虞?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
5种Android数据存储方式汇总
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
公司门户网站制作流程,华为官网怎么做?
如何打造高效商业网站?建站目的决定转化率
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何通过虚拟主机空间快速建站?
如何自定义建站之星网站的导航菜单样式?
网站制作网站,深圳做网站哪家比较好?
*请认真填写需求信息,我们会在24小时内与您取得联系。