模型的一些通用方法:

lg = LinearRegression()
lg.fit(X,y)
lg.coef
lg.intercept

lg.predict(X_new)

  • get_params([deep]):返回模型的参数。
    • deep: 如果为True,则可以返回模型参数的子对象。
  • set_params(**params):设置模型的参数。
    • params:待设置的关键字参数。
  • fit(X,y[,sample_weight]):训练模型。
    • X :训练集样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
    • y :训练样本的标签集合。它与X 的每一行相对应。
    • sample_weight: 每个样本的权重。它与X 的每一行相对应。
  • predict(x): 利用模型执行预测。返回一个预测结果序列。
    • X:测试集样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
  • score(X,y[,sample_weight]):对模型进行评估,返回模型的性能评估结果。
    • X:验证集样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
    • y:验证集样本的标签集合。它与X 的每一行相对应。
    • sample_weight: 每个样本的权重。它与X 的每一行相对应。
    • 对于分类模型,其评估的是accuracy ;对于回归模型,其评估的是R2 。
    • 如果希望有其它的评估指标,则可以执行predict() 方法,然后把预测结果、真实标记作为参数来调用一些打分函数即可。

模型的一些通用参数:

  • n_jobs:一个正数,指定任务并形时指定的 CPU数量。如果为 -1 则使用所有可用的 CPU。
  • verbose:一个正数。用于开启/关闭迭代中间输出日志功能。
    • 数值越大,则日志越详细。
    • 数值为0或者None,表示关闭日志输出。
  • warm_start:一个布尔值。如果为True,那么使用前一次训练结果继续训练。否则从头开始训练。
  • max_iter :一个整数,指定最大迭代次数。
    • 如果为None则为默认值(不同solver的默认值不同)。
  • random_state:一个整数或者一个RandomState实例,或者None。

    • 如果为整数,则它指定了随机数生成器的种子。
    • 如果为RandomState实例,则指定了随机数生成器。
    • 如果为None,则使用默认的随机数生成器。

      1.1 LinearRegression

  • LinearRegression是线性回归模型,它的原型为:

  • class sklearn.linear_model.LinearRegression(fit_intercept=True,normalize=False,copy_X=True, n_jobs=1)
    • fit_intercept:一个布尔值,指定是否需要计算截距项。
    • normalize:一个布尔值。如果为True,那么训练样本会在训练之前会被归一化。
    • copy_X:一个布尔值。如果为True,则会拷贝X 。
    • n_jobs:一个整数,指定计算并行度。
  • 模型属性:
    • coef_:权重向量。
    • intercept_: 值。
  • 模型方法:

    • fit(X,y[,sample_weight]):训练模型。
    • predict(X):用模型进行预测,返回预测值。
    • score(X,y[,sample_weight]):返回模型的预测性能得分。

      1.2 Ridge

      Ridge类实现了岭回归模型。其原型为:
  • class sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True, normalize=False,copy_X=True, max_iter=None, tol=0.001, solver=’auto’, random_state=None)

    • alpha: 用于缓解过拟合。
    • max_iter: 指定最大迭代次数。
    • tol:一个浮点数,指定判断迭代收敛与否的阈值。
    • solver:一个字符串,指定求解最优化问题的算法。可以为:
      • ‘auto’:根据数据集自动选择算法。
      • ‘svd’:使用奇异值分解来计算回归系数。
      • ‘cholesky’:使用scipy.linalg.solve函数来求解。
      • ‘sparse_cg’:使用scipy.sparse.linalg.cg函数来求解。
      • ‘lsqr’:使用scipy.sparse.linalg.lsqr函数求解。它运算速度最快,但是可能老版本的scipy不支持。
      • ‘sag’:使用Stochastic Average Gradient descent算法求解最优化问题。
  • random_state:用于设定随机数生成器,它在solver=sag时使用。

其它参数参考LinearRegression 。
模型属性:

  • coef_:权重向量。
  • intercept_: 值。
  • niter:实际迭代次数。

