Python数据预处理

2021/11/19 11:11:47

本文主要是介绍Python数据预处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Python数据预处理技术与实践

1. 概述

  1. 数据预处理:

    • 数据清理
    • 数据集成
    • 数据规约
    • 数据变换(按照预先设计好的规则对抽取的数据进行转换,如把数据压缩到0.0~1.0区间)
    • 数据降维
  2. 原始数据存在数据不完整、数据偏态、数据噪声、数据特征维度高、数据缺失值、数据错误值等问题

  3. 搜索引擎是中文分词的一个应用

  4. 相关度排序:把最相关的结果排在最前面。受中文分词的准确度影响。

2. Python科学计算工具

  • NumPy
  • SciPy
  • Pandas

3. 数据采集与存储

  1. 数据形式:

    • 结构化数据:存储和排列有规律,但扩展性差。

    • 半结构化数据:

      • 扩展性很好
      • 邮件系统、档案系统、新闻网站等
      • 网络爬虫、数据解析等方式采集。
    • 非结构化数据:

      • 文档、图片、音视频等,存储为二进制的数据格式

      • 图片识别、人脸识别、医疗影像、文本分析等

      • 网络爬虫、数据存档等方式采集。

  2. Scrapy:一个为爬取网络数据、提取结构化数据而设计的应用程序框架。

    • img
    • 新建爬虫项目

      1. # 1.安装scrap
        pip install scrap
        
        # 2.创建爬虫项目
        scrapy startproject BoLeSpider
        # scrapy.cfg:项目的配置文件
        # BoLeSpider/:项目的python模块,将会从这里饮用代码
        # BoLeSpider/items.py:项目的目标文件
        # BoLeSpider/popelines.py:项目的管道文件
        # BoLeSpider/settings.py:项目的设置文件
        # BoLeSpider/spiders/:存储爬虫代码的目录
        
        # 3.BoLeSpider下创建爬虫目录
        >> cd BoLeSpider
        >> scrapy genspider jobbole http://www.jobbloe.com/
        
        # 4.在同级目录下,调用爬虫主程序
        scrapy crawl jobbole
        
        # 5.在BoLeSpider目录下创建main.py,与4.执行效果一致,单独封装是为了调试和运行的便利
        # -*- coding: utf-8 -*-
        
        import sys,os
        from scrapy.cmdline import execute
        
        sys.path.append(os.path.dirname(os.path.abspath(_file_)))
        execute(["scrapy", "crawl", "jobble"])
        
      2. # 1.跳过错误页面继续爬取,更改setting.py文件
        ROBOTSTXT_OBEY = False
        ITEM_PIPELINES = {
        	'BoLeSpider.pipelines.BolespiderPipeline': 1,
        }
        # BoLeSpider.pipelines.BolespiderPipeline BolespiderPipeline必须与pipilines中类名一致
        
        # 2.http://www.jobbole.com/zhengquan/xg/184330/ 爬取内容
        # 3.http://www.jobbole.com/zhengquan/xg/184330/ 查看源代码
        cd BoLeSpider
        scrapy shell http://www.jobbole.com/zhengquan/xg/184330/ 
        # 4.开始对每个特征进行测试
        title = response.xpath('/html/body/div[3]/div[1]/div[3]/div[1]/h1/text()').extract()
        # 5.使用xpath方法获取
        # 6.使用CSS方法
        
        
        • 获取文章的数据有两种方式:基于xpath和CSS。

4. 文本信息抽取

  1. 文本抽取形式:将采集到的不同类型文档统一处理成文本信息或者特征矩阵,得到高质量的数据集,然后将数据集放进算法模型中来挖掘其背后的价值。
  2. Pywin32:从Python访问Windows API的功能。
  3. 文本批量编码:UTF-8

5. 文本数据清洗

  1. 正则表达式:被用来检索、替换那些匹配某个模式的文本。

    • 设计思想:用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,就认为它“匹配”了

    • 清洗文本数据、处理HTML网页数据

  2. 简繁字体转换:zhtools工具包

