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 相关文章推荐
3.从实例开始
Oct 09 PHP
MySQL中create table语句的基本语法是
Jan 15 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
Mar 13 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
PHP中的一些常用函数收集
May 26 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 PHP
关于php开启错误提示的总结
Sep 24 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 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
php生成图形验证码几种方法小结
2013/08/15 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
javascript静态的url如何传递
2007/05/03 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
Javascript字符串拼接小技巧(推荐)
2016/06/02 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
python实现静态web服务器
2019/09/03 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
高一政治教学反思
2014/01/28 职场文书
区优秀教师事迹材料
2014/02/10 职场文书
技术总监管理职责范本
2014/03/06 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
岁月神偷观后感
2015/06/11 职场文书
文明礼貌主题班会
2015/08/14 职场文书
三好学生竞选稿
2015/11/21 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
Django程序的优化技巧
2021/04/29 Python