分类数据

[白话解析] 深入浅出最大熵模型

。_饼干妹妹 提交于 2020-01-31 16:35:42
[白话解析] 深入浅出最大熵模型 0x00 摘要 本文将尽量使用易懂的方式,尽可能不涉及数学公式,而是从整体的思路上来看,运用感性直觉的思考来解释最大熵模型。并且从名著中找了几个具体应用场景来帮助大家深入这个概念。 0x01 背景概念 1. 什么是熵? 熵这个概念可以从多个角度来理解。 1.1 从物理学角度理解熵 熵最早来原于物理学。德国物理学家鲁道夫·克劳修斯首次提出熵的概念,用来表示任何一种能量在空间中分布的均匀程度,能量分布得越均匀,熵就越大。即,熵是表示物质系统状态的一种度量,用它来表征系统的无序程度。 熵越大,系统越无序,意味着系统结构和运动的不确定和无规则; 熵越小,系统越有序,意味着系统具有确定和有规则的运动状态。 1.2 从系统复杂度理解熵 信息熵还可以作为一个系统复杂程度的度量,即物质系统有序化,组织化,复杂化状态的一种度量。 如果系统越复杂,出现不同情况的种类越多,那么他的信息熵是比较大的。 如果一个系统越简单,出现情况种类很少(极端情况为1种情况,那么对应概率为1,对应的信息熵为0),此时的信息熵较小。 熵越大则该系统不确定性就越大,该系统未来发展就存在越多的可能性。 1.3 熵的推导&定义 熵的定义是:𝐇(𝐱) = −𝒔𝒖𝒎(𝒑(𝒙)𝒍𝒐𝒈𝟐𝒑(𝒙)) 其中,𝑝(𝑥)代表随机事件𝑥的概率,H(X) 就被称为随机变量 x 的熵,它是表示随机变量不确定的度量

NoSQL数据库的四大分类的分析

ⅰ亾dé卋堺 提交于 2020-01-31 09:36:18
分类 Examples 举例 典型应用场景 数据模型 优点 缺点 键值( key-value ) Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 Key 指向 Value 的键值对,通常用 hash table 来实现 查找速度快 数据无结构化,通常只被当作字符串或者二进制数据 列存储数据库 Cassandra, HBase, Riak 分布式的文件系统 以列簇式存储,将同一列数据存在一起 查找速度快,可扩展性强,更容易进行分布式扩展 功能相对局限 文档型数据库 CouchDB, MongoDb Web 应用(与 Key-Value 类似, Value 是结构化的,不同的是数据库能够了解 Value 的内容) Key-Value 对应的键值对, Value 为结构化数据 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 查询性能不高,而且缺乏统一的查询语法。 图形 (Graph) 数据库 Neo4J, InfoGrid, Infinite Graph 社交网络,推荐系统等。专注于构建关系图谱 图结构 利用图结构相关算法。比如最短路径寻址, N 度关系查找等 很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群

PythonML-Day02: k-近邻、朴素贝叶斯、决策树、随机森林、交叉验证、网格搜索

核能气质少年 提交于 2020-01-30 20:41:55
ML-Day02: k-近邻、朴素贝叶斯、决策树、随机森林、交叉验证、网格搜索 1.数据分类 离散型数据:可以列举出 连续型数据:在区间内可任意划分,不可一一列举 2.机器学习算法分类 监督学习(预测):有特征值和目标值,有标准答案 分类[离散]:k近邻、贝叶斯、决策树与随机森林、逻辑回归、神经网络 回归[连续]:线性回归、岭回归 非监督学习: 只有特征值,没有保准答案 聚类:k-means 3.机器学习开发流程 - 原始数据: 公司本身有数据/ 合作数据/ 购买数据/ - 明确公司要做什么: 建立模型,是分类还是回归? - 数据基本的处理: pd 去处理数据(缺失值,合并表等等) - 特征工程:特征抽取/ 归一化/ 标准化/ 特征选择/ 主成分分析 - 找对应的算法去生产模型: 模型 = 算法 + 数据 - 模型的评估: 判定效果 - 评估优秀,上线使用,进行数据预测 - 评估失败,特征工程是否有问题、调参数、换算法等 4.划分数据集 - 训练集 75% - 用于训练,构建模型 - 测试集 25% - 用于检测模型,评估模型是否有效 - sklearn.model_selection.train_test_split - li = load_iris() # 注意返回值的顺序 # 训练特征值x_train # 测试特征值x_test # 训练目标值y_train # 测试目标值y

Adaboost算法及其代码实现

