13.1 pandas与模型代码的接口
- 将Dataframe转换为Numpy数组,使用其.values属性
- 转换回一个DataFrame,可以传递一个二维ndarray,可带有列名:
- 最好当数据是均匀的时候使用.values属性,例如全是数值类型
- 如果数据是不均匀的,结果会是python对象的ndarray
- 对于一些模型,如果只想使用列的子集,使用loc,用values作索引
- 一些库原生支持pandas,会自动完成工作:从DataFrame转化为Numpy,将模型的参数名添加到输出表的列或Series
- 在第12章,我们学习了pandas的Categorical类型和pandas.get_dummies函数
- 假设数据中有一个非数值列
- 想替换category列为虚变量,可以创建虚变量,删除category列,添加到结果
13.2 用patsy创建模型描述
- patsy是python的一个库,使用字符串‘公式语法’描述统计模型(尤其是线性统计模型)
- patsy适合描述statsmodels的线性模型,patsy的公式是一个特殊字符串的语法
- patsy.dmatrices函数接收一个公式字符串和一个数据集(可以是DataFrame或数组的字典),为线性模型创建设计矩阵
- 这些patsy的DesignMatrix实例是numpy的ndarray,带有附加元数据
- intercept(拦截)是线性模型(普通最小二乘回归)的惯例用法,添加+0到模型可以不显示intercept
- patsy对象可以直接传递到算法(numpy.linalg.lstsg)中,它执行普通最小二乘回归
- 用patsy公式对数据进行转换
- 常见的变量转换包括标准化(平均值0,方差1)和去中心化(减去平均值)
- patsy有内置函数进行工作
- 建模的第一步,拟合模型到一个数据集,然后用另外一个数据集评估模型,另外一个数据集可能是剩余的部分或是新数据
- 当执行中心化和标准化转变时,必须使用平均值或标准差转换数据集-----状态转换
- patsy.build_design_matrices函数可以使用原本样本数据集的保存信息来转换数据
13.3 statsmodels介绍
statsmodels包含的模型有:
- 线性模型,广义线性模型,健壮线性模型
- 线性混合效应模型
- 方差方法分析
- 时间序列过程和状态空间模型
- 广义矩阵估计
1.估计线性模型
- statsmodels有多种线性回归模型,包括从基本(比如普通最小二乘)到复杂(迭代加权最小二乘法)
- statsmodels的线性模型有两种不同的接口:基于数组和基于公式
2.估计时间序列过程
- statsmodels的另外一种模型类是进行时间序列分析,包括自回归过程,卡尔曼滤波和其他态空间模型
- 用自回归结构和噪音来模拟一些时间序列数据
13.4 scikit-learn介绍
- scikit-learn包含多种标准监督和非监督机器学习方法和模型选择和评估、数据转换、数据加载
- 和模型持久化工具,这些模型可以用于分类,聚合,预测和其他任务。
- 在统计和机器学习例子中,根据数据中的特征,一个典型的任务是预测乘客能否生还
- 模型现在训练数据集拟合,然后用样本外测试数据集评估