仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2803|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP完成复杂线性回归之数据研讨东西

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:15:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
理解动态语言的概念,运做机制,熟悉PHP语法数据   概念

  复杂线性回归建模面前的根基方针是从成对的 X值和 Y值(即 XY丈量值)构成的二维立体中找到最吻合的直线。一旦用 最小方差法找到这条直线,就能够履行各类统计测试,以肯定这条直线与不雅测到的 Y值的偏离量吻合水平。

  线性方程( y = mx + b)有两个参数必需依据所供应的 XY数据预算出来,它们是斜率( m)和 y 轴截距( b)。一旦预算出这两个参数,就能够将不雅测值输出线性方程,并察看方程所生成的 Y展望值。

  要利用最小方差法预算出 mb参数,就要找到 m 和 b 的估量值,使它们关于一切的 X值失掉的 Y值的不雅测值和展望值最小。不雅测值和展望值之差称为误差( y i- (mx i+ b) ),而且,假如对每一个误差值都求平方,然后求这些残差的和,其了局是一个被称为 展望平方差的数。利用最小方差法来肯定最吻合的直线触及寻觅使展望方差最小的 mb的估量值。

  可以用两种根基办法来找到知足最小方差法的估量值 mb。第一种办法,可使用数值搜刮进程设定分歧的 mb值并对它们求值,终究决意发生最小方差的估量值。第二种办法是利用微积分找到用于预算 mb 的方程。我不盘算深切会商推导出这些方程所触及的微积分,但我的确在 SimpleLinearRegression 类中利用了这些剖析方程,以找到 mb 的最小平方估量值(请参阅 SimpleLinearRegression 类中的 getSlope() 和 getYIntercept 办法)。

  即便具有了可以用来找到 mb的最小平方估量值的方程,也其实不意味着只需将这些参数代入线性方程,其了局就是一条与数据优秀吻合的直线。这个复杂线性回归过程当中的下一步是肯定其他的展望方差是不是可以承受。

  可使用统计决议计划进程来否决“直线与数据吻合”这个备择假定。这个进程基于对 T 统计值的盘算,利用几率函数求得随机大的不雅测值的几率。正如第 1 局部所提到的, SimpleLinearRegression 类生成了为数浩瀚的汇总值,个中一个主要的汇总值是 T 统计值,它可以用来权衡线性方程与数据的吻合水平。假如吻合优秀,则 T 统计值常常是一个较大的值;假如 T 值很小,就应当用一个缺省模子取代您的线性方程,该模子假定 Y值的均匀值是最好展望值(由于一组值的均匀值凡是可所以下一个不雅测值的有效的展望值)。

  要测试 T 统计值是不是大到可以不必 Y值的均匀值作为最好展望值,需求盘算随机取得 T 统计值的几率。假如几率很低,那就能够不采取均匀值是最好展望值这一有效假定,而且响应地可以确信复杂线性模子是与数据优秀吻合的。(有关盘算 T 统计值几率的更多信息,请参阅第 1 局部。)

  回过火会商统计决议计划进程。它告知您什么时候不采取有效假定,却没有告知您是不是承受备择假定。在研讨情况中,需求经由过程实际参数和统计参数来创立线性模子备择假定。

  您将构建的数据研讨东西完成了用于线性模子(T 测试)的统计决议计划进程,并供应了可以用来机关实际和统计参数的汇总数据,这些参数是创立线性模子所需求的。数据研讨东西可以归类为决议计划撑持东西,供常识任务者在中小范围的数据集中研讨形式。

  从进修的角度来看,复杂线性回归建模值得研讨,由于它是了解更初级模式的统计建模的殊途同归。例如,复杂线性回归中的很多中心概念为了解屡次回归(Multiple Regression)、要素剖析(Factor Analysis)和工夫序列(Time Series)等创立了优秀的基本。

  复杂线性回偿还是一种多用处的建模手艺。经由过程转换原始数据(凡是用对数或幂转换),可以用它来为曲线数据建模。这些转换可使数据线性化,如许就能够利用复杂线性回归来为数据建模。所生成的线性模子将被暗示为与被转换值相干的线性公式。

  几率函数

  在前一篇文章中,我经由过程交由 R 来求得几率值,从而避开了用 PHP 完成几率函数的成绩。我对这个处理计划并不是完整写意,因而我入手下手研讨这个成绩:开辟基于 PHP 的几率函数需求些甚么。

  我入手下手上彀查找信息和代码。一个二者兼有的来历是书本 Numerical Recipes in C 中的几率函数。我用 PHP 从头完成了一些几率函数代码( gammln.c 和 betai.c 函数),但我对了局仍是不写意。与其它一些完成比拟,其代码仿佛多了些。另外,我还需求反几率函数。

  侥幸的是,我偶尔发明了 John Pezzullo 的 Interactive Statistical Calculation。John 关于 几率散布函数的网站上有我需求的一切函数,为便于进修,这些函数已用 JavaScript 完成。

  我将 Student T 和 Fisher F 函数移植到了 PHP。我对 API 作了一点修改,以便合适 Java 定名作风,并将一切函数嵌入到名为 Distribution 的类中。该完成的一个很棒的功效是 doCommonMath 办法,这个库中的一切函数都重用了它。我没有消费力量去完成的其它测试(正态测试和卡方测试)也都利用 doCommonMath 办法。

  此次移植的另外一个方面也值得注重。经由过程利用 JavaScript,用户可以将静态肯定的值赋给实例变量,比如:
  1. var PiD2 = pi() / 2