当𝑎𝑙𝑝ℎ𝑎alpha 超过 1 之后,随着 𝑎𝑙𝑝ℎ𝑎alpha 的增长,预测性能急剧下降。
这是因为 𝑎𝑙𝑝ℎ𝑎alpha 较大时,正则化项影响较大,模型趋向于简单。
极端情况下当𝑎𝑙𝑝ℎ𝑎alpha 无穷大 时, 从而使得正则化项等于0,此时的模型最简单。
但是预测预测性能非常差,因为对所有的未知样本,模型都预测为同一个常数 。
image.png

RidgeCV

  • RidgeCV类的损失函数和损失函数的优化方法完全与Ridge类相同,区别在于验证方法。
  • 验证方法:
    • RidgeCV类对超参数α使用了交叉验证,来帮忙我们选择一个合适的α。在初始化RidgeCV类时候,我们可以传一组备选的α值,10个,100个都可以。RidgeCV类会帮我们选择一个合适的α。免去了我们自己去一轮轮筛选α的苦恼。  
  • 使用场景:
    • 一般来说,只要我们觉得数据有线性关系,用LinearRegression类拟合的不是特别好,需要正则化,可以考虑用RidgeCV类。不是为了学习的话就不用Ridge类。为什么这里只是考虑用RidgeCV类呢?因为线性回归正则化有很多的变种,Ridge只是其中的一种。所以可能需要比选。如果输入特征的维度很高,而且是稀疏线性关系的话,RidgeCV类就不合适了

image.png

Lasso

Lasso回归的损失函数优化方法常用的有两种,坐标轴下降法和最小角回归法。Lasso类采用的是坐标轴下降法
Lasso类实现了Lasso回归模型。其原型为:

  • lass sklearn.linear_model.Lasso(alpha=1.0, fit_intercept=True, normalize=False,precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state=None, selection=’cyclic’) alpha: 用于缓解过拟合。
  • precompute:一个布尔值或者一个序列。是否提前计算Gram矩阵来加速计算。
  • warm_start:是否从头开始训练。
  • positive:一个布尔值。如果为True,那么强制要求权重向量的分量都为正数。
  • selection:一个字符串,可以为’cyclic’或者’random’。它指定了当每轮迭代的时候,选择权重向量的哪个分量来更新。
    • ‘random’:更新的时候,随机选择权重向量的一个分量来更新
    • ‘cyclic’:更新的时候,从前向后依次选择权重向量的一个分量来更新

其它参数参考Ridge
模型属性:参考Ridge
模型方法: 参考LinearRegression
image.png

LassoCV    

  • LassoCV类的损失函数和损失函数的优化方法完全与Lasso类相同,区别在于验证方法。
  • 验证方法:
    • LassoCV类对超参数α使用了交叉验证,来帮忙我们选择一个合适的α。在初始化LassoCV类时候,我们可以传一组备选的α值,10个,100个都可以。LassoCV类会帮我们选择一个合适的α。免去了我们自己去一轮轮筛选α的苦恼。 
  • 使用场景:  
    • LassoCV类是进行Lasso回归的首选。当我们面临在一堆高位特征中找出主要特征时,LassoCV类更是必选。当面对稀疏线性关系时,LassoCV也很好用。

LogisticRegression

class sklearn.linear_model.LogisticRegression(penalty=’l2’, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’liblinear’, max_iter=100, multi_class=’ovr’, verbose=0, warm_start=False, n_jobs=1)

  • penalty:一个字符串,指定了正则化策略。
    • 如果为’l2’, 则为 正则化。
    • 如果为’l1’,则为 正则化。
  • C:一个浮点数。它指定了罚项系数的倒数。如果它的值越小,则正则化项越大。
  • class_weight:一个字典或者字符串’balanced’ ,指定每个类别的权重。
    • 如果为字典:则字典给出了每个分类的权重。如{class_label: weight} 。
    • 如果为字符串’balanced’:则每个分类的权重与该分类在样本集中出现的频率成反比。
    • 如果未指定,则每个分类的权重都为 1 。
  • solver:一个字符串,指定了求解最优化问题的算法。可以为下列的值:
    • ‘newton-cg’:使用牛顿法。
    • ‘lbfgs’:使用L-BFGS拟牛顿法。
    • ‘liblinear’:使用liblinear 。
    • ‘sag’:使用Stochastic Average Gradient descent算法。 注意:
    • 对于规模小的数据集,’liblinear’比较适用;对于规模大的数据集,’sag’比较适用。
    • ‘newton-cg’、’lbfgs’、’sag’只处理penalty=’l2’的情况。
  • multi_class:一个字符串,指定对于多分类问题的策略。可以为:
    • ‘ovr’:采用one-vs-rest策略。
    • ‘multinomial’:直接采用多分类 logistic回归策略。
  • 模型方法:
    • fit(X,y[,sample_weight]):训练模型。
    • predict(X):用模型进行预测,返回预测值。
    • score(X,y[,sample_weight]):返回模型的预测性能得分。
    • predict_log_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。
    • predict_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率值。

