当前位置: 移动技术网 > IT编程>开发语言>PHP > PHP数据分析引擎计算余弦相似度算法示例

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

本文实例讲述了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程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网