利用Python进行数据分析(Ⅴ)

本文参考书籍:《利用Python进行数据分析》

目录

  • 利用Python进行数据分析(Ⅴ)
    • 13.Python建模库介绍
      • 13.1 pandas与建模代码的结合
      • 13.2 使用Patsy创建模型描述
        • 13.2.1 Patsy公式中的数据转换
        • 13.2.2 分类数据与Patsy
      • 13.3 statsmodels介绍
        • 13.3.1 评估线性模型
        • 13.3.2 评估时间序列处理
      • 13.4 scikit-learn介绍

13.Python建模库介绍

  

13.1 pandas与建模代码的结合

  使用pandas用于数据载入和数据清洗,之后切换到模型库去建立模型是一个常见的模型开发工作流。在机器学习中,特征工程是模型开发的重要部分之一。特征工程是指从原生数据集中提取可用于模型上下文的有效信息的数据转换过程或分析。
  pandas和其他分析库的结合点通常是NumPy数组。要将DataFrame转换为NumPy数组,使用.values属性:


  将数组再转换为DataFrame,可以传递一个含有列名的二维ndarray:

  .values属性一般在你的数据是同构化的时候使用——例如,都是数字类型。若你的数据是异构化的,结果将是Python对象的ndarray:

  对于某些模型,可能只想使用一部分列。可使用loc索引和values:

  若我们有一个非数字类型的列:

  若想使用虚拟变量替代category列,先创建虚拟变量,之后删除category列,然后连接结果:

13.2 使用Patsy创建模型描述

  Patsy是一个用于描述统计模型(尤其是线性模型)的Python库。它使用一种小型基于字符串的“公式语法”
  Patsy能很好地支持statsmodels中特定的线性模型。Patsy的公式是特殊字符串语法,如:y~x0+x1
  语法a+b指为模型而创建的设计矩阵中的名词列。patsy.dmatrices函数在数据集上(可以是一个DataFrame或数组的字典)使用了一个公式字符串,并为一个线性模型产生了设计矩阵:


  这些Patsy的DesignMatrix实例是含有附加元数据的NumPy ndarray:

  Intercept(截距)这个名词列是线性模型,如最小二乘回归中的惯例。可以通过给模型添加名词列+0来加入截距:

  Patsy对象可以直接传递给一些算法,如numpy.linalg.lstsq等,这些算法都会执行一个最小二乘回归:

  模型元数据保留在design_info属性中,可以将模型列名重新附加到拟合系数以获得一个Series:

13.2.1 Patsy公式中的数据转换

  可以将Python代码混合到Patsy公式中,在执行公式时,Patsy库将尝试在封闭作用域中寻找你使用的函数:

  一些常用的变量转换包括标准化(对均值0和方差1)和居中(减去平均值)是Patsy的内置函数:

  patsy.build_design_matrices函数可以使用原始样本内数据集中保存的信息将变换应用于新的样本外数据上:

  若想要对数据集中两列按列名相加时,需将列名封装到特殊的I函数中:

13.2.2 分类数据与Patsy

  当在Patsy公式中使用非数字名词列时,它们将会被默认转换为虚拟变量。若有拦截,其中一个级别将被排除以避免共线性:

  若忽略了模型的截距,每个类别值的列将会被包含在模型的设计矩阵中:

  数字类型列可以使用C函数解释为分类类型:

  当在模型中使用多个分类名词列时,可以包含形式为key1:key2的交互项,例如,可用于方差分析(ANOVA)模型:


13.3 statsmodels介绍

  statsmodels用于拟合多种统计模型,执行统计测试以及数据探索和可视化。statsmodels包含更多的“经典”频率学派统计方法
  包含在statsmodels中的一些模型:

  • 线性模型,广义线性模型和鲁棒线性模型
  • 线性混合效应模型
  • 方差分析(ANOVA)方法
  • 时间序列过程和状态空间模型
  • 广义的矩量法

