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

 更新时间:2017年08月08日 10:52:44   作者:小贝  
这篇文章主要介绍了PHP数据分析引擎计算余弦相似度算法,结合具体实例形式分析了php计算余弦相似度的操作步骤与相关实现技巧,需要的朋友可以参考下

本文实例讲述了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 截取字符串并以零补齐str_pad() 函数

    php 截取字符串并以零补齐str_pad() 函数

    str_pad() 函数把字符串填充为指定的长度,需要的朋友可以参考下。
    2011-05-05
  • PHP堆栈调试操作简单示例

    PHP堆栈调试操作简单示例

    这篇文章主要介绍了PHP堆栈调试操作,结合简单实例形式分析了php使用debug_backtrace()函数进行堆栈调试操作方法,需要的朋友可以参考下
    2018-06-06
  • 用PHP调用Oracle存储过程的方法

    用PHP调用Oracle存储过程的方法

    php程序访问数据库,完全可以使用存储过程,有人认为使用存储过程便于维护。不过仁者见仁,智者见智,在这个问题上,偶认为使用存储过程意味着必须要dba和开发人员更紧密配合,如果其中一方更变,则显然难以维护。
    2008-09-09
  • 深入PHP许愿墙模块功能分析

    深入PHP许愿墙模块功能分析

    本篇文章是对PHP实现许愿墙的模块功能进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP设计模式之策略模式原理与用法实例分析

    PHP设计模式之策略模式原理与用法实例分析

    这篇文章主要介绍了PHP设计模式之策略模式原理与用法,结合实例形式较为详细的分析了策略模式的概念、原理及php实现与使用策略模式的相关操作技巧,需要的朋友可以参考下
    2019-04-04
  • PHP实现变色验证码实例

    PHP实现变色验证码实例

    验证码想必大家都有见到过吧,在本文为大家介绍下PHP如何实现变色验证码,感兴趣的朋友可以参考下
    2014-01-01
  • PHP实现本地图片转base64格式并上传

    PHP实现本地图片转base64格式并上传

    这篇文章主要介绍了PHP实现本地图片转base64格式并上传,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Yii2框架整合Xunsearch搜索引擎的方法

    Yii2框架整合Xunsearch搜索引擎的方法

    这篇文章主要介绍了Yii2框架整合Xunsearch搜索引擎的方法,结合实例形式分析了Yii2框架整合Xunsearch的具体步骤与相关注意事项,需要的朋友可以参考下
    2016-10-10
  • php下通过IP获取地理位置的代码(小偷程序)

    php下通过IP获取地理位置的代码(小偷程序)

    php下通过远程获取qq的ip解析,实现获取地理位置的代码,需要的朋友可以参考下。
    2011-06-06
  • PHP基于XMLWriter操作xml的方法分析

    PHP基于XMLWriter操作xml的方法分析

    这篇文章主要介绍了PHP基于XMLWriter操作xml的方法,结合实例形式分析了php使用XMLWriter生成及解析xml数据的操作技巧,需要的朋友可以参考下
    2017-07-07

最新评论