PHP数据分析引擎计算余弦相似度算法示例
程序员文章站
2024-03-11 14:43:13
本文实例讲述了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程序设计有所帮助。