随笔-7  评论-3  文章-0  trackbacks-0
  2011年9月16日
     摘要: if 语句
使用命令的退出状态
比较和测试输入和文件
if/then/else 结构
if/then/elif/else 结构
使用和测试位置参数
嵌套 if 语句
布尔表达式
使用 case 语句  阅读全文
posted @ 2011-10-18 15:17 柳桐 阅读(416) | 评论 (0)编辑 收藏
future
支持2套模板:Struts1+Spring2+iBatis2;Struts2+Spring3+Hibernate3
考虑支持grails

version0.3.0
模型定义自动填充默认值:
必填项,field和javaType必填,
chs字段应为label,默认为field;
inputItem预填,autoIncrement="true" -> inputItem="false";
itemType项类型预填,方案未定。
支持反向生成,从demo代码生成模板
import更有针对性,能够针对不同类
单元测试

version0.2.0
Y 模型定义自动填充默认值:
表名默认值${package}_${首字母小写clazz};
列名默认为Java字段名;列类型默认为Java对应的类型(除特殊类型外);列长度默认值由字段类型确定;
Dto和Form中的import类自动识别,填入到table/import节点下
Y 支持一对多,下拉列表;以及对自身的一对多;允许一对多时,关联项为空
N 支持多对多的实体关系,复选框;
Y 生成maven的项目
Y 将Integer.parseInt和Long.parseLong改为Integer.valueOf和Long.valueOf
Y Dto和Form默认值
posted @ 2011-10-15 11:15 柳桐 阅读(200) | 评论 (0)编辑 收藏
     摘要: 转载请注明出处 http://www.blogjava.net/fireflyk/   接上文,[OSGi] OSGi + Spring + Web Demo [1] 1.       同样方法创建helloworldweb Bundle,用Maven方式创建并转为PDE Tools。 2.  &nb...  阅读全文
posted @ 2011-10-09 13:12 柳桐 阅读(3377) | 评论 (2)编辑 收藏

转载请注明出处 http://www.blogjava.net/fireflyk/archive/2011/09/25/359447.html

1.       分类

1.1   定义:通过学习得到一个目标函数f,把每个属性集x映射到一个预先定义的类标号y


狭隘地说,有大量数据,预先知道所有的类型,但无法分类,通过将数据的多个属性维度来推测每条数据项属于哪个类型。(,,,) -> 极品帅哥,(,,,) -> 猥琐男。

严格来说,“分类”可以用于描述性建模和预测性建模。

1.2   应用场景