性能度量

  • 在scikit-learn中有三种方法来评估estimator 的预测性能:
    • estimator 的.score方法。
    • 通过使用model_selection中的模型评估工具来评估,如model_selection.cross_val_score等方法。
    • 通过scikit-learn的metrics模块中的函数来评估estimator 的预测性能。
    • metrics模块中的性能评价函数的通用参数:
      • y_true:一个数组,给出了真实的标记集合。
      • y_pred:一个数组,给出了预测的标记集合。
      • sample_weight:一个浮点数,给出了样本权重。默认每个样本的权重为 1

分类问题性能度量

  • accuracy_score函数用于计算分类结果的准确率,其原型为:
    • sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)返回值:如果normalize为True,则返回准确率;如果normalize为False,则返回正确分类的数量。
    • 参数:
      • y_true:真实的标记集合。
      • y_pred:预测的标记集合。
      • normalize:一个布尔值,指示是否需要归一化结果。
      • sample_weight:样本权重,默认每个样本的权重为 1 。
  • precision_score函数用于计算分类结果的查准率,其原型为:
    • sklearn.metrics.precision_score(y_true, y_pred, average=’binary’, sample_weight=None)
    • 返回值:查准率。即预测结果为正类的那些样本中,有多少比例确实是正类。
    • 参数:
      • y_true:真实的标记集合。
      • y_pred:预测的标记集合。
      • pos_label:一个字符串或者整数,指定哪个标记值属于正类。
    • average:一个字符串或者None,用于指定二分类或者多类分类的precision 如何计算。
      • ‘binary’:计算二类分类的precision。
      • ‘micro’:通过全局的正类和父类,计算precision 。
      • ‘macro’:计算每个类别的precision,然后返回它们的均值。
      • ‘weighted’:计算每个类别的precision,然后返回其加权均值,权重为每个类别的样本数。
    • sample_weight:样本权重,默认每个样本的权重为 1
  • recall_score函数用于计算分类结果的查全率,其原型为:
    • sklearn.metrics.recall_score(y_true, y_pred, labels=None, pos_label=1, average=’binary’, sample_weight=None)
    • 返回值:查全率。即真实的正类中,有多少比例被预测为正类。
    • 参数:同precision
  • f1_score函数用于计算分类结果的 值,其原型为:
    • sklearn.metrics.f1_score(y_true, y_pred, average=’binary’, sample_weight=None)
    • 返回值: f1值。即查准率和查全率的调和均值。
    • 参数同precision
  • classification_report函数以文本方式给出了分类结果的主要预测性能指标。其原型为:
    • sklearn.metrics.classification_report(y_true, y_pred, labels=None, target_names=None,sample_weight=None, digits=2)
    • 返回值:一个格式化的字符串,给出了分类评估报告。
    • 参数:
      • y_true:真实的标记集合。
      • y_pred:预测的标记集合。
      • sample_weight:样本权重,默认每个样本的权重为 1
  • 分类评估报告的内容如下,其中:
    • precision列:给出了查准率。它依次将类别 0 作为正类,类别 1 作为正类…
    • recall列:给出了查全率。它依次将类别 0 作为正类,类别 1 作为正类…
    • f1-score列:给出了 f1 值。
    • support列:给出了该类有多少个样本。
    • avg / total行:
      • 对于precision,recall,recall,给出了该列数据的算术平均。
      • 对于support列,给出了该列的算术和(其实就等于样本集总样本数量)