6. 中文分词技术

  1. 关于统计模型的中文分词方法:

    • 基于字符串匹配的分词方法:基于词典匹配,将待分词的中文文本根据一定的规则切分和调整,然后跟词典中的词语进行匹配,匹配成功则按照词典的词进行分词,匹配失败则调整或者重新选择,如此反复循环即可。代表方法:基于正向最大匹配和基于逆向最大匹配以及双向匹配法。

    • 基于理解的分词方法:通过专家系统或者机器学习神经网络模拟人的理解能力。

      前者是通过专家对分词规则的 逻辑推理并总结形成特征规则,不断迭代完善规则,其受到资源消耗大和算法复杂度高的制约。

      后者通过机器模拟人类理解的方式,虽可以去的不错的效果,但是依旧受训练时间长和过度拟合的那个因素困扰。

    • 基于统计的分词方法:

      • 基于隐马尔可夫模型的中文分词方法:通过文本作为观测序列去确定隐藏序列的过程。

        该方法采用Viterbi算法对新词的识别效果不错,但是具有生成式模型的特点,需要计算联合概率,因此随着文本的增大存在计算量大的问题。

      • 基于最大熵模型的中文分词方法:学习概率模型时,在可能的概率分布模型中,以熵最大的进行切分。

        该法可以避免生成模型的不足,但是存在偏移量问题。

      • 基于条件随机场模型的中文分词方法:基本思想主要来源于最大熵马尔可夫模型,主要关注的字跟上下文标记位置有关,进而通过解码找到词边界。

        需要大量训练语料,而训练和解码又非常耗时。

    关于词典和规则的方法其分词速度较快,但是在不同领域取得的效果差异很大,还存在构造费时费力、算法复杂度高、移植性差等缺点。基于统计的痛次,虽然相较于规则的方法能取得不错的效果,但也依然存在模型训练时间长、分词速度慢等问题。

    本文提出基于隐马尔可夫统计模型和自定义词典结合的方法,其在分词速度、歧义分析、新词发现和准确率方面都具有良好的效果。

  2. 结巴分词:基于Python的中文分词工具。

    • 特征:

      • 三种分词模式:可以实现自定义调整词典、关键词提取、词性标注和句法分析等功能。
        • 全模式分词:把所有可以成词的词语都扫描出来,速度非常快,但不能解决歧义。
        • 精确模式分词:试图将句子最精确地切开,适合文本分析。
        • 搜索引擎模式分词:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
      • 支持繁体分词
      • 支持自定义词典
      • MIT授权协议
    • 核心方法:

      • jieba.cut方法:可接受三个输入参数,分词的字符串、cut_all参数(用来控制是否采用全模式)和HMM参数(用来控制是否使用HMM模型(隐马尔可夫模型))
      • jieba.cut_for_search:接收两个参数,一是需要分词的字符串,二是是否使用HMM模型(该方法使用于搜索引擎构建倒排索引的分词,粒度比较细)
      • 待处理的字符串:unicode、UFTF-8、GBK编码格式。不建议直接输入GBK字符串,可能会出现无法预料的错误——解码成UFTF_8。
      • 这两个方法返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(Unicode编码)
      • 两个方法直接返回列表(List)
      • 可以使用jieba.Tokenizer(dictionary=DEFAULT_DICT)新建自定义分词器,用于同时使用不同的词典。jieba.dt 为默认的分词器,所有全局分词相关的函数都是该分词器的映射。
    • 自定义调整词典:使用add_word(word, freq=None, tag=None)在程序中动态修改词典。

    • 关键词提取:extract_tags 三个参数:待处理的字符串、提取前n个词和是否根据权重设置。

      import jieba
      import jieba.analyse as analyse
      
      s = "11月9日0—24时,31个省(自治区、直辖市)和新疆生产建设兵团报告新增确诊病例54例。其中境外输入病例15例(上海3例,山东3例,广西3例,北京1例,辽宁1例,吉林1例,河南1例,广东1例,云南1例),含2例由无症状感染者转为确诊病例(河南1例,广西1例);本土病例39例(辽宁17例,均在大连市;河南8例,其中郑州市7例、周口市1例;河北5例,均在辛集市;黑龙江4例,均在黑河市;江西2例,均在上饶市;云南2例,均在德宏傣族景颇族自治州;四川1例,在成都市),含6例由无症状感染者转为确诊病例(均在河南)。无新增死亡病例。新增疑似病例1例,为境外输入病例(在上海)"
      for x, w in jieba.analyse.extract_tags(s,10,withWeight=True):
      	print("%s %s" % (x, w))
      
    • 词性标注:

      import jieba
      import jieba.posseg as posseg
      
      words = jieba.posseg.cut("我爱北京天安门")
      for word, flag in words:
      	print('%s %s'% (word, flag))
      
  3. HanLP分词是由Java语言开发的分词工具,Python想调用该分词工具,需要借助JPype1包。JPype1是Python调用Java库文件的模块。

    pip install jpype1

    from jpype import *
    
    # 调用HanLP的java包,如下路径下载并解压c盘即可:
    # 启动JVM,Linux需替换分号;为冒号:
    startJVM(getDefaultJVMPath(), "-Djava.class.path=/Users/hxh/Desktop/hxh/software/HanLP/hanlp-1.7.8-release/hanlp-1.7.8.jar:Users/hxh/Desktop/hxh/software/HanLP", "-Xms1g", "-Xmx1g")
    
    
    paraStr1='中国科学院计算技术研究所的宗成庆教授正在教授自然语言处理课程'
    
    print("="*30+"HanLP分词"+"="*30)
    HanLP = JClass('com.hankcs.hanlp.HanLP')
    print(HanLP.segment(paraStr1))
    
    shutdownJVM()
    

    报错:

    请将hanlp.properties放在下列目录:
    Web项目则请放到下列目录:
    Webapp/WEB-INF/lib
    Webapp/WEB-INF/classes
    Appserver/lib
    JRE/lib
    并且编辑root=PARENT/path/to/your/data
    现在HanLP将尝试从/Users/hxh/Desktop/hxh/practice/sublime读取data……
    

    解决:

    修改hanlp.properties文件,将目录改为 root=/Users/hxh/Desktop/hxh/practice/sublime

    (data和当前python文件存放在同一个目录下)

  4. NLTK:收集大量公开数据集,模型上提供了全面易用的借口,覆盖了分词、词性标注、命名实体识别、句法分析等功能,广泛应用于经验语言学、认知科学、人工智能、信息检索和机器学习领域。

    • 报错:ImportError: No module named nltk

      python文件名不能为nltk.py