偶尔善良 提交于 2020-01-30 01:06:11
Adaboost算法及其代码实现 算法概述 AdaBoost(adaptive boosting),即自适应提升算法。 Boosting 是一类算法的总称,这类算法的特点是通过训练若干弱分类器,然后将弱分类器组合成强分类器进行分类。 为什么要这样做呢?因为弱分类器训练起来很容易,将弱分类器集成起来,往往可以得到很好的效果。 俗话说,"三个臭皮匠,顶个诸葛亮",就是这个道理。 这类 boosting 算法的特点是各个弱分类器之间是串行训练的,当前弱分类器的训练依赖于上一轮弱分类器的训练结果。 各个弱分类器的权重是不同的,效果好的弱分类器的权重大,效果差的弱分类器的权重小。 值得注意的是,AdaBoost 不止适用于分类模型,也可以用来训练回归模型。 这需要将弱分类器替换成回归模型,并改动损失函数。 $几个概念 强学习算法 :正确率很高的学习算法; 弱学习算法 :正确率很低的学习算法,仅仅比随机猜测略好。 弱分类器 :通过弱学习算法得到的分类器, 又叫基本分类器; 强分类器 :多个弱分类器按照权值组合而成的分类器。 $提升方法专注两个问题: 1.每一轮如何改变训练数据的权值或者概率分布: Adaboost的做法是提高被分类错误的训练数据的权值,而提高被分类错误的训练数据的权值。 这样,被分类错误的训练数据会得到下一次弱学习算法的重视。 2.弱组合器如何构成一个强分类器 加权多数表决 。

文本分类(三) | (3) 数据预处理

淺唱寂寞╮ 提交于 2020-01-30 00:25:14
完整项目 ​​​​​​​ 本篇博客主要介绍一下数据预处理,包括构建数据集和迭代器。由于预训练语言模型有相应的词表文件,所以不需要手动构建词典,不过在预处理阶段,需要指明输入序列的填充部分和非填充部分。 目录 1. 构建数据集 2. 构建迭代器 1. 构建数据集 PAD, CLS = '[PAD]', '[CLS]' # padding符号, bert中综合信息符号 def build_dataset(config): def load_dataset(path, pad_size=32): contents = [] with open(path, 'r', encoding='UTF-8') as f: for line in tqdm(f):#遍历每一行 lin = line.strip()#去掉首尾空白符 if not lin:#遇到空行 跳过 continue content, label = lin.split('\t')#text label;每一行以\t为切分,拿到文本 token = config.tokenizer.tokenize(content) #分字(汉语 character-level) bert内置的tokenizer token = [CLS] + token #头部加入 [CLS] token seq_len = len(token)

机器学习实战之决策树基础笔记

柔情痞子 提交于 2020-01-30 00:06:44
决策树的优缺点 优点 计算复杂度不高 输出结果容易理解 对中间值的缺失不敏感 可以处理不相关特征数据 缺点 可能会产生过度匹配问题 决策树原理 《机器学习实战》书中讲了二十个问题的游戏的一个例子:就是参与游戏的一方脑子里想着某个事物。其他参与者可以向他提29个问题,但是答案只能用对错来回答。比如最简单的猜数游戏。我心里想一个数是7.然后A说你心里想的数比100小。然后我说正确。然后B说你心里想的数比10大,我说回答错误。然后C、D、E等人继续提问,直到那个数的范围越来越小,直到猜中答案。决策树的工作原理就是这样,用户给出一系列数据,然后给出游戏的答案。 相比于书中给出的邮件的例子,我更喜欢Jack Cui的例子,便于理解。所以下文中所有的例子以Jack Cui的例子为主。 如下就是一个决策树的树状图。决策树的结构主要是由结点和有向边组成。结点分为内部结点和叶结点。内部节点用来表示一个特征或者一个属性。叶结点表示一个类。长方形和椭圆形都是结点。长方形属于内部结点,下面还有分支或者叶结点。椭圆形是叶结点,下面没有分支。是结束。 对上图中的一些元素进行解释: 长方形代表判断模块 椭圆形代表终止模块,用于得到结论 从长方形(判断模块)出来的箭头是分支,可以到达另一个模块或者终止模块 流程图解释 这是一个简单的岳母相亲的分类模型。就是岳母来了先问问你有没有房子车子啊,如果有的话

人工智能、机器学习及深度学习的起源和发展