13.3.1 评估线性模型

  统计模型中有几种线性回归模型,从较基本的(例如,普通最小二乘)到更复杂的(例如,迭代重新加权的最小二乘)
  statsmodels中的线性模型有两个不同的主要接口:基于数组的和基于公式的。这些接口通过这些API模块导入来访问:

  根据一些随机数据生成线性模型:

  在这里,写下了已知参数beta的“真实”模型。在这种情况下,dnorm是用于生成具有特定均值和方差的正态分布数据的辅助函数。

  线性模型通常与Patsy中的截距项相匹配。sm.add_constant函数可以将截距列添加到现有矩阵:

  sm.OLS类可以拟合一个最小二乘线性回归:

  模型的fit方法返回一个回归结果对象,该对象包含了估计的模型参数和其他的诊断:

  在results上调用summary方法可以打印出一个模型的诊断细节:

  此处的参数名称已被赋予通用名称x1、x2等。假设所有模型参数都在DataFrame中:

  现在我们可以使用statsmodels公式API和Patsy公式字符串:

  给定新的样本外数据后,可以根据估计的模型参数计算预测值:

13.3.2 评估时间序列处理

  statsmodels中的另一类模型用于时间序列分析。其中包括自回归过程,卡尔曼滤波和其他状态空间模型,以及多变量自回归模型。
  模拟一些具有自回归结构和噪声的时间序列数据:

  该数据具有参数为0.8和-0.4的AR(2)结构(两个滞后)。当拟合一个AR模型时,可能不知道包含的滞后项的数量,所以可以用更大的滞后数来拟合该模型:

  结果中的估计参数首先是截距,接下来是前两个滞后的估计:

13.4 scikit-learn介绍

  scikit-learn是Python机器学习库。它包含广泛的标准监督的和无监督的机器学习方法,包括用于模型选择和评估、数据转换、数据加载和模型持久化的工具。这些模型可用于分类、聚类、预测和其他常见任务。
  

  像statsmodels和scikit-learn通常不能提供缺失数据,因此我们要检查各列,看看是否有包含缺失数据:

  在像这样的统计和机器学习的例子中,一个典型的任务是根据数据中的特征来预测乘客是否能幸存下来。将模型拟合到训练数据集上,然后在样本外测试数据集上进行评估。
  有很多方法可以进行缺失数据插补(imputation),在这里做一个简单的插补,使用训练数据集的中间值填充两个表中的空值:

  添加一列IsFemale作为Sex列的编码版本:

  然后决定一些模型变量并创建NumPy数组:

  使用scikit-learn的LogisticRegression模型创建一个模型实例:

  与statsmodels类似,可以使用模型的fit方法在训练数据上拟合模型:

  现在,可以用model.predict为测试数据集形成预测:

  若拥有测试数据集的真实值,可以计算精度百分比或其他一些错误指标:

  实际上,模型训练中经常存在许多附加的复杂层次。许多模型具有可以调整的参数,并且存在可用于参数调整的交叉验证等技术以避免过度拟合训练数据。这通常可以在新数据上产生更好的预测性能或稳健性
  交叉验证通过分割训练数据来模拟样本外预测。基于像均方误差之类的模型准确度分数,可以对模型参数执行网格搜索。一些模型,如逻辑回归,具有内置交叉验证的估计类。例如,LogisticRegressionCV类可以与一个参数一起使用,该参数表示网格搜索在模型正则化参数C上的细致度:

  要手动进行交叉验证,可使用cross_val_score帮助函数,该函数处理数据拆分过程。例如,为了用我们的模型与训练数据的四个非重叠分割进行交叉验证,我们可以这样做:

  默认评分指标是依赖于模型的,但可以选择明确的评分函数。经过交叉验证的模型需要更长时间的训练,但通常可以产生更好的模型性能。