7. 文本特征向量化

目的是将文本数据向量化,便于算法模型对数据进行处理。

  1. 解析数据文件

  2. 缺失值处理方法:

    • 删除元组
    • 不处理
    • 数据补齐:
      • 人工填写
      • 特殊值填充
      • 平均值填充
      • 热卡填充
      • K最近距离邻法
      • 组合完整化方法
      • 回归
      • 期望值最大化方法
      • 多重填补
  3. 均值法处理数据缺失值:

    • 加载数据集:loadDataSet(fileName, delim=’’)

      fileName待处理文件路径,必须参数。delim是每行文本信息分隔符,属于可选参数,默认为制表符。

    • NaN替换成平均值函数:

      找到每列数据非0、非NAN数据的均值,然后对缺少的数据进行均值填充。

  4. Pandas处理缺失值

    • 均值填充法
    • 标量值替换法:采用一个对数据结果影响不大的标量值填充到缺失值里面
    • 向前和向后填充法:向前使用的是哪只函数fillna,并将参数设为pad;向后将参数设为backfill。
    • 忽略无效值法
  5. 数据的归一化处理

    归一化是把需要处理的数据经过处理后限制在0~1之间的统计的概率分布。目的是让算法收敛的更快,以提升模型拟合过程的计算效率。

    1. 好处:
      • 归一化后加快了梯度下降求最优解的速度。
      • 归一化有可能提高精度。
    2. 归一化原理:newValue = (oldValue - min) / (max - min)
    3. 优点:
      • 对数据的数值范围进行特定缩放,不改变其数据分布
      • 提高迭代求解的收敛速度
      • 提高迭代求解的精度
    4. 0/1取值的数据特征不需要归一化处理,归一化会破坏它的稀疏性。决策树和基于平方损失的最小二乘法也不需要。
  6. 特征词转文本向量

    • 对该文档进行数据清洗、分词及停用词处理
    • 统计所有文档的特征词集即包含所有文档的不重复特征词
    • 统计词频
  7. 词频—逆词频(TF-IDF)

    有些情况下,单独以词频判断词特征权重不合理,引入词频—逆词频(TF-IDF)

    词频TF = 某个词在文章中的出现次数 / 文章总词数

    逆文档词频IDF = log(语料库的文档总数 / (包含该词的文档总数 + 1) )

    • 应用:信息检索、提取关键字、文章相似度查重、自动文摘
  8. 词集模型与词袋模型

    • 词集模型:遍历每个文档中的所有词,如果出现了词汇表中的词,则将输出文档向量中的对应值设为1。
    • 词袋模型:词汇集就像一个装词汇的袋子