风格不统一 提交于 2020-01-29 00:02:45
人工智能、机器学习及深度学习的起源和发展 发展时间线 第一阶段:人工智能起步期 1956—1980s 1956达特茅斯会议标志AI诞生 1957神经网络Perceptron被罗森布拉特发明 1970受限于计算能力,进入第一个寒冬 第二阶段:专家系统推广 1980s—1990s 1980 XCON专家系统出现,每年节约4000万美元 1986 BP ,Geoffrey Hinton提出了前馈算法,一个通过对输入数据按照重要进行排序的精准神经网络。 1989 卷积,Yann LeCun写了另外一篇旷世之作,描述了卷积神经网络。这些发现突破了计算机难以解决的问题,譬如从一张照片中找到一只猫。 1990——1991 人工智能计算机DARPA没能实现,政府投入缩减,进入第二次低谷 1997 IBM的DeepBlue战胜国际象棋冠军 1997 Schmidhuber发明了长短期记忆网络(LSTM) 第三阶段:深度学习 2000s—至今 2006 Hinton提出“深度学习”的神经网络 2011 苹果的Siri问世,技术上不断创新 2012 Google无人驾驶汽车上路(2009年宣布) 2012年,计算机视觉界顶级比赛ILSVRC中,多伦多大学Hinton团队所提出的深度卷积神经网络结构AlexNet一鸣惊人,同时也拉开了深度卷积神经网络在计算机视觉领域广泛应用的序幕。成功原因 大量数据,

文本分类(二) | (1) 项目介绍

a 夏天 提交于 2020-01-28 12:36:10
文本分类(二)专栏主要是对Github优秀文本分类项目的解析,该文本分类项目,主要基于深度学习模型,包括TextCNN、TextRNN、FastText、TextRCNN、BiLSTM_Attention、DPCNN、Transformer,使用PyTorch实现。 目录 1. 项目特点 2. 数据集 3. 项目组织结构 4. 使用方式 1. 项目特点 相比于文本分类(一),它主要有以下几个不同: 1)提供了一种不同的数据预处理方式。文本分类(一)中我们使用的是THUCNews完整数据集,每条数据都是完整的新闻,属于篇章分类;文本分类(二),我们使用的是THUCNews的一个子集,每条数据都是从新闻中抽取的标题,属于标题(短文本)分类。之前我们是提前把数据预处理好,存储为数组或tensor的格式,训练时再从文件中加载,适合数据量比较大的情况;现在我们预处理和训练同时进行,将数据预处理完接着进行训练,不需要存储为中间文件,适合数据量比较小的情况。 2)数据生成器:当数据比较大时,没办法一次性把数据全部加载到内存或显存中,此时我们可以使用数据生成器。训练时,不是把全部数据都加载到内存或显存中,而是用到哪一部分数据(某个batch),就用数据生成器生成该部分数据,只把这部分数据加载到内存或显存中,避免溢出。在文本分类(一)中,我们把预处理好的数据想封装为Dataset对象

Django 数据聚合函数 annotate

隐身守侯 提交于 2020-01-28 06:11:09
统计各个分类下的文章数 2 周,3 日前 字数 3818 阅读 546 评论 21 在我们的博客侧边栏有分类列表,显示博客已有的全部文章分类。现在想在分类名后显示该分类下有多少篇文章,该怎么做呢?最优雅的方式就是使用 Django 模型管理器的 annotate 方法。 模型回顾 回顾一下我们的模型代码,Django 博客有一个 Post 和 Category 模型,分别表示文章和分类: blog/models.py class Post(models.Model): title = models.CharField(max_length=70) body = models.TextField() category = models.ForeignKey('Category') # 其它属性... def __str__(self): return self.title class Category(models.Model): name = models.CharField(max_length=100) 我们知道从数据库取数据都是使用模型管理器 objects 的方法实现的。比如获取全部分类是: Category.objects.all() ,假设有一个名为 test 的分类,那么获取该分类的方法是: Category.objects.get(name='test')

task5 贝叶斯

爱⌒轻易说出口 提交于 2020-01-26 08:33:15
知识点梳理¶ 相关概念(生成模型、判别模型) 先验概率、条件概率 贝叶斯决策理论 贝叶斯定理公式 极值问题情况下的每个类的分类概率 下溢问题如何解决 零概率问题如何解决? 优缺点 sklearn 自带代码块 from sklearn . naive_bayes import GaussianNB from sklearn . datasets import load_iris import pandas as pd from sklearn . model_selection import train_test_split iris = load_iris ( ) X_train , X_test , y_train , y_test = train_test_split ( iris . data , iris . target , test_size = 0.2 ) clf = GaussianNB ( ) . fit ( X_train , y_train ) print ( "Classifier Score:" , clf . score ( X_test , y_test ) ) 相关概念 生成模型:在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。它给观测值和标注数据序列指定一个联合概率分布。在机器学习中