适合预测或描述二元或标称的,对于序数分类,分类技术不太有效,其他形式的联系会被忽略。(复习:标称的,=≠,教师和工人;序数的,<和>,收入高和收入低

例如,前几天看的一个科学研究,个人认为不适合用分类来做。科学家找来志愿者,按臀围大小分为两组做智商测试,发现臀围大的明显比臀围小的智商测试结果高。于是得出结论,臀围大的智商高。我认为,这就是最明显的一个错误,智商高低是序数分类,不能用分类方法来做。它隐藏了一些内在联系,例如智商高的相对来说爱学习、坐办公室、少运动导致肥胖、臀围大。而不是你把臀围搞大就一定能智商高!

1.3   实现方法

训练数据 -> 学习模型 -> 模型 -> 应用模型 -> 校验数据

简单说就是先训练,得出结论再校验。分类方法包括决策树分类法、基于规则的分类法、神经网络、支持向量机和朴素贝叶斯分类法。

模型准确率 = 正确预测数 / 总数

 

2.       决策树分类

2.1   定义

2-1

如上图,通过提出一系列精心构思的问题,可以解决分类问题,每当一个问题得到答案,后续问题将随之解决。

根节点、内部节点都是非终结点,是属性测试条件。叶节点也是终结点,是分类结果。

 

2.2   建立决策树

Hunt算法,是许多决策树算法的基础,包括ID3C4.5CART

训练数据集,(Tid, 有房者, 婚姻状况, 年收入, 拖欠贷款),具体数据见《数据挖掘导论》P94

大量数据是不拖欠贷款的,所以选取类标号,“拖欠贷款=否”。然后选择测试条件“有房者”。接下来,再看生成数种,哪个叶子节点是无法确定到类标号的,无法确定的递归调用如上步骤,选取测试条件“婚姻状况”,然后是“年收入”。一棵决策树建立好了,为何按照这样的顺序?后边解释。

测试条件,可以是二元的(男,女),标称的(单身、已婚、离异),序数的(S号,M号,L号,XL号,分类结果不能是序数的,但是测试条件可以是序数的),连续的(工资是连续属性)。

 

2.3   选择最佳的划分度量

p(i|t)表示给定节点t中属于类i的记录所占的比例,有时候省略t,直接用pi表示。这里介绍不纯性(我称它为区分度,数字越小,区分度越大)度量的一种方法,c是类的个数,


2.3.1          二元属性划分

划分A,结点N1,类C04个,类C13个;结点N2,类C02个,类C13个。

 

N1

N2

C0

4

2

C1

3

3

 

Gini(1) = 1-(4/7)2-(3/7)2 = 24/49

Gini(2) = 1-(2/5)2-(3/5)2 = 12/25

加权Gini = Gini(1) * 7/12 + Gini(2) * 5/12 = 0.486

 

划分B,同理得到Gini=0.371,由此说明划分B更好。

 

N1

N2

C0

1

2

C1

4

5

2.3.2          标称属性划分

与二元属性(一个属性,属性值多元)划分衡量方法相同,有三元或多元(一个属性,属性值多元)的情况,根据计算Gini来决定如何划分(可以划分为多路划分,不局限于两路划分)。

 

2.3.3          连续属性划分

把训练集中每一项都作为一个“<=测试条件”,列出每一个结点下的C0数量和C1数量,计算每一个点的Gini。而事实上,不用每一个点都计算。如《数据挖掘导论》P100中,60,70,75连续且类标号相同,120,125,220连续且类标号相同,所以划分点选取不能切断他们,所以这几个点不用计算Gini值。

 

2.4   决策树归纳特点

会有重复的数据碎片,即存在相同两棵子树,如图2-1

目前为止,每个测试条件只包含一个属性,对于x1+x2<1,也是可以允许的,称为斜决策树。

 

 

posted @ 2011-09-25 13:49 柳桐 阅读(880) | 评论 (0)编辑 收藏
转载请注明出处 http://www.blogjava.net/fireflyk/archive/2011/09/18/358922.html

网上找了很多例子,看了很多资料发现都不能完全重现一个OSGi的Web Demo
本文结合了《OSGi原理与最佳实践》+公司同事的《OSGi开发》+自己的理解。

环境WindowXP + eclipse3.4 + Spring OSGi1.2.1
1. 创建timeservice Bundle,提供输出时间的功能
1.1 eclipse内创建Maven Project,选quickstart project:timeservice,package org.osgichina.demo.timeservice
1.2 创建好后,remove maven的jar包,删掉project中的App和AppTest,在项目上右键->PDE Tools->Convert
1.3
package org.osgichina.demo.timeservice;

public interface TimeService {
    String getCurrentTime();
}

public class TimeServiceImpl implements TimeService {

    
public String getCurrentTime() {
        
return (new Date()).toString();
    }

}

1.4 Spring配置
配置放在META-INF/spring目录下,框架启动时会按照这个路径去寻找配置文件
timeservice.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    
<!-- timeService bean -->
    
<bean name="timeService" class="org.osgichina.demo.timeservice.impl.TimeServiceImpl" />

</beans>

timeservice-osgi.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                      http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"
>

    
<!-- 将timeService 这个bean发布为OSGi服务的定义-->
    
<osgi:service id="osgiTimeService" ref="timeService" interface="org.osgichina.demo.timeservice.TimeService">
    
</osgi:service>

</beans>

这个Bundle到此已经完成了,下一节会讲解helloworldweb Bundle,涉及Import Package,OSGi的启动,Spring+Web的配置等
posted @ 2011-09-18 21:13 柳桐 阅读(2343) | 评论 (1)编辑 收藏
简单介绍,Grails是Groovy的Web框架,可以从名字看出它的特点Groovy+rails=Grails
今天在单位开讲前,同事笑称讲座题目是Girls,呵呵,可别看错了。闲言少叙,下面是例子。

环境WindowsXP

HelloWorld Demo
1. 解压groovy1.8.1和grails1.3.7,分别设定GROOVY_HOME和GRAILS_HOME
2. f: 回车 mkdir grails-app 回车 cd grails-app
3. grails create-app 回车 racetrack
4. cd racetrack 回车 grails run-app
5. 访问 http://localhost:8080/racetrack/

CRUD Demo
1. 接着如上操作。在racetrack路径,
grails create-domain-class 回车 Race 回车
grails create-domain-class 回车 Registration

2. Race.groovy
class Race {
        
        String name
        Date startDateTime
        String city
        String state
        Float distance
        Float cost
        Integer maxRunners 
= 10000
        
        
static hasMany = [registration:Registration]
}

Registration.groovy
class Registration {

    Race race
        String name
        Date dataOfBirth
        String gender 
= 'F'
        String postalAddress
        String emailAddress
        Date createdAt 
= new Date()
        
static belongsTo = Race
        
static optionals = ["postalAddress""gender"]
        
}

3. grails create-controller 回车 Race 回车
grails create-controller 回车 Registration
Race.groovy
class RaceController {
        def scaffold 
= Race
}

Registraion.groovy
class RegistrationController {
        def scaffold 
= Registration
}

4. 运行
  

这个CRUD的例子,不仅支持增删改查,还支持一对多的关联关系,之后会有详细的介绍。
posted @ 2011-09-16 21:32 柳桐 阅读(620) | 评论 (0)编辑 收藏