8. Gensim文本向量化

  • Gensim是一款非结构化文本处理工具包,可以便捷地构建语料库,其内置的子模块可以高效地生成TF-IDF向量,并支持大数据文本批量处理。同时,其内置的多种主题模型可以满足多任务需求,大大节约了数据预处理训练的时间。

  • 开源的第三方Python工具包,用于从原始的非结构化文本中有效地自动抽取语义主题。

  • 支持语料处理、LSA(Latent Semantic Analysis,潜在语义分析)、LDA(Latent Dirichlet Allocation,隐含狄利克雷分布)、RP(Random Projection,随即映射)、TF-IDF、word2vec和paragraph2vec等多种模型算法,支持流式训练,并提供了诸如相似度计算和信息检索等一些常用任务的API接口。

  1. Gensim特性:

    • 内存独立。对于训练语料来说,没必要将这个那个语料都驻留在内存中。
    • 有效地实现了许多流行的向量空间算法。包括tf-idf、分布式LSA、分布式LDA以及RP,并且很容易添加新算法。
    • 对流行的数据格式进行了IO封装和转换
    • 在其语义表达中,可以相似查询
    • 可以实现主题建模的可扩展软件框架
  2. 涉及的核心概念:

    • 语料(Corpus):文档的集合,用于模型训练学习,也成训练语料
    • 向量(vector):由一组文本特征构成的列表,是一段文本在Gensim中的内部表达
    • 稀疏向量(Sparse Vector):可以略去向量中多余的0元素,此时,向量中的每一个元素是一个(key, value)的元组
    • 模型(Model):定义了两个向量空间的变换(即从文本的一种向量表达变换为另一种向量的表达)
  3. Gensim构建语料词典

    训练语料的预处理是指将文档中原始的字符文本转换成Gensim模型所能理解的稀疏向量的过程。

    from gensim import corpora
    import jieba
    from gensim import models
    
    # 1.将原始的文档处理后生成语料库
    documents = ['工业互联网平台的核心技术是什么工业',
                '工业现场生产过程优化场景有哪些']
    def word_cut(doc):
        seg = [jieba.lcut(w) for w in doc]
        return seg
    
    texts= word_cut(documents)
    
    ##为语料库中出现的所有单词分配了一个唯一的整数id
    dictionary = corpora.Dictionary(texts)
    dictionary.token2id
    
    print(dictionary.token2id)
    # {'互联网': 0, '什么': 1, '工业': 2, '平台': 3, '是': 4, '核心技术': 5, '的': 6, '优化': 7, '哪些': 8, '场景': 9, '有': 10, '现场': 11, '生产': 12, '过程': 13}
    
    # 2.把文档表示成向量
    # 该函数doc2bow()只计算每个不同单词的出现次数,将单词转换为整数单词id,并将结果作为稀疏向量返回
    bow_corpus = [dictionary.doc2bow(text) for text in texts]
    # bow_corpus 
    
    print(bow_corpus)
    # [[(0, 1), (1, 1), (2, 2), (3, 1), (4, 1), (5, 1), (6, 1)], [(2, 1), (7, 1), (8, 1), (9, 1), (10, 1), (11, 1), (12, 1), (13, 1)]]
    
    # train the model
    # tfidf = models.TfidfModel(bow_corpus)
    
    # 3.删除停用词和仅出现一次的词
    once_ids = [token2id for token2id, docfreq in dictionary.dfs.items() if docfreq == 1]
    dictionary.filter_tokens(once_ids)
    
    # 消除id序列在删除后产生的不连续的缺口
    dictionary.compactify()
    
    # 4.把字典保存起来,方便以后使用
    savePath = r'/Users/hxh/Desktop/hxh/practice/sublime/bow_corpus.dict'
    dictionary.save(savePath)
    
    # 5.加载存储的特征词典
    mydict = corpora.Dictionary.load(savePath)
    print(mydict)
    
    # 打印结果:Dictionary(1 unique tokens: ['工业'])
    
  4. Gensim统计词频特征

    def gensim_Corpus(documents):
        dictionary = corpora.Dictionary(texts)
        dfs = dictionary.dfs
        print('统计词频特征:')
        for key_id, c in dfs.items():
            print(dictionary[key_id], c)
        return dictionary[key_id], c
      
    # 有点问题!
    
  5. 计算TF-IDF

    • 使用以下命令自定义语料模块加载数据集与标签集

      from mydict import *
      corpus,classVec = loadDataSet()
      
    • 进行特征词频—逆词频处理,并实现本地序列化存储

    首先对语料进行Dictionary词典化处理,然后处理成词袋模型(即特征向量化处理)。接着调用models的TfidfModel方法逐个列表进行词频—逆词频计算。最后,将各个类别的词频—逆词频计算结果进行本地序列化存储,其中调用序列化方法serialize并提供各个类别的保存路径、词频—逆词频计算结果和词典。

  6. Gensim实现主题模型

    主题模型可理解为一种在大量文档中发现其主题的无监督式学习技术。这些主题本质上十分抽象,即彼此相关联的词语构成一个主题,同样,在单个文档中可以有多个主题。

    将相似和相关的词语聚集成簇,称为主题。这些主题在文档中具有特定的分布,每个主题都根据它包含的不同词的比例来定义。

    主题建模有助于挖掘海量文本数据、查找词簇、文本之间的相似度以及发现抽象主题。也可用于搜索引擎,判断搜索字段与结果的匹配程度。

    • 潜在语义分析(LSA):也叫潜在语义索引(Latent Semantic Indexing,LSI)一种用于只是获取和展示的计算理论和方法,出发点是文本中的词与词之间存在某种联系,即存在某种潜在的语义结构。上下文。

      • 解决歧义词。一词多义或一义多词。弄清词语背后的隐藏概念或主题。

        (LSA可以处理向量空间模型无法解决的一义多词(synonymy)问题,但不能解决一词多义(polysemy)问题。因为LSA将每一个词映射为潜在语义空间中的一个点,也就是说一个词的多个意思在空间中对于的是同一个点,并没有被区分。)

      • 技术原理:假设有m篇文档,其中包含n个唯一词项(词),假设希望从所有文档的文本数据中提取出k个主题(k为主题书,k的取值根据实际需求由用户设置),则这个那个技术实现的流程如下:

        1. 生成m x n维文档-词矩阵,其中矩阵元素为TF-IDF

          (加载文档集合,建立词汇-文本矩阵A,主要是实现将原始语料的词袋模型转化,最终生成TF-IDF矩阵)

        2. 使用奇异值分解(SVD)把上述矩阵的维度降到k维

          (直接调用Gensim的models.LsiModel模块来实现)

        3. 使用降维后的矩阵构建潜在语义空间

          (存储在本地磁盘中,以备后续使用。目的:一次模型训练将来多次复用,提高算法性能)

        4. SVD为数据中的每篇文档和每个词都提供了向量,每个向量的长度均为k。

          可以使用余弦相似度的方法通过这些向量找到相似的词和文档

      • 优点:

        1. 可以更好地刻画文本的真实含义
        2. 分析词条与文本之间的相似关系时比传统的向量空间模型具有更好的灵活性
        3. 对于原始的词条——文本矩阵,通过LSA分析提取出k维语义空间,在保留大部分信息的同时使得K<<V
        4. 通过对大量的文本分析,LSA可以自动地模拟人类的知识获取能力,甚至分类、预测的能力
        5. 低维空间表示可以刻画同义词,同义词会对应着相同或相似的主题
      • 缺点:

        1. 它是线性模型,在具有非线性依赖性的数据集上可能效果不佳
        2. LSA假设文本中的词服从正态分布,不适用于所有问题
        3. LSA设计SVD,它是计算密集型的,当新数据出现时难以更新
        4. 没有刻画term出现次数的概率模型
        5. LSA具有词袋模型的缺点,即在一篇文章或者一个句子中忽略了词语的先后顺序
    • 隐含狄利克雷分布(LDA)

      LDA是一种无监督式学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k。可以将文档集中的每篇文档的主题按照概率分布的形式给出。对于每一个主题均可找出一些词语来描述它。

      文本主题识别、文本分类、文本相似度计算和文章相似推荐等方面

      LDA使用的是基于文本文档生成的统计模型的函数

      推荐系统、邮件分类和关键词提取等业务场景

      LDA是一种典型的词袋模型,即它认为一篇文档是由一组词构成的一个集合,词与词之间没有顺序和先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。

      • LDA模型中一篇文档生成的方式如下:

        1. 从LDA中取样生成文档 i 的主题分布
        2. 从主题的多项式分布中取样生成文档 i 第 j 个词的主题
        3. 从LDA中取样生成主题的词语分布
        4. 从词语的多样式分布中采样最终生成词语
      • 模型实现:

        1. 加载文档集合,建立词汇-文本矩阵A,主要是实现将原始语料的词袋模型转化,最终生成TF-IDF矩阵

        2. 直接调用Gensim的models.LdaModel方法实现,其中参数corpus为TF-IDF向量矩阵,参数id2word为生成的词典向量,num_topics为自定义主题个数

          lda_model = models.LdaModel(corpus=tfidf_corpus, id2word=dictionary, num_topics=10)
          
        3. 存储在本地磁盘中,以备后续使用

    • 随机映射(RP)

      降维方法:随机在高维空间里选几个单位向量ei,把高维数据投影到选择的这一组基上就完成了降维。

      RP目的在于减小空维度,使用随即映射通过抛出一点随机性来近似得到两个文档之间的TF-IDF距离。

      采用Gensim中的RpModel进行主题生成

