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生成RSS文件类实例

    PHP生成RSS文件类实例

    这篇文章主要介绍了PHP生成RSS文件类,可实现PHP生成RSS文件的功能,对于网站建设与优化来说具有一定的实用价值,需要的朋友可以参考下
    2014-12-12
  • 轻松修复Discuz!数据库

    轻松修复Discuz!数据库

    各位站长经常会遇到的数据库损坏的错误,错误来了就去面对,不要慌张,瞎着急是没有用的。其实熟悉Discuz! 的朋友都知道,Discuz! 后台自带数据库修复工具的,如果数据库损坏导致首页打不开了,但是后台还可以进去。
    2008-05-05
  • 学习php设计模式 php实现装饰器模式(decorator)

    学习php设计模式 php实现装饰器模式(decorator)

    这篇文章主要介绍了php设计模式中的装饰模式,使用php实现装饰模式,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Mac环境下php操作mysql数据库的方法分享

    Mac环境下php操作mysql数据库的方法分享

    今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下。
    2015-05-05
  • php 获取页面中指定内容的实现类

    php 获取页面中指定内容的实现类

    本文为大家下使用php如何获取页面中的指定内容,而且以封装成类,需要的朋友可以参考下本文
    2014-01-01
  • 全新Mac配置PHP开发环境教程

    全新Mac配置PHP开发环境教程

    趁着这次加硬盘的机会,就准备彻底重做开发环境。现在对Mac也有了一定的了解,特地记录一下本次的开发环境安装详情,给自己一个备忘,希望也可以帮助到刚接触Mac环境的同学们
    2016-02-02
  • 百度工程师讲PHP函数的实现原理及性能分析(二)

    百度工程师讲PHP函数的实现原理及性能分析(二)

    这篇文章主要介绍了百度工程师讲PHP函数的实现原理及性能分析(二),本文讲解了类方法、性能对比、内置函数和用户函数性能对比等内容,需要的朋友可以参考下
    2015-05-05
  • php实现的mysqldb读写分离操作类示例

    php实现的mysqldb读写分离操作类示例

    这篇文章主要介绍了php实现的mysqldb读写分离操作类,结合实例形式分析了php针对数据库的读写分离操作实现技巧,并给出了该封装类的具体使用方法,需要的朋友可以参考下
    2017-02-02
  • 常见PHP数据库解决方案分析介绍

    常见PHP数据库解决方案分析介绍

    您可以用很多的方式创建PHP数据库设计、数据库访问和基于数据库的 PHP 业务逻辑代码,但最终一般以错误告终。本文说明了数据库设计和访问数据库的PHP代码中出现的常见问题,以及在遇到这些问题时如何修复它们。
    2015-09-09
  • 解析在PHP中使用mysqli扩展库对mysql的操作

    解析在PHP中使用mysqli扩展库对mysql的操作

    本篇文章是对在PHP中使用mysqli扩展库对mysql的操作进行了详细的分析介绍,需要的朋友参考下
    2013-07-07

最新评论