R基于Bayes理论实现中文人员特点的性判定

 

参见 冲中文人员特点的性判定方法 
理论,告诉一个名字,来怀疑是阳是女,多多少少来接触算命的味道。此命题是一模一样栽出监控的修方式,从标注好的训练多少上及一个预计模型,然后对匪标注的多寡进行前瞻。

测试用例编号

N3310_IT_FILEITF_READFILE_004

测试项目

测试模块A提供的文件接口

测试标题

文件B正在被其他进程执行读/写操作,通过A模块的文件接口读取文件B中的数据

重要级别

预置条件

进程XProcess被创建并启动

输入

1、文件B:路径F:\test下面的文件b.txt

操作步骤

1、 进程XProcess开始对文件B进行读写;

2、 通过测试代码调用模块A的文件接口函数ACallFileitf(CStringszFile)szFile=F:\test\b.txt3、 检查结果文件F:\test\result.txt中的内容是否正确

预期输出

F:\test\result.txt文件中的内容是从F:\test\b.txt中提取的,格式符合下面的要求,字段之间用TAB键隔开

姓名 性别  年龄    职业

张三  男    30   无业游民

1、首先,有监督的读方式,就需要如此同样批判标注数据:大量的真名,以及那性。训练多少集参考
SofaSofa-数据正确社区
及其它网页爬取的多少: 

      
上表是测试用例写作的核心格式,主要有八格外要素,分别吗:测试用例编号、测试项目、测试标题、重要级别、预置条件、输入、操作步骤、预期输出。下面依次进行介绍:

2、对下载的多寡进行清洗和特征提取,其流程如下:

1.测试用例编号

  • 基于姓氏辞典把姓氏去丢,留下不带姓氏的名;
  • 参见上等同篇论文,特征有三独维度,分别就此X1,X2,X3(=X1X2)表示。如果是单字名,则X1为空格,X2为单字名,X3就是前两者拼接X1X2,清洗后的数目如下,gname
    (1:男,0:女)
  • 图片 1
  • 数清洗示例代码:
  • remove(list = ls())
    space_path <- c("E:\\Teld_Work\\15_UserProfile\\srccode")
    setwd(space_path)
    Sys.setlocale(category = "LC_ALL",local="chinese")
    

      
 测试用例编号是由字母和数字组成而改为的,用例的号子应该有唯一性,易识别性,比如可应用统一之预约,产品编号_ST_网测试项名_系统测试子项名_编号。不同等级的测试用例有着不同之条条框框:

    ##读取本地数据
    ##数据下载地址:http://sofasofa.io/competition.php?id=3& 及其它网络地址爬取
    tbl1 <- read.table(file = "train.txt",header = TRUE,sep = ",",fill = TRUE,encoding = "UTF-8")
    df <- data.frame(tbl1)

    ##将数据转入SqlServer进行清洗
    chl <- odbcConnect("testsql", uid = "sqladmin", pwd = "123456a?")
    sqlSave(chl,df,tablename = "U_demo")
    close(chl)

    ##获取清洗完成的数据
    library(RODBC)
    chl <- odbcConnect("testsql", uid = "sqladmin", pwd = "123456a?")
    df <- sqlQuery(chl,"select fn1,fn2,fn,gname from U_SexByNameSample")
    close(chl)

    ##将数据转存为本地rda文件
    save(df,file = "sexbyname.rda")

 

       系统测试用例:产品编号-ST-系统测试项名-系统测试子项名-XXX

  • 始于贝叶斯公式,对于名字X1X2,工程实现中,在预计等,莫不会见遇上有风味于训练样本中尚无,则用做一下平坦(比如分子加一个老大粗的值),不然孩子概率都也0,无法预计。
    • P(男|X1X2)=P(男)*P(X1|男)*P(X2|男)*P(X1X2|男)
    • P(女|X1X2)=P(女)*P(X1|女)*P(X2|女)*P(X1X2|女)
    • 特别注意的是,P(X1|男)表示的凡训练样本中,男性用户中,名字第一单字出现X1的票房价值,如果第二只字出现X1,不算是在此处。
  • 以身作则代码如下:
  • remove(list = ls())

    space_path <- c("E:\\Teld_Work\\15_UserProfile\\srccode")
    setwd(space_path)
    
    ##姓名拆分
    buildVe <- function(name)
    {
      len <- nchar(name)
      f2 <- substr(name,len,len)
      f1 <- c("")
      if (len > 2)
      {
        f1 <- substr(name,len-1,len-1)
      }
      fn <- paste0(f1,f2)
    
      return(c(f1,f2,fn))
    }
    

      
 集成测试用例:产品编号-IT-集成测试项名-集成测试子项名-XXX

    #模型  
    naive.bayes.prediction <- function(name) 
    { 
      if (exists("sexDf") == FALSE)
      {
        load("sexbyname.rda")  
      }

      smv <- 0.001;   #解决特征在样本中没有的场景
      vec <- buildVe(name);

      #计算先验概率 
      sex.M <- (sum(sexDf[,4] == "1") + smv)/ length(sexDf[,4]);  
      sex.F <- (sum(sexDf[,4] == "0") + smv)/ length(sexDf[,4]);

      # 计算 name 是男性概率  
      pred.M <-  
        (sum((sexDf[,1] == vec[1]) & (sexDf[,4] == "1")) + smv) / sum(sexDf[,4] == "1") * 
        (sum((sexDf[,2] == vec[2]) & (sexDf[,4] == "1")) + smv) / sum(sexDf[,4] == "1") * 
        (sum((sexDf[,3] == vec[3]) & (sexDf[,4] == "1")) + smv) / sum(sexDf[,4] == "1") * 
        sex.M; 

      # 计算 name 是女性概率  
      pred.F <-  
        (sum((sexDf[,1] == vec[1]) & (sexDf[,4] == "0"))+ smv) / sum(sexDf[,4] == "0") * 
        (sum((sexDf[,2] == vec[2]) & (sexDf[,4] == "0"))+ smv) / sum(sexDf[,4] == "0") * 
        (sum((sexDf[,3] == vec[3]) & (sexDf[,4] == "0"))+ smv) / sum(sexDf[,4] == "0") * 
        sex.F;  

     ## return(list(post.pred.M = pred.M,  
     ##              post.pred.F = pred.F,  
     ##              prediction  = ifelse(pred.M >= pred.F, "男", "女")));  
      return(paste0("pred.M:",pred.M,",pred.F:",pred.F,"; --prediction:",ifelse(pred.M >= pred.F, "男", "女")))
    }  

 

     
  单元测试用例:产品编号-UT-单元测试项名-单元测试子项名-XXX

  • 在事实上使用中,这个模型适合为我们清楚用户姓名可非明了性别之气象,比如有电商网站,一般景象用户订单中填入的收货人姓名且是实事求是的,注册信息遭受恐含有性别而未指谱可能是胡填的,随便写俩人员经过模型预估结果如下:
  • naive.bayes.prediction(“刘德华”)
    [1] “pred.M:2.03045549425324e-09,pred.F:1.68712051662787e-11; –prediction:男”
    naive.bayes.prediction(“张学友”)
    [1] “pred.M:2.24279371989392e-11,pred.F:2.30827962001087e-16; –prediction:男”
    naive.bayes.prediction(“金星”)
    [1] “pred.M:6.28564627624871e-09,pred.F:7.02613664124613e-10; –prediction:男”
    naive.bayes.prediction(“李玉刚”)
    [1] “pred.M:6.06865747851669e-11,pred.F:1.22259348253025e-15; –prediction:男”
    naive.bayes.prediction(“李冰冰”)
    [1] “pred.M:4.61521485457943e-11,pred.F:1.35846175847352e-10; –prediction:女”
    naive.bayes.prediction(“章子怡”)
    [1] “pred.M:4.51645469372974e-09,pred.F:5.16427477696052e-09; –prediction:女”

     

       
这种写法的补益是经过号码就足以一直看下做的是什么测试,测试对象是什么,简单明了,易于管理。

 

2.测试项目

      
当前测试用例所测的类名为,可以是测试用例所属的生类,被测量需求,被测量的模块,或者是吃测的单元。例如:计算器加法功能