9. PCA降维技术

文本处理、人脸识别、图片识别、自然语言处理等领域

降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。

降维在一定的信息损失范围内,可以节省大量的时间和成本。

  1. 降维技术主要有:

    • PCA(Principal Components Analysis,主成分分析):找出一个最主要的特征进行分析
    • FA(Factor Analysis,因子分析):将多个实测变量转换为少数几个综合指标,它反应一种降维的思想,通过降维将相关性高的变量聚在一起,从而减少需要分析的变量的数量,以减少问题分析的复杂性。
    • ICA(Independ Component Analysis,独立成分分析):如果观测到的信号是若干个独立信号的线性组合,ICA可对其进行解混。
  2. PCA思想:

    • 去除平均值
    • 计算协方差矩阵
    • 计算协方差矩阵的特征值和特征向量
    • 将特征值排序
    • 保留前N个最大的特征值对应的特征向量
    • 将数据转换到上一步得到的N个特征向量构建的新空间中(实现了特征压缩)
  3. PCA原理:

    • 找出第一个主成分的方向,也就是数据方差最大的方向
    • 找出第二个主成分的方向,也就是数据方差次大的方向,并且该方向与第一个主成分方向正交
    • 通过这种方式计算出所有的主成分方向
    • 通过数据集的协方差矩阵及其特征值分析,可以得到这些主成分的值
    • 一旦得到了协方差矩阵的特征值和特征向量,就可以保留最大的N个特征。这些特征向量也给出了N个最重要特征的真实结构,就可以通过将数据乘上这N个特征向量,从而将它转换到新的空间上。
  4. 优缺点:

    • 优点:降低了数据的复杂性,可识别出更重要的多个特征
    • 缺点:不一定需要,且可能损失有用信息
    • 使用的数据类型:数值数据类型

