2010年4月1日

最近在摆弄数据离散度的时候遇到一种图形,叫做盒图(boxplot)。它对于显示数据的离散的分布情况效果不错。

盒图是在1977年由美国的统计学家约翰·图基(John Tukey)发明的。它由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。也可以往盒图里面加入平均值(mean)。如上图。下四分位数、中位数、上四分位数组成一个“带有隔间的盒子”。上四分位数到最大值之间建立一条延伸线,这个延伸线成为“胡须(whisker)”。
由于现实数据中总是存在各式各样地“脏数据”,也成为“离群点”,于是为了不因这些少数的离群数据导致整体特征的偏移,将这些离群点单独汇出,而盒图中的胡须的两级修改成最小观测值与最大观测值。这里有个经验,就是最大(最小)观测值设置为与四分位数值间距离为1.5个IQR(中间四分位数极差)。即

  • IQR = Q3-Q1,即上四分位数与下四分位数之间的差,也就是盒子的长度。
  • 最小观测值为min = Q1 - 1.5*IQR,如果存在离群点小于最小观测值,则胡须下限为最小观测值,离群点单独以点汇出。如果没有比最小观测值小的数,则胡须下限为最小值。
  • 最大观测值为max = Q3 -1.5*IQR,如果存在离群点大于最大观测值,则胡须上限为最大观测值,离群点单独以点汇出。如果没有比最大观测值大的数,则胡须上限为最大值。
通过盒图,在分析数据的时候,盒图能够有效地帮助我们识别数据的特征:
  1. 直观地识别数据集中的异常值(查看离群点)。
  2. 判断数据集的数据离散程度和偏向(观察盒子的长度,上下隔间的形状,以及胡须的长度)。

posted @ 2010-04-01 22:22 Norvid 阅读(71521) | 评论 (9)编辑 收藏


2008年4月14日

原文:http://java.ccidnet.com/art/3539/20080413/1418265_1.html

步骤:

1.生成证书

在任意目录下输入以下命令:
%Java_home%\bin\keytool -genkey -alias tomcat -keyalg RSA

依据提示输入各种信息。其中密码一项,Tomcat的keystore默认密码是“changeit”。完成后,keytool会在你的用户主目录下生成一个“.keystore”的文件。

2.配置Tomcat

修改Tomcat的$CATALINA_HOME/conf/server.xml配置文件。找到如下内容:
< !--
< Connector
port="8443" minProcessors="5" maxProcessors="75" enableLookups="true" disableUploadTimeout="true" acceptCount="100" debug="0" scheme="https" secure="true"; clientAuth="false" sslProtocol="TLS"/>
-->
去掉注释,同时增加keystoreFile和keystorePass这两个属性,指定你存放证书的路径(如:keystoreFile="C:/.keystore")和刚才设置的密码(如:keystorePass="123456")。

3.启动Tomcat

启动Tomcat,然后输入地址如https://localhost:8443即可访问。

posted @ 2008-04-14 22:21 Norvid 阅读(492) | 评论 (0)编辑 收藏


2008年3月21日

在08年3月期的“程序员”中,潘加宇的“用例有粒度吗”这篇文章感觉非常好,让我有种茅塞顿开之感。遂作笔记如下。
  1. 做用例前,要先弄清楚研究对象是什么,并时刻提醒自己不要偏离主题。不然会发生“患者到医院挂号”,或者“患者到医院信息系统看病”之类的笑话。
  2. 只要在形式上能写出符合需求标准的路径、步骤,都可以作为用例。注意,是“可以”,并不是“一定”。
  3. 做用例分析时最常犯的错误是:把步骤当作用例。如“取款”用例中的“验证密码”与“扣除帐户金额”,它们是“取款”用例的步骤,而不是其子用例。
  4. include的目的是为了复用有价值的步骤集合。形式往往是多个大用例include一个可复用的用例,即“多个老大include一个小弟”。
  5. 用例是否用对了的一个判断标准是:其是否加强了和涉众的联系。如多级审批中,局长乐意跟科长共享一个审批功能吗?
  6. 层次问题的出现常常是因为把研究对象弄错了,或者将系统契约与非契约混在一起。如将医院的职责“强加”给了医院信息系统。
  7. 讲究“复用”不是需求要考虑的事情,而是设计要考虑的。高焕堂老师说:需求是收益面,设计是成本面。
  8. 用例的步骤应该是回合制的,一个回合内包括一下几类步骤:
    • 1.执行者请求;
    • 2.系统验证(可选);
    • 3.系统改变(可选);
    • 4.系统回应。

posted @ 2008-03-21 00:08 Norvid 阅读(850) | 评论 (0)编辑 收藏


2008年3月19日

在一些大数据量的应用中,通常会将一些数据量大的表分成多个。最简单的情况是设置一个实时表,用来保存最近一段时间的数据,我们叫它recent_data;同时又有一个保存历史数据的表,名叫history_data。当然,也可以采用一段时间一个表的方式,如一个月一张表:data_200803。

recent_data保存最新的数据,通常是为了提供预览、监视等对显示速度要求高的功能,使用者此时往往是想要一个数据的大概印象,因此响应速度十分重要;而history_data则面向详细查询,这时使用者关注的数据,因此,慢是可以接受的。

介绍背景介绍得有点跑题了,还是回来说说正题。面对recent_data和history_data这两张表要使用hibernate进行封装时,该怎么解决呢?

这里有三个方法。

1. 使用古老而笨拙的方法——为每个table建立一个class,如RecentData和HistoryData。然后在上层程序中使用这两个类。
优点:简单,方便,快捷,还不费脑子!(仅对负责Hibernate封装的人来说……)
缺点:上层使用极其复杂,明明就是同一个东西,偏偏弄成两个对象,要写两套实现……&@&*¥#%

2. 建立一个基类Data,然后派生出RecentData和HistoryData,分别映射两个表。派生出的两个类不用写什么东西,仅仅是extends了Data就行了。对外一致以基类Data出现,这样上层使用时,就可以统一用Data类了。此法为第一种方法的改进版,也是我偏爱的解决方法。
优点:Hibernate映射简单,上层使用也简单
缺点:多了两个类,尽管里面啥也没有

3. 使用Hibernate3新增加的entity-name特性,用一个类来映射多个table。这里有一个详细的例子(http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=3150)
优点:不用定义那么多类,映射也挺简单
缺点:Hibernate3才有此功能(如果你还在用之前的版本的话……)

-- EOF --


posted @ 2008-03-19 23:58 Norvid 阅读(1739) | 评论 (0)编辑 收藏


2008年2月23日

     摘要: 原文:http://today.java.net/pub/a/today/2008/02/12/reflection-in-action.html 你曾经为IDE会自动的列举出所有你所编写的类的详情,甚至连私有的字段和方法也“难逃魔掌”而感到惊讶吗?此外,这些IDE居然还能够识别那些并不提供源码并压缩成JAR文件的类。它们是怎么做到的? 这些都是因为反射。 ...  阅读全文

posted @ 2008-02-23 11:37 Norvid 阅读(946) | 评论 (0)编辑 收藏


仅列出标题  

posts - 0, comments - 9, trackbacks - 0, articles - 13

Copyright © Norvid