美文网首页工作生活
有监督分类,名字性别识别

有监督分类,名字性别识别

作者: 青椒rose炒饭 | 来源:发表于2019-07-04 09:50 被阅读0次

分类是为给定的输入选择正确的类标签的任务。标签集是预先定义的。
常见的分类:

  • 判断一封邮件是否为垃圾邮件
  • 从“体育,政治,技术等分类中”判断一篇报道属于哪个分类
    如果分类的建立基于包含每个输入的正确

如果分类的建立基于包含每个输入正确的标签的训练语料,则被称为有监督的分类,使用的框架如下图所示:

有监督分类
训练的时候将每个输入使用特征提取器提取特征,然后和它所对应的标签一起给机器学习算法。分类的时候还是使用相同的特征提取器,提取特征给模型输出它的标签。

性别鉴定

男性和女性的姓名有一些鲜明的特点,以a,e,i结尾的很可能是女性,k,o,r,s结尾的很可能是男性。基于上面的规则编写一个特征提取器。

#定义一个特征提取器
def gender_features(name):
    return {"last_latter":name[-1]}

features = gender_features("Alice")
print(features)

#输出:{'last_latter': 'e'}

函数gender_features()就是一个特征提取器,返回值为一个字典被被称为特征集

import nltk
from nltk.corpus import names
import random
#特征提取器
def gender_features(name):
    return {"last_latter":name[-1]}


names = ([(name,'male') for name in names.words('male.txt')] +
         [(name,'female') for name in names.words('female.txt')]
         )
print(names)
random.shuffle(names)
print(names)

#接下来使用特征提取器处理名称数据,并划分特征集的结果链表为一个训练集和一个测试集。
#训练集用于训练一个新的“朴素贝叶斯”分类器

features = [(gender_features(name),gender) for (name,gender) in names]
train_set,test_set = features[:500],features[500:]
classfier = nltk.NaiveBayesClassifier.train(train_set)
#判断Neo是男是女
print(classfier.classify(gender_features("Neo")))
#输出学习到的分类规则
print("分类规则",classfier.show_most_informative_features())

print("模型准确度",nltk.classify.accuracy(classfier,test_set))
运行结果

下面是我自己默写的上面这个程序的代码,旨在体会一下有监督分类所使用的框架。莫名其妙代码少了很多,也不知道咋回事。


有监督分类
from nltk.corpus import names
import nltk
#特征提取器
def feature_extrator(name):
    return {"last_feature":name[-1]}
#提取特征以及正确的标签
names = ([(feature_extrator(name),"male") for name in names.words('male.txt')] +
         [(feature_extrator(name),'female') for name in names.words('female.txt')]
         )
print(names)
#训练模型
train_ser,test_ser = names[:500],names[500:]
classfier = nltk.NaiveBayesClassifier.train(train_ser)

#提取待分类语料的特征,调用分类器分类
print(classfier.classify(feature_extrator("Neo")))

选择正确的特征

找出那些特征可能是相关的,以及如何表示它们?这个提供的方法是“不断尝试,依靠直觉猜测”。如果为模型提供太多的特征会导致模型在这个训练集上的测试效果好,在其他模型上的训练效果差,这种现象称为过拟合
语料数据应该分为两类三部分,开发集(训练集,开发测试集),测试集。开发的时候使用开发测试集查看模型效果,修改程序。测试集用于最终评定模型。

数据分类

相关文章

  • 有监督分类,名字性别识别

    分类是为给定的输入选择正确的类标签的任务。标签集是预先定义的。常见的分类: 判断一封邮件是否为垃圾邮件 从“体育,...

  • Pycaffe实践 1)分类:性别识别

    问题提出给你一张人像图片,让你分辨照片中的人是男人还是女人(暂时不考虑其他情况)。对人来说, 这是个比较简单的任务...

  • 2(1)监督分类:定义训练样本

    监督分类:用被确认类别的样本像元去识别其他未知类别像元的过程

  • 深度学习的一些基本概念(一)

    申明:非原创,转载自《有监督学习、无监督学习、分类、聚类、回归等概念》 有监督学习、无监督学习、分类、聚类、回归等...

  • 无标题文章

    有监督、无监督和半监督 最简单也最普遍的一类机器学习算法就是分类(classification)。对于分类,输入的...

  • 百群网战略产品数据与服务之时代与趋势

    效率加粉,自动识别数据,智能识别昵称,粉丝性别筛选,精准提升成功率。 聚合管理,同步跨平台数据,智能购物标签分类,...

  • 机器学习基石笔记:03 Types of Learning

    一、学习的分类 根据输出空间:分类(二分类、多分类)、回归、结构化(监督学习+输出空间有结构);根据标签:监督学习...

  • 基于文本及用户信息及社交网络的性别分类

    1 背景及目的 本文旨在研究中文微博用户的性别分类问题,即根据微博提供的中文文本信息对注册用户的性别 进行识别。虽...

  • sklearn手写数据识别 实例

    手写数据识别 数据集任务类型 监督学习分类回归 无监督学习聚类密度估计数据可视化 实现流程 1.模块引用 2.数据...

  • PYTHON分类

    分类简述 分类是一种监督学习算法,根据已知样本的训练集合来识别待测试集中哪一组子集归属哪一类别。实现分类算法的模块...

网友评论

    本文标题:有监督分类,名字性别识别

    本文链接:https://www.haomeiwen.com/subject/lfcchctx.html