10. 数据可视化

Matplotlib是一个基于python的绘图库,完全支持二维图形,有限支持三维图形。

  1. Matplotlib按照逻辑性划分为三层:

    • Backend Layer:最底层,负责软件与绘图硬件的交互,负责绘图的主要框架搭建。

      主要实现了Figurecanvas(实现绘图表面概念的封装)、Renderer(封装了执行绘图操作)和Event(封装了处理键盘与鼠标事件的用户输入)的抽象借口类。

    • Artist Layer:美工层,中间层,对Backend Layer的进一步封装。

      基础Artist是我们在图形中能看到的一类对象,复合Artist是Artist的集合。

    • Scripting Layer:最高层封装,也就是平时所用的高级封装pyplot模块

  2. 绘图

11. 竞赛神器XGBoost

XGBoost是一个开源软件库,目的在于提供一个可扩展的、便携式和可分布的梯度(GBM、GBRT、GBDT)提高库。

存销预测、物理事件分类、网页文本分类、顾客行为预测、点击率预测、动机探测、产品分类等。

XGBoost算法优势:处理稀疏数据的新颖的树的学习算法和近似学习的分布式加权直方图。

  • 仅仅靠参数的调整和模型的小幅优化,想要让模型的表现有大幅度的提升是不可能的
  • 要想模型的表现有一个质的飞跃,需要依靠如特征工程,模型组合,以及堆叠等手段
  • 模型性能提升与数据集划分和数据预处理的质量也有很大的关系

Mac安装xgboost,brew install xgboost报错,使用conda安装xgboost:conda install py-xgboost

XGBoost 参数调优



这篇关于Python数据预处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程