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程序设计有所帮助。

相关文章

  • Zend Studio (eclipse)使用速度优化方法

    Zend Studio (eclipse)使用速度优化方法

    Zend studio7.12那速度正太让人火大了,修改文件的保存就building workspace,要得等上好一会
    2011-03-03
  • PHP基于文件存储实现缓存的方法

    PHP基于文件存储实现缓存的方法

    这篇文章主要介绍了PHP基于文件存储实现缓存的方法,实例分析了smarty模板中php通过文件存储来实现缓存的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • php实现对文件压缩简单的方法

    php实现对文件压缩简单的方法

    在本篇文章里我们给大家整理的是关于php如何实现对文件压缩的实例内容,有需要的朋友们参考学习下。
    2019-09-09
  • PHP函数rtrim()使用中的怪异现象分析

    PHP函数rtrim()使用中的怪异现象分析

    这篇文章主要介绍了PHP函数rtrim()使用中的怪异现象,结合具体实例形式分析了php函数rtrim在进行字符匹配过程中出现的问题与解决方法,有助于进一步了解rtrim函数的原理与使用技巧,需要的朋友可以参考下
    2017-02-02
  • PHP 工厂模式使用方法

    PHP 工厂模式使用方法

    工厂类是指包含一个专门用来创建其他对象的方法的类,工厂类在多态性编程实践中是至关重要的,它允许动态的替换类,修改配置,通常会使应用程序更加灵活,熟练掌握工厂模式高级PHP开发人员是很重要的。
    2010-05-05
  • PHP合并数组的2种方法小结

    PHP合并数组的2种方法小结

    大家都知道PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的!这篇文章给加总结介绍了PHP合并数组的2种方法,有需要的朋友们可以参考借鉴,下面来一起学习学习吧。
    2016-11-11
  • Linux下安装PHP MSSQL扩展教程

    Linux下安装PHP MSSQL扩展教程

    这篇文章主要介绍了Linux下安装PHP MSSQL扩展教程,本文环境是SUSE Linux Enterprise Server 10 SP3,其它系统也类似,需要的朋友可以参考下
    2014-10-10
  • php中$_POST与php://input的区别实例分析

    php中$_POST与php://input的区别实例分析

    这篇文章主要介绍了php中$_POST与php://input的区别,实例分析了$_POST与php://input的功能、使用技巧与用法区别,需要的朋友可以参考下
    2015-01-01
  • PHP互换两个变量值的方法(不用第三变量)

    PHP互换两个变量值的方法(不用第三变量)

    相信每个刚接触PHP语言的童鞋们应该藕知道,PHP中两个变量的值互换是个很常见的做法,那么下面这篇文章我们就来介绍几个对于变量值互换的常见操作方法,文中介绍的很详细,相信对于大家的理解和学习很有帮助,下面有需要的朋友们来一起看看吧。
    2016-11-11
  • PHP学习笔记 用户注册模块用户类以及验证码类

    PHP学习笔记 用户注册模块用户类以及验证码类

    最近正在学习《PHP&MySQL范例精解》,刚刚看到第一张,关于用户注册模块的设计,这本书提供了很多可重用类,便于用于其它项目中。
    2011-09-09

最新评论