image.png

  • confusion_matrix函数给出了分类结果的混淆矩阵。其原型为:
    • sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None)
    • 返回值:一个格式化的字符串,给出了分类结果的混淆矩阵。
    • 参数:参考classification_report 。
  • 混淆矩阵的内容如下,其中 Cij 表示真实标记为i 但是预测为 j 的样本的数量。
  • Confusion Matrix:
    [[5 0]
    [3 2]]

  • precision_recall_curve函数用于计算分类结果的P-R曲线。其原型为:

    • sklearn.metrics.precision_recall_curve(y_true, probas_pred, pos_label=None,sample_weight=None)
    • 返回值:一个元组,元组内的元素分别为:
      • P-R曲线的查准率序列。该序列是递增序列,序列第 i 个元素是当正类概率的判定阈值为 thresholds[i]时的查准率。
      • P-R曲线的查全率序列。该序列是递减序列,序列第 i 个元素是当正类概率的判定阈值为 thresholds[i]时的查全率。
      • P-R曲线的阈值序列thresholds。该序列是一个递增序列,给出了判定为正例时的正类概率的阈值。
    • 参数:
      • y_true:真实的标记集合
      • probas_pred:每个样本预测为正类的概率的集合
      • sample_weight:样本权重,默认每个样本的权重为 1
  • roc_curve函数用于计算分类结果的ROC曲线。其原型为:

    • sklearn.metrics.roc_curve(y_true, y_score, pos_label=None, sample_weight=None,drop_intermediate=True)
    • 返回值:一个元组,元组内的元素分别为:
      • ROC曲线的 FPR 序列。该序列是递增序列,序列第 i 个元素是当正类概率的判定阈值为 thresholds[i]时的假正例率。
      • ROC曲线的 TPR 序列。该序列是递增序列,序列第 i 个元素是当正类概率的判定阈值为 thresholds[i]时的真正例率。
      • ROC曲线的阈值序列thresholds。该序列是一个递减序列,给出了判定为正例时的正类概率的阈值。
    • 参数:

      • y_true:真实的标记集合
      • y_score:每个样本预测为正类的概率的集合
      • sample_weight:样本权重,默认每个样本的权重为 1

        DecisionTreeRegressor是回归决策树,其原型为

    • class sklearn.tree.DecisionTreeRegressor(criterion=’mse’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_features=None,random_state=None, max_leaf_nodes=None, presort=False)

    • criterion:一个字符串,指定切分质量的评价准则。
      • 默认为’mse’,且只支持该字符串,表示均方误差。
    • splitter:一个字符串,指定切分原则。可以为:
      • ‘best’:表示选择最优的切分。
      • ‘random’:表示随机切分,部分划分点中找局部最优的划分点
    • max_features:可以为整数、浮点、字符串或者None,指定寻找最优拆分时考虑的特征数量。
      • 如果是整数,则每次切分只考虑 max_features 个特征。
      • 如果是浮点数,则每次切分只考虑 max_features * n_features 个特征,max_features指定了百分比。
      • 如果是字符串’sqrt’,则 max_features等于 sqrt(n_features) 。
      • 如果是字符串’log2’,则 max_features等于 log2(n_features) 。
      • 如果是 None或者 ‘auto’,则 max_features等于 n_features 。
    • max_depth:可以为整数或者None,指定树的最大深度。
      • 如果为None,则表示树的深度不限。分裂子结点,直到每个叶子都是纯的(即:叶结点中所有样本点都属于一个类),或者叶结点中包含小于 min_samples_split 个样点。
      • 一般来说,数据少或者特征少的时候可以不管这个值。如果模型样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间
    • min_samples_split:为整数,指定每个内部结点包含的最少的样本数。这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。 默认是2.如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值
    • min_samples_leaf:为整数,指定每个叶结点包含的最少的样本数。这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。 默认是1,可以输入最少的样本数的整数,或者最少样本数占样本总数的百分比。如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。10万样本使用min_samples_leaf的值为5作为参考
    • min_weight_fraction_leaf:为浮点数,叶结点中样本的最小权重系数。这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝。 默认是0,就是不考虑权重问题。一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重,这时我们就要注意这个值了
    • max_leaf_nodes:为整数或者None,指定最大的叶结点数量,防止过拟合。
      • 如果为None,此时叶结点数量不限。
      • 如果非None,则max_depth被忽略。
    • class_weight:为一个字典、字符串’balanced’、或者 None 。它指定了分类的权重。
      • 如果为字典,则权重的形式为:{class_label:weight}。
      • 如果为字符串’balanced’ ,则表示分类的权重是样本中各分类出现的频率的反比。
      • 如果为None,则每个分类的权重都为1 。
    • presort:一个布尔值,指定是否要提前排序数据从而加速寻找最优切分的过程。
      • 对于大数据集,设置为 True 会减慢总体的训练过程。
      • 对于一个小数据集或者设定了最大深度的情况下,设置为 True 会加速训练过程。
  • 模型属性:
    • featureimportances:给出了特征的重要程度。该值越高,则该特征越重要。
    • maxfeatures:max_features的推断值。
    • nfeatures:当执行fit之后,特征的数量。
    • noutputs:当执行fit之后,输出的数量。
  • 模型方法:

    • fit(X, y[, sample_weight, check_input, …]):训练模型。
    • predict(X[, check_input]):用模型进行预测,返回预测值。
    • score(X,y[,sample_weight]):返回模型的预测性能得分。

      DecisionTreeClassifier是分类决策树

    • sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None,min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None,random_state=None,max_leaf_nodes=None, class_weight=None,presort=False)

    • criterion:一个字符串,指定切分质量的评价准则。可以为:
      • ‘gini’:表示切分时评价准则是Gini系数
      • ‘entropy’:表示切分时评价准则是熵
      • 其它参数参考 DecisionTreeRegressor 。
    • 模型属性:
      • classes_:分类的标签值。
      • nclasses:给出了分类的数量。
      • 其它属性参考 DecisionTreeRegressor 。
    • 模型方法:
      • fit(X, y[, sample_weight, check_input, …]):训练模型。
      • predict(X[, check_input]):用模型进行预测,返回预测值。
      • predict_log_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。
      • predict_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率值。
      • score(X,y[,sample_weight]):返回模型的预测性能得分。
  • 决策图当训练完毕一棵决策树的时候,可以通过
    • sklearn.tree.export_graphviz(classifier,out_file)来将决策树转化成Graphviz格式的文件。
  • 需要安装Graphviz程序。Graphviz是贝尔实验室开发的一个开源的工具包,用于绘制结构化的图形网络,支持多种格式输出如常用的图片格式、SVG、PDF格式等,且支持Linux\mid Windows操作系统。
  • 通过Graphviz的 dot工具,在命令行中运行命令dot.exe -Tpdf F:\mid out -o F:\mid out.pdf 生成pdf格式的决策图;或者执行dot.exe -Tpng F:\mid out -o F:\mid out.png 来生成png格式的决策图。
  • 其中 :-T选项指定了输出文件的格式,-o选项指定了输出文件名
  • GradientBoostingClassifier是GBDT 分类模型,其原型为:

    • class sklearn.ensemble.GradientBoostingClassifier(loss=’deviance’, learning_rate=0.1,n_estimators=100, subsample=1.0, min_samples_split=2, min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_depth=3, init=None, random_state=None, max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, presort=’auto’)
    • loss:一个字符串,指定损失函数。可以为:
      • ‘deviance’(默认值):此时损失函数为对数损失函数: 。
      • ‘exponential’:此时使用指数损失函数。
    • n_estimators:一个整数,指定基础决策树的数量(默认为100),值越大越好。
    • learning_rate:一个浮点数,表示学习率,默认为1。
      • 它用于减少每一步的步长,防止步长太大而跨过了极值点。
      • 通常学习率越小,则需要的基础分类器数量会越多,因此在learning_rate和n_estimators之间会有所折中。
    • max_depth:一个整数或者None,指定了每个基础决策树模型的max_depth参数。
      • 调整该参数可以获得最佳性能。如果max_leaf_nodes不是None,则忽略本参数。
    • min_samples_split:一个整数,指定了每个基础决策树模型的min_samples_split参数。
    • min_samples_leaf:一个整数,指定了每个基础决策树模型的min_samples_leaf参数。
    • min_weight_fraction_leaf:一个浮点数,指定了每个基础决策树模型的min_weight_fraction_leaf参数。
    • subsample:一个大于 0 小于等于 1.0 的浮点数,指定了提取原始训练集中多大比例的一个子集用于训练基础决策树。
    • max_features:一个整数或者浮点数或者字符串或者None,指定了每个基础决策树模型的max_features参数。
    • max_leaf_nodes:为整数或者None,指定了每个基础决策树模型的max_leaf_nodes参数。
    • verbose:一个正数。用于开启/关闭迭代中间输出日志功能。
    • presort:一个布尔值或者’auto’。指定了每个基础决策树模型的presort参数。
    • 模型属性:
      • featureimportances:每个特征的重要性。
      • oobimprovement:给出训练过程中,每增加一个基础决策树,在测试集上损失函数的改善情况(即:损失函数的减少值)。
      • trainscore:给出训练过程中,每增加一个基础决策树,在训练集上的损失函数的值。
      • init:初始预测使用的分类器。
      • estimators_:所有训练过的基础决策树。
    • 模型方法:
      • fit(X, y[, sample_weight, monitor]):训练模型。其中monitor是一个可调用对象,它在当前迭代过程结束时调用。如果它返回True,则训练过程提前终止。
      • predict(X):用模型进行预测,返回预测值。
      • predict_log_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。
      • predict_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率值。
      • score(X,y[,sample_weight]):返回模型的预测性能得分。
      • staged_predict(X):返回一个数组,数组元素依次是:GBDT 在每一轮迭代结束时的预测值。
      • staged_predict_proba(X):返回一个二维数组,数组元素依次是:GBDT 在每一轮迭代结束时,预测X为各个类别的概率值。
      • staged_score(X, y[, sample_weight]):返回一个数组,数组元素依次是:GBDT 在每一轮迭代结束时,该GBDT 的预测性能得分。

        GradientBoostingRegressor 是GBRT 回归模型,其原型为:

  • class sklearn.ensemble.GradientBoostingRegressor(loss=’ls’, learning_rate=0.1,n_estimators=100, subsample=1.0, min_samples_split=2, min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_depth=3, init=None, random_state=None,max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None, warm_start=False, presort=’auto’)

  • loss:一个字符串,指定损失函数。可以为:
    • ‘ls’:损失函数为平方损失函数。
    • ‘lad’:损失函数为绝对值损失函数。
    • ‘huber’:损失函数为上述两者的结合,通过alpha参数指定比例,该损失函数的定义为:

image.png

  1. - 即误差较小时,采用平方损失;在误差较大时,采用绝对值损失。<br />
  2. - 'quantile':分位数回归(分位数指得是百分之几),通过alpha参数指定分位数。<br />
  • alpha:一个浮点数,只有当loss=’huber’或者loss=’quantile’时才有效。
  • 其他参数参考GradientBoostingClassifier 。
  • 模型属性:
    • featureimportances:每个特征的重要性。
    • oobimprovement:给出训练过程中,每增加一个基础决策树,在测试集上损失函数的改善情况(即:损失函数的减少值)。
    • trainscore :给出训练过程中,每增加一个基础决策树,在训练集上的损失函数的值。
    • init:初始预测使用的回归器。
    • estimators_:所有训练过的基础决策树。
  • 模型方法:
    • fit(X, y[, sample_weight, monitor]):训练模型。
    • predict(X):用模型进行预测,返回预测值。
    • score(X,y[,sample_weight]):返回模型的预测性能得分。
    • staged_predict(X):返回一个数组,数组元素依次是:GBRT 在每一轮迭代结束时的预测值。
    • staged_score(X, y[, sample_weight]):返回一个数组,数组元素依次是:GBRT在每一轮迭代结束时,该GBRT的预测性能得分。
      • RandomForestClassifier是随机森林分类模型,其原型为:
  • class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’,max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0,max_features=’auto’, max_leaf_nodes=None, bootstrap=True, oob_score=False, n_jobs=1,random_state=None, verbose=0, warm_start=False, class_weight=None)
  • n_estimators:一个整数,指定了随机森林中决策树的数量.
  • criterion:一个字符串,指定了每个决策树的criterion参数。
  • max_features:一个整数或者浮点数或者字符串或者None,指定了每个决策树的max_features参数。
  • max_depth:一个整数或者None,指定了每个决策树的max_depth参数。
  • min_samples_split:一个整数,指定了每个决策树的min_samples_split参数。
  • min_samples_leaf:一个整数,指定了每个决策树的min_samples_leaf参数。
  • min_weight_fraction_leaf:一个浮点数,指定了每个决策树的min_weight_fraction_leaf参数。
  • max_leaf_nodes:为整数或者None,指定了每个基础决策树模型的max_leaf_nodes参数。
  • boostrap:为布尔值。如果为True,则使用采样法bootstrap sampling来产生决策树的训练数据集。
  • oob_score:为布尔值。如果为True,则使用包外样本来计算泛化误差。
  • n_jobs:指定并行性。
  • random_state:指定随机数种子。
  • verbose:一个正数。用于开启/关闭迭代中间输出日志功能。
  • warm_start:一个布尔值。用于指定是否继续使用上一次训练的结果。
  • class_weight:一个字典,或者字典的列表,或者字符串’balanced’,或者字符串’balanced_subsample’,或者None:
  • 模型属性:
    • estimators_:所有训练过的基础决策树。
    • classes_:所有的类别标签。
    • nclasses:类别数量。
    • nfeatures:训练时使用的特征数量。
    • noutputs:训练时输出的数量。
    • featureimportances:每个特征的重要性。
    • oobscore:训练数据使用包外估计时的得分。
  • 模型方法:

    • fit(X, y[, sample_weight]):训练模型。
    • predict(X):用模型进行预测,返回预测值。
    • predict_log_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。
    • predict_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率值。
    • score(X,y[,sample_weight]):返回模型的预测性能得分。

    • GridSearchCV用于实现超参数优化,max_depth,min-()其原型为: param_grid,字典数据

  • class sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None,fit_params=None, n_jobs=1, iid=True, refit=True, cv=None,verbose=0,pre_dispatch=’2*n_jobs’, error_score=’raise’,return_train_score=’warn’)

  • estimator:一个学习器对象。它必须有.fit方法用于学习,.predict方法用于预测,有.score方法用于性能评分。
  • param_grid:字典或者字典的列表。每个字典都给出了学习器的一个超参数,其中:
    • 字典的键就是超参数名。
    • 字典的值是一个列表,指定了超参数对应的候选值序列。
  • fit_params:一个字典,用来给学习器的.fit方法传递参数。
  • iid:如果为True,则表示数据是独立同分布的。
  • refit:一个布尔值。如果为True,则在参数优化之后使用整个数据集来重新训练该最优的estimator 。
  • error_score:一个数值或者字符串’raise’,指定当estimator训练发生异常时,如何处理:
    • 如果为’raise’,则抛出异常。
    • 如果为数值,则将该数值作为本轮estimator的预测得分。
    • return_train_score: 一个布尔值,指示是否返回训练集的预测得分。
  • 其它参数参考cross_val_score 。
  • 属性:
    • cvresults:一个数组的字典。可以直接用于生成pandas DataFrame 。其中键为超参数名,值为超参数的数组。
    • mean_fit_time、mean_score_time 、std_fit_time、std_score_time:给出了训练时间、评估时间的均值和方差,单位为秒。
    • xx_score:给出了各种评估得分。
    • bestestimator:一个学习器对象,代表了根据候选参数组合筛选出来的最佳的学习器。如果refit=False,则该属性不可用。
    • bestscore:最佳学习器的性能评分。
    • bestparams:最佳参数组合。
    • scorer_:评分函数。
    • nsplits:交叉验证的 k 值。
  • 方法:
    • fit(X[, y,groups]):执行参数优化。
    • predict(X) :使用学到的最佳学习器来预测数据。
    • predict_log_proba(X) :使用学到的最佳学习器来预测数据为各类别的概率的对数值。
    • predict_proba(X) :使用学到的最佳学习器来预测数据为各类别的概率。
    • score(X[, y]) :通过给定的数据集来判断学到的最佳学习器的预测性能。
    • transform(X):对最佳学习器执行transform 。
    • inverse_transform(X):对最佳学习器执行逆 transform 。
    • decision_function(X):对最佳学习器调用决策函数。

GridSearchCV实现了estimator的.fit、.score方法。这些方法内部会调用estimator的对应的方法。
在调用GridSearchCV.fit方法时,首先会将训练集进行 k 折交叉,然后在每次划分的集合上进行多轮的训练和验证(每一轮都采用一种参数组合),然后调用最佳学习器的.fit 方法
In [ ]: