如何将shape数据建模分析师在watergems中建模

本书中我已经介绍了Python数据建模汾析师分析的编程基础。因为数据建模分析师分析师和科学家总是在数据建模分析师规整和准备上花费大量时间这本书的重点在于掌握這些功能。

开发模型选用什么库取决于应用本身许多统计问题可以用简单方法解决,比如普通的最小二乘回归其它问题可能需要复杂嘚机器学习方法。幸运的是Python已经成为了运用这些分析方法的语言之一,因此读完此书你可以探索许多工具。

本章中我会回顾一些pandas的特点,在你胶着于pandas数据建模分析师规整和模型拟合和评分时它们可能派上用场。然后我会简短介绍两个流行的建模工具statsmodels和scikit-learn。这二者每個都值得再写一本书我就不做全面的介绍,而是建议你学习两个项目的线上文档和其它基于Python的数据建模分析师科学、统计和机器学习的書籍

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

优秀的特征工程超出了本书的范围,我会尽量直白地介绍一些用于数據建模分析师操作和建模切换的方法

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

要转换回DataFrame,可以传递一個二维ndarray可带有列名:


  

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

对于一些模型,你可能只想使用列的子集我建议你使用loc,用values作索引:

一些库原生支持pandas会自动完成工作:从DataFrame转换到NumPy,将模型的参数名添加到输出表的列或Series其它情况,你可以手工进行“元数据建模分析师管理”


  

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


  

用虚变量拟合某些统计模型会有一些细微差别当你不只有数字列时,使用Patsy(下一节的主题)可能更簡单更不容易出错。

Patsy是Python的一个库使用简短的字符串“公式语法”描述统计模型(尤其是线性模型),可能是受到了R和S统计编程语言的公式语法的启发

Patsy适合描述statsmodels的线性模型,因此我会关注于它的主要特点让你尽快掌握。Patsy的公式是一个特殊的字符串语法如下所示:

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

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


  

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


  

模型的元数据建模分析师保留在design_info属性中,因此你可以重新附加列名到拟合系数以获得┅个Series,例如:

用Patsy公式进行数据建模分析师转换

你可以将Python代码与patsy公式结合在评估公式时,库将尝试查找在封闭作用域内使用的函数:


  

常见嘚变量转换包括标准化(平均值为0方差为1)和中心化(减去平均值)。Patsy有内置的函数进行这样的工作:


  

作为建模的一步你可能拟合模型到一个数据建模分析师集,然后用另一个数据建模分析师集评估模型另一个数据建模分析师集可能是剩余的部分或是新数据建模分析師。当执行中心化和标准化转变用新数据建模分析师进行预测要格外小心。因为你必须使用平均值或标准差转换新数据建模分析师集這也称作状态转换。

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


  

Patsy嘚patsy.builtins模块还有一些其它的内置转换请查看线上文档。

分类数据建模分析师有一个特殊的转换类下面进行讲解。

非数值数据建模分析师可鉯用多种方式转换为模型设计矩阵完整的讲解超出了本书范围,最好和统计课一起学习

当你在Patsy公式中使用非数值数据建模分析师,它們会默认转换为虚变量如果有截距,会去掉一个避免共线性:

如果你从模型中忽略截距,每个分类值的列都会包括在设计矩阵的模型Φ:


  

使用C函数数值列可以截取为分类量:


  

当你在模型中使用多个分类名,事情就会变复杂因为会包括key1:key2形式的相交部分,它可以用在方差(ANOVA)模型分析中:


  

Patsy提供转换分类数据建模分析师的其它方法包括以特定顺序转换。请参阅线上文档

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

  • 线性模型广义线性模型和健壮线性模型
  • 方差(ANOVA)方法分析
  • 时间序列过程和状态空间模型

statsmodels有多种线性回归模型,包括从基本(比如普通最小二乘)到复杂(比如迭代加权最小二乘法)的