系测试用例测试项目:软件需要项如,对诺一个效益点(功能测试),性能指标(性能测试),界面被的控件(GUI测试);

合龙测试用例测试项目:集成后的模块名或接口名如:测试模块A提供的文本接口

单元测试用例测试项目:被测试的函数名如:测试函数int
ReadFile(char *pszFileName)

 

3.测试标题

      
测试标题是针对性测试用例的简便描述,它考虑的是何许完成测试项目,也可以看成是测试目的。用包的言语讲述该测试用例的出发点、关注点。每个测试用例的标题不能够再次,因为每个测试用例的测试点是免平等的。例如:手机当没SIM卡的情事下,拨打119.

 

4.要级别

     重要级别分为高中低三等:

      高:保证系统基本功能、重要特征、实际行使频率比较高的用例;
      中:重要程度在于高以及低之间的测试用例;
     
低:实际采用效率不强,对系统工作功能影响不死的模块或效益的测试用例。

    以手机呢例,高级别需求为:通话、短信(没有这些职能就未是手机了);
                    
中级别需求为:mp3、拍照(没有这些效应会潜移默化手机销售);
                    
低级别需求呢:计步、算命(没有这些职能不见面来无比死影响);

注:一般景象下,重要级别也大之测试用例,一个测试子项里有还仅发生一个,大多数且是生死攸关级别也遭遇的测试用例。因为当测试开始前,一般会展开一个网测试预测试项,如果要级别为胜之卓绝多,就失了预测试的实际意义。

 

5.预置条件

      
预置条件就是执行时测试用例的前提条件,是持续手续的先决条件;如果未饱这些规范,则无从进行测试。例如测试在某贴吧发帖功能,预置条件虽是使来该贴吧账号同时所有发帖权限。

 

6.输入

      
测试用例执行时,需要输入的表信息。有手工输入、某一个文书或者数据库记录等。

 

7.操作步骤

     
执行时测试用例所要经的操作步骤,需要吃来每一样步操作的详细描述,测试人员根据测试用例操作步骤,完成测试用例的实行。要包操作步骤的完整性。

 

8.预期出口     

     
当前测试用例的预想输出结果,包括返回值的情节、界面的响应结果、输出结果的平整符合度等,用来跟事实上结果比,如果相同则该测试用例通过,否则该测试用例失败。 在设定预期输出时得由以下三者拓展考虑:

      1)界面显示;

      2)数据库变化;

      3)相关消息的转移;

     
这里吃来之八项只是测试用例中杀关键之有些,不同商店针对测试用例的著作有两样之渴求,比如有些局要求加上:作者(谁写的)、创建日期(写用例的日期)、修改日期(最后一不好修改用例的日期)、测试结果(执行用例后之结果Pass、Fail、Block)等等信息;具体可以因企业的测试用例模板来。

9.案例

      测试某论坛发帖功能,要求标题在10~80个字符中,内容在200许以上;

用例编号

FORUM_ST_Post_Title_001

测试项目

测试发帖功能

测试标题

题目长度在15个字符  
(输入有效标题及内容)

重要级别

预置条件

发帖用户既登记并具备发帖权限

测试输入

参数1 
标题:软件测试科目纲要    (输入内容要切实)

参数2 
内容:1.软件测试基础  2.软件测试工具3.软件测试项目实战

 操作步骤 

1.进发帖页面

2.各个输入以上2独参数,点击提交按钮

料想输出

1.界面提示提交成功;

2.数据库被能够查看找到发帖记录;

 

用例编号

FORUM_ST_Post_Title_002

测试项目

测试发帖功能

测试标题

题长度不够

重中之重级别

预置条件

发帖用户就报

测试输入

参数1 
标题:软件测试

参数2  内容: 
1.软件测试基础  2.软件测试工具 3.软件测试项目实战

操作步骤

1.登发帖页面

2.逐项输入以上2独参数,点击提交按钮

谅输出

1.界面唤起提交失败;

2.数据库中搜寻无交发帖记录;

       
这里就对标题Title做只大概测试,依此类推,发帖内容也得举行同的测试用例;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图