1. 云栖社区>
  2. PHP教程>
  3. 正文

余弦相似度实现—php数据分析 PHP实现

作者:用户 来源:互联网 时间:2017-12-01 09:32:01

php实现数据分析余弦相似

余弦相似度实现—php数据分析 PHP实现 - 摘要: 本文讲的是余弦相似度实现—php数据分析 PHP实现,<?php/** * 数据分析引擎 * 分析向量的元素 必须和基准向量的元素一致,取最大个数,分析向量不足元素以0填补。 * 求出分析向量与基准向量的余弦值 * @php爱好者 *//** * 获得向量的模 * @param unkn

<?php/** * 数据分析引擎 * 分析向量的元素 必须和基准向量的元素一致,取最大个数,分析向量不足元素以0填补。 * 求出分析向量与基准向量的余弦值 * @php爱好者 *//** * 获得向量的模 * @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 , 实现 , 数据分析 , 余弦 相似 ,以便于您获取更多的相关知识。