复制代码
  在 PHP 中不克不及如许做。只能把复杂的常量值赋给实例变量。但愿在 PHP5 中会处理这个缺点。

  请注重 清单 1中的代码并不决义实例变量 ― 这是由于在 JavaScript 版本中,它们是静态付与的值。

  清单 1. 完成几率函数
  1. <?php // Distribution.php // Copyright John Pezullo // Released under same terms as PHP. // PHP Port and OO'fying by Paul Meagher class Distribution { function doCommonMath($q, $i, $j, $b) { $zz = 1; $z = $zz; $k = $i; while($k <= $j) { $zz = $zz * $q * $k / ($k - $b); $z = $z + $zz; $k = $k + 2; } return $z; } function getStudentT($t, $df) { $t = abs($t); $w = $t / sqrt($df); $th = atan($w); if ($df == 1) { return 1 - $th / (pi() / 2); } $sth = sin($th); $cth = cos($th); if( ($df % 2) ==1 ) { return 1 - ($th + $sth * $cth * $this->doCommonMath($cth * $cth, 2, $df - 3, -1)) / (pi()/2); } else { return 1 - $sth * $this->doCommonMath($cth * $cth, 1, $df - 3, -1); } } function getInverseStudentT($p, $df) { $v = 0.5; $dv = 0.5; $t = 0; while($dv > 1e-6) { $t = (1 / $v) - 1; $dv = $dv / 2; if ( $this->getStudentT($t, $df) > $p) { $v = $v - $dv; } else { $v = $v + $dv; } } return $t; } function getFisherF($f, $n1, $n2) { // implemented but not shown } function getInverseFisherF($p, $n1, $n2) { // implemented but not shown } } ?>
复制代码
[code]</p>
[1] [2] [3] [4] [5] 下一页  

  你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹是写了一个动态网站程序了,放在自己的网站上耍耍吧。
飘灵儿 该用户已被删除
沙发
发表于 2015-2-4 10:13:43 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
小女巫 该用户已被删除
板凳
发表于 2015-2-5 18:29:56 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-13 02:14:26 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
再现理想 该用户已被删除
5#
发表于 2015-2-27 05:07:44 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
蒙在股里 该用户已被删除
6#
发表于 2015-3-4 10:53:32 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
若天明 该用户已被删除
7#
发表于 2015-3-5 09:23:44 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
第二个灵魂 该用户已被删除
8#
发表于 2015-3-12 02:30:55 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-13 09:28:30 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
乐观 该用户已被删除
10#
发表于 2015-3-20 18:55:07 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
不帅 该用户已被删除
11#
发表于 2015-3-24 03:16:09 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
兰色精灵 该用户已被删除
12#
发表于 2015-3-25 11:14:11 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
冷月葬花魂 该用户已被删除
13#
发表于 2015-3-27 00:39:36 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
若相依 该用户已被删除
14#
发表于 2015-4-24 15:36:53 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
小妖女 该用户已被删除
15#
发表于 2015-4-28 17:51:15 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
精灵巫婆 该用户已被删除
16#
发表于 2015-4-29 08:46:07 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
爱飞 该用户已被删除
17#
发表于 2015-5-1 18:09:34 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
18#
发表于 2015-5-6 01:54:39 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
只想知道 该用户已被删除
19#
发表于 2015-5-9 13:11:25 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
柔情似水 该用户已被删除
20#
发表于 2015-7-16 20:01:02 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表