2013-09-11 磁针石

第一节

测试集

 

    1 把变量meal的值设置为44.50

测试集要注意可用于测试和可用于训练的数据量之间的权衡。

#承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319

[python] 

选择测试集的另一个需要考虑的是测试集中实例与开发集中的实例的相似程度。这两个数据集越相似,我们对将评估结果推广到其他数据集的信心就越小。

 

#Assign the variable meal the value 44.50 on line 3!  

准确度

#博客:

meal = 44.50  

用于评估一个分类的最简单的度量是准确度。

 

 

解释一个分类器的准确性得分,考虑测试集中单个类标签的频率是很重要的。

#版权所有,转载刊登请来函联系

 第二节

精确度和召回率

 

    1 把变量tax的值设置为6.75%     

•真阳性是相关项目中我们正确识别为相关的。
•真阴性是不相关项目中我们正确识别为不相关的。
•假阳性(或I型错误)是不相关项目中我们错误识别为相关的。
•假阴性(或II型错误)是相关项目中我们错误识别为不相关的。

# 深圳测试自动化python项目接单群113938272深圳广州软件测试开发 6089740

[python]  

给定这四个数字,我们可以定义以下指标:
精确度(Precision),表示我们发现的项目中有多少是相关的,TP/(TP+FP)。
召回率(Recall),表示相关的项目中我们发现了多少,TP/(TP+FN)。
F-度量值(F-Measure)(或F-得分,F-Score),组合精确度和召回率为一个单独的得分,被定义为精确度和召回率的调和平均数(2
×Precision×Recall)/(Precision+Recall)。

 

meal = 44.50  

混淆矩阵

#深圳湖南人业务户外群 66250781武冈洞口城步新宁乡情群49494279

tax = 6.75/100  

一个混淆矩阵表示了错误的信息量。

 

 

可以通过下面的代码来加深理解:

#参考资料:python手册

 第三节

>>> [tag  sent  tagged_sents  (word, tag) >>> [tagger.tag(nltk.tag.untag(sent))  sent >>>gold =tag_list(brown.tagged_sents(categories=>>>test = tag_list(apply_tagger(t2, brown.tagged_sents(categories=>>>cm = nltk.ConfusionMatrix(gold, test)

 

    1 设置tip的值为15%   

得到的结果是:(读者们自行调整一下列,显示的有些太紧凑)

注意

[python]  

| N |
| N I A J N V N|
| N N T J . S , B P |
------+--------------------------------------------------------------------------------------------------+| <11.8%> 0.0% . 0.2% . 0.0% . 0.3% 0.0%|| 0.0% <9.0%> . . . 0.0% . . . || . . <8.6%> . . . . . . || 1.6% . . <4.0%> . . . 0.0% 0.0% || . . . . <4.8%> . . . . || 1.5% . . . . <3.2%> . . 0.0%|| . . . . . . <4.4%> . . || 0.9% . . 0.0% . . . <2.4%> . || 1.0% . . 0.0% . . . . <1.9%>|
-------+----------------------------------------------------------------------------------------------+

HTMLParser的模块已经在Python 3中更名为html.parser。
2to3工具会自动转换import语句到Python3。

#You’re almost there! Assign the tip variable on line 5.  

交叉验证

python2.2新增该模块。

meal = 44.50  

问题背景:

源代码:lib/ HTMLParser.py

tax = 0.0675  

为了评估我们的模型,我们必须为测试集保留一部分已标注的数据。正如我们已经提到,如果测试集是太小了,我们的评价可能不准确。然而,测试集设置较大通常意味着训练集设置较小,如果已标注数据的数量有限,这样设置对性能会产生重大影响。

 

tip = 0.15  

解决方案:

简介

 

这个问题的解决方案之一是在不同的测试集上执行多个评估,然后组合这些评估的得分,这种技术被称为交叉验证。特别是,我们将原始语料细分为N个子集称为折叠(folds)。
对于每一个这些的折叠,我们使用除这个折叠中的数据外其他所有数据训练模型,然后在这个折叠上测试模型。即使个别的折叠可能是太小了而不能在其上给出准确的评价分数,综合评估得分是基于大量的数据,因此是相当可靠的。

该模块定义了一个HTMLParse类作为解析格式化的文本文件HTML(超文本标记语言)和XHTML的基础。不像htmllib的解析器,这个解析器不基于sgmllib模块的SGML解析器。

 第四节

优势:

 

    1 把变量meal的值设置为meal+meal*tax

它可以让我们研究不同的训练集上性能变化有多大。如果我们从所有N个训练集得到非常相似的分数,然后我们可以相当有信心,得分是准确的。另一方面,如果N个训练集上分数很大不同,那么,我们应该对评估得分的准确性持怀疑态度

class HTMLParser.HTMLParser 

[python]  

测试集要注意可用于测试和可用于训练的数据量之间的权衡。
选择测试集的另一个需要考虑的是测试集中实例与开发集中的实例的…

             
 HTMLParser的实例接受html数据,在碰到开始tag,结束tag,文本,注释和其他标记元素时调用对应的处理方法。用户需要继承的HTMLParser并重载一些方法来实现期望的行为。

#Reassign meal on line 7!  

 

meal = 44.50  

               HTMLParser类无任何参数。

tax = 0.0675  

 

tip = 0.15  

             
 不像htmllib的解析器,解析器不检查结束标签是否匹配开始标签,或为隐式关闭标签调用结束标签处理器。

meal = meal+meal*tax  

 

 

另htmllib和sgmllib在python3已经被取消,不建议使用。

 第五节

 

    1 设置变量total的值为meal+meal*tax

异常:

[python]  

 

#Assign the variable total on line 8!  

exception HTMLParser.HTMLParseError

meal = 44.50  

 

tax = 0.0675  

HTMLParser的是能够处理零碎的标签,但在某些情况下,它也可能会遇到错误而引发异常。此异常提供了三个属性:msg是一个简短描述错误的消息,lineno行号,offset列偏移。

tip = 0.15  

 

meal = meal + meal * tax  

 

total = meal + meal * tip  

 

print(“%.2f” % total)  

简单实例:

 

fromHTMLParser import HTMLParser

1 把变量meal的值设置为44.50 [python]
#Assign the variable meal the value 44.50 on line 3! meal = 44.50
第二节 1 把变量tax的值设置为6.75% [python] meal =…

 

fromhtmlentitydefs import name2codepoint

 

 

 

classMyHTMLParser(HTMLParser):

 

    def handle_starttag(self, tag, attrs):

 

        print “Start tag:”, tag

 

        for attr in attrs:

 

            print ”     attr:”, attr

 

    def handle_endtag(self, tag):

 

        print “End tag  :”, tag

 

    def handle_data(self, data):

 

        print “Data     :”, data

 

    def handle_comment(self, data):

 

        print “Comment  :”, data

 

    def handle_entityref(self, name):

 

        c = unichr(name2codepoint[name])

 

        print “Named ent:”, c

 

    def handle_charref(self, name):

 

        if name.startswith(‘x’):

 

            c = unichr(int(name[1:], 16))

 

        else:

 

            c = unichr(int(name))

 

        print “Num ent  :”, c

 

    def handle_decl(self, data):

 

        print “Decl     :”, data

 

 

 

parser= MyHTMLParser()

 

printparser.feed(‘<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML
4.01//EN”””;’)

 

 

 

printparser.feed(‘<img src=”python-logo.png” alt=”The
Pythonlogo”>’)

 

执行结果:

 

Decl     : DOCTYPE HTML PUBLIC “-//W3C//DTDHTML 4.01//EN”
“”

 

None

 

Starttag: img

 

     attr: (‘src’, ‘python-logo.png’)

 

     attr: (‘alt’, ‘The Python logo’)

 

None

 

 

 

HTMLParser的方法:

HTMLParser.feed(data)

 

           
提交文本给解析器。不完整的会缓冲直到更多的数据被送入或close()被调用。数据可以是Unicode(推荐)或str。

 

HTMLParser.close()

 

           
强制处理所有缓冲数据,好像比一个文件结束标志。派生类可以重新定义,在输入结束,而是重新定义的版本应该总是调用HTMLParser的基类方法close()。

 

HTMLParser.reset()

 

            重置实例。所有未处理数据会丢失。

 

 

 

HTMLParser.getpos()

发表评论

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