《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍

第13章 Python建模库介绍

13.1 pandas于模型代码的接口

模型开发的通常工作流是使用pandas进行数据加载和清洗,然后切换到建模库进行建模。开发模型的重要一环是机器学习中的“特征工程”。它可以描述从原始数据集中提取信息的任何数据转换或分析,这些数据集可能在建模中有用。

pandas与其它分析库通常是靠NumPy的数组联系起来的。将DataFrame转换为NumPy数组,可以使用.values属性:

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第1张图片

要转换回DataFrame,可以传递一个二维ndarray(N维数组的类型),可带有列名:

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第2张图片

笔记:最好当数据是均匀的时候使用.values属性。例如,全是数值类型。如果数据是不均匀的,结果会是Python对象的ndarray:

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第3张图片

一些模型,可能只想使用列的子集,使用loc,用values作索引: 

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第4张图片

假设数据集中有一个非数值列:

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第5张图片

若想替换category列为虚变量,可以创建虚变量,删除category,然后添加到结果:

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第6张图片

13.2 用Patsy创建模型描述

Patsy是Python的一个库,使用简短的字符串“公式语法”描述统计模型(尤其是线性模型),Patsy适合描述statsmodels的线性模型。Patsy的公式是一个特殊的字符串语法:

a+b不是将a与b相加的意思,而是为模型创建的设计矩阵。patsy.dmatrices函数接收一个公式字符串和一个数据集(可以是DataFrame或数组的字典),为线性模型创建设计矩阵: 

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第7张图片

现在有: 

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第8张图片

这些Patsy的DesignMatrix实例是Numpy的ndarray,带有附加元数据:

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第9张图片

Intercept是线性模型(比如普通最小二乘回归)的惯例用法。添加+0到模型可以不显示intercept。

Patsy对象可以直接传递到算法(比如numpy.linalg.lstsq)中,它执行普通最小二乘回归:

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

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第10张图片

  • 用Patsy公式进行数据转换

patsy.build_design_matrices函数可以使用原始样本数据集的保存信息,来转换新数据: 

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第11张图片

Patsy中的加号不是加法的意义,当你按照名称将数据集的列相加时,你必须用特殊I函数将它们封装起来: 

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第12张图片

13.3 statsmodels介绍

statsmodels是Python进行拟合多种统计模型、进行统计试验和数据探索可视化的库。Statsmodels包含许多经典的统计方法,但没有贝叶斯方法和机器学习模型。

statsmodels包含的模型有:

  • 线性模型,广义线性模型和健壮线性模型
  • 线性混合效应模型
  • 方差(ANOVA)方法分析
  • 时间序列过程和状态空间模型
  • 广义矩估计
  • 估计线性模型

statsmodels有多种线性回归模型,包括从基本(比如普通最小二乘)到复杂(比如迭代加权最小二乘法),statsmodels的线性模型有两种不同的接口:基于数组和基于公式。它们可以通过API模块引入: 

从一些随机数据生成一个线性模型,使用“真实”模型和可知参数beta,此时dnorm可用来生成正态分布数据,带有特定均值和方差: 

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第13张图片

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第14张图片

Sm.add_constant函数可以添加一个截距的列到现存的矩阵,sm.OLS类可以拟合一个普通最小二乘回归,fit方法返回一个回归结果对象,它包含估计的模型参数和其它内容。对结果使用summary方法可以打印模型的详细诊断结果:

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第15张图片

  • 估计时间序列过程

statsmodels的另一模型类是进行时间序列分析,包括自回归过程、卡尔曼滤波和其它态空间模型,和多元自回归模型。

用自回归结构和噪声来模拟一些时间序列数据: 

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第16张图片

这个数据有AR(2)结构(两个延迟),参数是0.8和-0.4。拟合AR模型时,你可能不知道滞后项的个数,因此可以用较多的滞后量来拟合这个模型: 

结果中的估计参数首先是截距,其次是前两个参数的估计值: 

13.4 scikit-learn介绍

scikit-learn是一个广泛使用、用途多样的Python机器学习库。它包含多种标准监督和非监督机器学习方法和模型选择和评估、数据转换、数据加载和模型持久化工具。这些模型可以用于分类、聚合、预测和其它任务。

要手动进行交叉验证,你可以使用cross_val_score帮助函数,它可以处理数据分割。要交叉验证我们的带有四个不重叠训练数据的模型,可以这样做: 

《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍_第17张图片

 

 

 

 

 

 

 

你可能感兴趣的:(《利用Python进行数据分析》学习笔记 第13章 Python建模库介绍)