您好,欢迎访问一九零五行业门户网

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计算余弦相似度算法实例的详细内容。
其它类似信息

推荐信息