statsmodels的线性模型有两种不同的接口:基于数组和基于公式。它们可以通过API模块引入:

为了展示它们的使用方法我们从┅些随机数据建模分析师生成一个线性模型:

这里,我使用了“真实”模型和可知参数beta此时,dnorm可用来生成正态分布数据建模分析师带囿特定均值和方差。现在有:

像之前Patsy看到的线性模型通常要拟合一个截距。sm.add_constant函数可以添加一个截距的列到现存的矩阵:


  

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


  

这个模型的fit方法返回了一个回归结果对象它包含估计的模型参数和其它内容:

对结果使用summary方法可以打印模型的详细診断结果:

这里的参数名为通用名x1, x2等等。假设所有的模型参数都在一个DataFrame中:


  

  

给出一个样本外数据建模分析师你可以根据估计的模型参数計算预测值:

statsmodels的线性模型结果还有其它的分析、诊断和可视化工具。除了普通最小二乘模型还有其它的线性模型。

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

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

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

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

更多的细节以及如何解释结果超出了本书的范围可以通过statsmodels文檔学习更多。

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

机器学习方面的学习和应用scikit-learn和TensorFlow解决实际問题的线上和纸质资料很多。本节中我会简要介绍scikit-learn API的风格。

写作此书的时候scikit-learn并没有和pandas深度结合,但是有些第三方包在开发中尽管如此,pandas非常适合在模型拟合前处理数据建模分析师集

举个例子,我用一个Kaggle竞赛的经典数据建模分析师集关于泰坦尼克号乘客的生还率。峩们用pandas加载测试和训练数据建模分析师集:


  

statsmodels和scikit-learn通常不能接收缺失数据建模分析师因此我们要查看列是否包含缺失值:

在统计和机器学习嘚例子中,根据数据建模分析师中的特征一个典型的任务是预测乘客能否生还。模型现在训练数据建模分析师集中拟合然后用样本外測试数据建模分析师集评估。

我想用年龄作为预测值但是它包含缺失值。缺失数据建模分析师补全的方法有多种我用的是一种简单方法,用训练数据建模分析师集的中位数补全两个表的空值:


  

现在我们需要指定模型我增加了一个列IsFemale,作为“Sex”列的编码:


  

然后我们确萣一些模型变量,并创建NumPy数组:


  

我不能保证这是一个好模型但它的特征都符合。我们用scikit-learn的LogisticRegression模型创建一个模型实例:

与statsmodels类似,我们可以鼡模型的fit方法将它拟合到训练数据建模分析师:


  

现在,我们可以用model.predict对测试数据建模分析师进行预测:


  

如果你有测试数据建模分析师集嘚真是值,你可以计算准确率或其它错误度量值:

在实际中模型训练经常有许多额外的复杂因素。许多模型有可以调节的参数有些方法(比如交叉验证)可以用来进行参数调节,避免对训练数据建模分析师过拟合这通常可以提高预测性或对新数据建模分析师的健壮性。

交叉验证通过分割训练数据建模分析师来模拟样本外预测基于模型的精度得分(比如均方差),可以对模型参数进行网格搜索有些模型,如logistic回归有内置的交叉验证的估计类。例如logisticregressioncv类可以用一个参数指定网格搜索对模型的正则化参数C的粒度:

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

默认的评分指标取决于模型本身但是可以明确指定一个评分。交叉验证过的模型需要更长时间来训练但会有更高的模型性能。

我呮是介绍了一些Python建模库的表面内容现在有越来越多的框架用于各种统计和机器学习,它们都是用Python或Python用户界面实现的

这本书的重点是数據建模分析师规整,有其它的书是关注建模和数据建模分析师科学工具的其中优秀的有:

虽然书是学习的好资源,但是随着底层开源软件的发展书的内容会过时。最好是不断熟悉各种统计和机器学习框架的文档学习最新的功能和API。

}

我要回帖

更多关于 数据建模分析师 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信