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


Posted in PHP onAugust 08, 2017

本文实例讲述了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生成便于打印的网页
Oct 09 PHP
PHP冒泡排序算法代码详细解读
Jul 17 PHP
PHP系列学习之日期函数使用介绍
Aug 18 PHP
php中文验证码实现示例分享
Jan 12 PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 PHP
详解将数据从Laravel传送到vue的四种方式
Oct 16 PHP
PHP笛卡尔积实现原理及代码实例
Dec 09 PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 #PHP
PHP 文件锁与进程锁的使用示例
Aug 07 #PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 #PHP
php基于session锁防止阻塞请求的方法分析
Aug 07 #PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 #PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 #PHP
PHP基于IMAP收取邮件的方法示例
Aug 07 #PHP
You might like
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
ezSQL PHP数据库操作类库
2010/05/16 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
php二维码生成以及下载实现
2017/09/28 PHP
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
深入了解python列表(LIST)
2020/06/08 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
Python如何实现远程方法调用
2020/08/07 Python
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
党性教育心得体会
2014/09/03 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
房屋所有权证明
2015/06/19 职场文书
中学图书馆工作总结
2015/08/11 职场文书
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android