[Java] php 计算余弦相似性 →→→→→进入此内容的聊天室

来自 , 2019-12-09, 写在 Java, 查看 150 次.
URL http://www.code666.cn/view/a3d68b46
  1. <?php
  2. /**
  3.  * 数据分析引擎
  4.  * 分析向量的元素 必须和基准向量的元素一致,取最大个数,分析向量不足元素以0填补。
  5.  * 求出分析向量与基准向量的余弦值
  6.  * @author Foyon
  7.  */
  8.  
  9. /**
  10.  * 获得向量的模
  11.  * @param unknown_type $array 传入分析数据的基准点的N维向量。|eg:array(1,1,1,1,1);
  12.  */
  13. function getMarkMod($arrParam){
  14.     $strModDouble = 0;
  15.     foreach($arrParam as $val){
  16.         $strModDouble += $val * $val;
  17.     }
  18.     $strMod = sqrt($strModDouble);
  19.     //是否需要保留小数点后几位
  20.     return $strMod;
  21. }
  22.  
  23. /**
  24.  * 获取标杆的元素个数
  25.  * @param unknown_type $arrParam
  26.  * @return number
  27.  */
  28. function getMarkLenth($arrParam){
  29.     $intLenth = count($arrParam);
  30.     return $intLenth;
  31. }
  32. /**
  33.  * 对传入数组进行索引分配,基准点的索引必须为k,求夹角的向量索引必须为 'j'.
  34.  * @param unknown_type $arrParam
  35.  * @param unknown_type $index
  36.  * @ruturn $arrBack
  37.  */
  38. function handIndex($arrParam, $index = 'k'){
  39.      foreach($arrParam as $key => $val){
  40.         $in = $index.$key;
  41.         $arrBack[$in] = $val;
  42.      }
  43.      return $arrBack;
  44. }
  45.  
  46. /**
  47.  *
  48.  * @param unknown_type $arrMark标杆向量数组(索引被处理过)
  49.  * @param unknown_type $arrAnaly 分析向量数组 (索引被处理过) |array('j0'=>1,'j1'=>2....)
  50.  * @param unknown_type $strMarkMod标杆向量的模
  51.  * @param unknown_type $intLenth 向量的长度
  52.  */
  53. function getCosine($arrMark, $arrAnaly, $strMarkMod ,$intLenth){
  54.     $strVector = 0;
  55.     $strCosine = 0;
  56.     for($i = 0; $i < $intLenth; $i++){
  57.         $strMarkVal = $arrMark['k'.$i];
  58.         $strAnalyVal = $arrAnaly['j'.$i];
  59.         $strVector += $strMarkVal * $strAnalyVal;
  60.     }
  61.     $arrAnalyMod = getMarkMod($arrAnaly); //求分析向量的模
  62.     $strFenzi = $strVector;
  63.     $strFenMu = $arrAnalyMod * $strMarkMod;
  64.     $strCosine = $strFenzi / $strFenMu;
  65.     if(0 !== (int)$strFenMu){
  66.         $strCosine = $strFenzi / $strFenMu;    
  67.     }
  68.     return $strCosine;
  69. }
  70. ?>
  71. //该片段来自于http://outofmemory.cn
  72.  

回复 "php 计算余弦相似性"

这儿你可以回复上面这条便签

captcha