线性回归比较简单,只记录一下遇到的以前没见过的点

一、Introduction to Supervised Machine Learning

线性回归函数sklearn.linear_model.LinearRegression

  1. 除了MSE以外的计算误差的方法R^2sklearn.metrics.r2_score,其主要组成如下:

    • SSE(sum of squared error):误差平方和在这里插入图片描述
    • TSS(total sum of squares):整体方差
      在这里插入图片描述
    • R^2(coefficient of determination)
      在这里插入图片描述
  2. 判断数据分布是否符合正态分布的方法:

    1. 可视化dataframe.hist
    2. 使用scipy的normaltest函数scipy.stats.mstats.normaltest,该函数输出一个p值,p值越大表示越接近正如态分布,一般来讲,p大于0.05可视为符合正态分布
  3. 让数据分布变为正态分布的几种方法:

    1. log变换np.log
    2. 开平方np.sqrt
    3. box-cox变换scipy.stats.boxcox
  4. 在进行预测时应使用和训练集一样的变换方式,即训练集使用fit_transform,测试集直接使用transform。另外对于预测值,如果之前对标签进行了例如box-cox变换,需要对预测的标签进行scipy.special.inv_boxcox变换

二、Data Splits and Cross Validation

  • 训练集、测试集划分函数sklearn.model_selection.train_test_split,其他划分方法sklearn.model_selection.ShuffleSplit

  • 交叉验证函数sklearn.model_selection.cross_val_score,修改其中的cv参数可以有如下几种方式,默认为k折交叉验证:

    1. 分层交叉验证(Stratified k-fold cross validation)sklearn.model_selection.StratifiedKFold:首先它属于交叉验证类型,分层的意思是说在每一折中都保持着原始数据中各个类别的比例关系,比如说:原始数据有3类,比例为1:2:1,采用3折分层交叉验证,那么划分的3折中,每一折中的数据类别保持着1:2:1的比例,这样的验证结果更加可信。

    2. 留一法(LeaveOneOut)sklearn.model_selection.LeaveOneOut:是一种特殊的交叉验证方式。顾名思义,如果样本容量为n,则k=n,进行n折交叉验证,每次留下一个样本进行验证。主要针对小样本数据。

  • sklearn中的pipeline函数sklearn.pipeline.Pipeline:可以将多种对数据进行的操作整合到一起。Pipeline对象接受二元tuple构成的list,每一个二元 tuple 中的第一个元素为 arbitrary identifier string,我们用以获取(access)Pipeline object 中的 individual elements,二元 tuple 中的第二个元素是 scikit-learn与之相适配的transformer 或者 estimator。一般可以包括标准化、PCA、模型等等。

  • cross_val_predict函数sklearn.model_selection.cross_val_predict:得到经过K折交叉验证计算得到的每个训练验证的输出预测

  • 网格搜索sklearn.model_selection.GridSearchCV

三、Regression with Regularization Techniques

  • 岭回归(Ridge Regression):带有L2正则化的线性回归
  • Lasso回归(Lasso Regression):带有L1正则化的线性回归
  • 弹性网(Elastic Net):结合L1正则化和L2正则化的线性回归
  • Recursive Feature Elimination(RFE):sklearn.feature_selection.RFE是一种去除不重要特征的方法,具体操作是给定模型结构和准备舍弃的特征数量,送入RFE方法后就会得到新的模型。
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