利用Python进行数据分析(Ⅴ)相关推荐

  1. 利用Python进行数据分析(第2版)

    Wes McKinney 是流行的Python开源数据分析库pandas的创始人.他是一名活跃的演讲者,也是Python数据社区和Apache软件基金会的Python/C++开源开发者.目前他在纽约从 ...

  2. 干货 | 《利用Python进行数据分析》资料开源下载

    今天要跟大家分享的是数据分析领域的必备书籍之一的<利用Python进行数据分析>第二版.英文名为 Python for Data Analysis. 本书作者Wes McKinney 资深 ...

  3. 利用python进行数据分析 英文-如何学习和评价《利用python进行数据分析》这本书?...

    作为用Python做数据分析的必读书籍之一,这本书的开篇有向读者说明,这本书关注的是利用Python操作.处理.清洗和操作数据时的基本要点.目标是提供一份Python编程语言以及Python面向数据的 ...

  4. 利用python进行数据分析 百度云-利用Python进行数据分析 原书第2版.pdf

    作 者 :(美)韦斯·麦金尼(Wes McKinney) 出版发行 : 北京:机械工业出版社 , 2018.07 ISBN号 :978-7-111-60370-2 页 数 : 480 原书定价 : 1 ...

  5. python 数据分析学什么-利用Python做数据分析 需要学习哪些知识

    根据调查结果,十大最常用的数据工具中有八个来自或利用Python.Python广泛应用于所有数据科学领域,包括数据分析.机器学习.深度学习和数据可视化.不过你知道如何利用Python做数据分析吗?需要 ...

  6. python数据分析视频网盘-利用Python进行数据分析视频教程云盘下载

    利用Python进行数据分析视频教程 内容简介 本视频讲的是利用Python进行数据控制.处理.整理.分析等方面的具体细节和基本要点.同时,它也是利用Python进行科学计算的实用指南(专门针对数据密 ...

  7. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主

    利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目 ...

  8. 【赠书】pandas创始人手把手教你利用Python进行数据分析

    周末就要到了,本次给大家赠送5本Python技术书籍,这次赠送的书籍是<利用Python进行数据分析>. 这是一本什么样的书 Python是目前数据科学领域的王者语言,众多科学家.工程师. ...

  9. 学完可以解决90%以上的数据分析问题-利用python进行数据分析第二版(代码和中文笔记)...

    <利用python进行数据分析>是数据分析的基础教程,绝大部分数据分析师的入门教材,目前已经升级到第二版.本站搜集了教材的第二版原版代码进行中文翻译和注释,并做了一定的笔记.基本上只需要看 ...

  10. python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

最新文章

  1. acm pc^2的配置与使用
  2. HDU5900 QSC and Master(区间DP + 最小费用最大流)
  3. 精读《REST,GraphQL,Webhooks gRPC 如何选型》
  4. jQuery获取Table某列的值
  5. 前端学习(3225):字符串形式
  6. 释放千行百业数据价值,华为云DAYU有一套
  7. 手机通讯录备份代码实现三
  8. TensorFlow tf.keras.layers.conv2D
  9. Redis学习总结(10)——缓存雪崩、缓存穿透、缓存并发、缓存预热、缓存更新、缓存降级、缓存算法的概念及解决思路总结
  10. STM32打印log--使用J-Link RTT Viewer
  11. python 画ks曲线_风控模型—区分度评估指标(KS)深入理解应用
  12. JXTA中定义自己的成员服务
  13. 教妹学Java:数组打印最优雅的方式deepToString
  14. 常用的一些vba代码
  15. 干货丨Kubernetes 中分析调试网络流量的4种方法
  16. 登录中国人民银行征信中心
  17. facade 门面模式和mediator 调停者
  18. 在物理机上安装虚拟机
  19. 中软国际实习 day10
  20. 智慧校园人脸识别解决方案

热门文章

  1. 每学期都以NB的姿态出场
  2. pairs和ipairs的区别
  3. 个人博客后台管理系统
  4. 秉火429笔记之十四 USART--串口通信
  5. 代码坏味道与重构之霰弹式修改和依恋情结
  6. 自定义 Metal 渲染视图
  7. hibernate-transaction(提交事务)
  8. wps怎么删除分隔符号 分栏
  9. Hive —— Design and Architecture
  10. ECCV 2022 | 清华腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法