Scikit-Learn各算法详细参数速查手册(中文)
martin
1. 线性模型
1.1 线性回归
LinearRegression是scikit-learn
提供的线性回归模型,其原型为:
class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)
- [x] 导包
- from sklearn.linear_model import LinearRegression
- [x] 参数
fit_intercept
: 一个布尔值,指定是否需要计算b值。如果为False,那么不计算b值。normalize
: 一个布尔值。如果为True,那么训练样本会在回归之前被归一化。copy_X
: 一个布尔值。如果为True,则会被复制。n_jobs
: 一个正数。任务并行时指定的CPU数量。如果为-1则使用所有可用的CPU。
- [x] 属性
coef_
: 权重向量。intercept_
: 截距b值。
- [x] 方法
fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。score(X,y)
: 返回性能得分。设预测集为 Ttest ,真实值为 yi ,真实值的均值为 y¯ ,预测值为 y^i ,则:
score=1−∑Ttest(yi−y^i)2(yi−y¯)2
1.2 线性回归的正则化
1.2.1 Lasso回归(L1正则)
- [x] 导包
- from sklearn.linear_model import Lasso
- [x] 参数
alpha
: α 值,其值越大则正则化项的占比越大。fit_intercept
:一个布尔值,指定是否需要计算b值。如果为False,那么不计算b值。max_iter
: 一个整数,指定最大迭代次数。normalize
:一个布尔值。如果为True,那么训练样本会在回归之前被归一化。copy_X
: 一个布尔值。如果为True,则会被复制。precompute
: 一个布尔值或者一个序列。决定是否提前计算Gram矩阵来加速计算。tol
: 一个浮点数,指定判断迭代收敛与否的阈值warm_start
: 一个布尔值。如果为True,那么使用前一次训练结果继续训练。否则从头开始训练positive
: 一个布尔值。如果为True,那么要求权重向量的分量都为正数。selection
: 一个字符串,可以为‘cyclic’或者‘random’。它指定了当每轮迭代的时候,选择权重向量的那个分量来更新。
- cyclic:更新的时候,从前向后依次选择权重向量的一个分量来更新。
- random:更新的时候,随机选择权重向量的一个分量来更新。
random_state
: 一个整数或者一个RandomState实例,或者None。
- 整数,则指定了随机数生成器的种子。
- RandomState,则指定了随机数生成器。
- None,则默认使用随机数生成器。
- [x] 属性
coef_
: 权重向量。intercept_
: 截距b值。n_iter_
: 实际迭代次数。
- [x] 方法
fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。score(X,y)
: 返回性能得分。设预测集为 Ttest ,真实值为 yi ,真实值的均值为 y¯ ,预测值为 y^i ,则:
score=1−∑Ttest(yi−y^i)2(yi−y¯)2
1.2.2 岭回归(L2正则)
- [x] 导包
- from sklearn.linear_model import Ridge
- [x] 参数
alpha
: α 值,其值越大则正则化项的占比越大。fit_intercept
:一个布尔值,指定是否需要计算b值。如果为False,那么不计算b值。max_iter
: 一个整数,指定最大迭代次数。normalize
:一个布尔值。如果为True,那么训练样本会在回归之前被归一化。copy_X
: 一个布尔值。如果为True,则会被复制。solver
: 一个字符串,指定求解最优化问题的算法。可以为:
- auto : 根据数据集自动选择算法。
- svd :使用奇异值分解计算回归系数。
- cholesky :使用scipy.linalg.solve函数来求解。
- sparse_cg :使用scipy.sparse.linalg.cg函数来求解。
- lsqr :使用scipy.sparse.linalg.lsqr函数来求解。
- sag :使用随机梯度下降来求解
tol
: 一个浮点数,指定判断迭代收敛与否的阈值random_state
: 一个整数或者一个RandomState实例,或者None。
- 整数,则指定了随机数生成器的种子。
- RandomState,则指定了随机数生成器。
- None,则默认使用随机数生成器。
- [x] 属性
coef_
: 权重向量。intercept_
: 截距b值。n_iter_
: 实际迭代次数。
- [x] 方法
fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。score(X,y)
: 返回性能得分。设预测集为 Ttest ,真实值为 yi ,真实值的均值为 y¯ ,预测值为 y^i ,则:
score=1−∑Ttest(yi−y^i)2(yi−y¯)2
1.2.3 ElasticNet(弹性网络正则)
- [x] 导包
- from sklearn.linear_model import ElasticNet
- [x] 参数
alpha
: α 值,其值越大则正则化项的占比越大。l1_ratio
: ρ 值。公式为:
αρ||ω||1+α(1−ρ)2||ω||22,α≥0,0≤ρ≤1fit_intercept
:一个布尔值,指定是否需要计算b值。如果为False,那么不计算b值。max_iter
: 一个整数,指定最大迭代次数。normalize
:一个布尔值。如果为True,那么训练样本会在回归之前被归一化。copy_X
: 一个布尔值。如果为True,则会被复制。precompute
: 一个布尔值或者一个序列。决定是否提前计算Gram矩阵来加速计算。tol
: 一个浮点数,指定判断迭代收敛与否的阈值warm_start
: 一个布尔值。如果为True,那么使用前一次训练结果继续训练。否则从头开始训练positive
: 一个布尔值。如果为True,那么要求权重向量的分量都为正数。selection
: 一个字符串,可以为‘cyclic’或者‘random’。它指定了当每轮迭代的时候,选择权重向量的那个分量来更新。
- cyclic:更新的时候,从前向后依次选择权重向量的一个分量来更新。
- random:更新的时候,随机选择权重向量的一个分量来更新。
random_state
: 一个整数或者一个RandomState实例,或者None。
- 整数,则指定了随机数生成器的种子。
- RandomState,则指定了随机数生成器。
- None,则默认使用随机数生成器。
- [x] 属性
coef_
: 权重向量。intercept_
: 截距b值。n_iter_
: 实际迭代次数。
- [x] 方法
fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。score(X,y)
: 返回性能得分。设预测集为 Ttest ,真实值为 yi ,真实值的均值为 y¯ ,预测值为 y^i ,则:
score=1−∑Ttest(yi−y^i)2(yi−y¯)2
1.3 逻辑回归
Logistic Regression是scikit-learn
提供的逻辑回归模型,其原型为:
class sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, 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)
- [x] 导包
- from sklearn.linear_model import LogisticRegression
- [x] 参数
penalty
: 一个字符串,指定了正则化策略。
- l2 : 优化目标为 12||ω⃗ ||22+CL(ω⃗ ) 。
- l1 : 优化目标为 12||ω⃗ ||1+CL(ω⃗ ) 。
dual
: 一个布尔值。如果为True,则求解对偶形式(只在penalty=‘l2’且solver=‘liblinear’有对偶形式),如果为False,则求解原始形式。C
: 一个浮点数。它指定了罚项系数的倒数
。如果它的值越小,则正则化项越大。fit_intercept
: 一个布尔值,指定是否需要计算b值。如果为False,那么不计算b值。intercept_scaling
: 一个浮点数。只有当solver=‘liblinear’才有意义。当采用fit_intercept时,相当于人造了一个特征,该特征恒为1,其权重为b。在计算正则化项的时候,该人造特征也被考虑了。因此为了降低这个人造特征的影响,需要提供intercept_scaling。class_weight
: 一个字典或者字符串‘balanced’。
- 字典 : 字典给出每个分类的权重。
- balanced : 每个分类的权重与该分类在样本集中出现的频率成反比。
- 未指定 : 每个分类权重都为1。
max_iter
: 一个整数,制定最大迭代数。random_state
:一个整数或者一个RandomState实例,或者None。
- 整数,则指定了随机数生成器的种子。
- RandomState,则指定了随机数生成器。
- None,则默认使用随机数生成器。
solver
: 一个字符串,指定了求解最优化的算法,可以为:
- newton-cg : 使用牛顿法。只适用于penalty=‘l2’。
- lbfgs : 使用L-BFGS拟牛顿法。只适用于penalty=‘l2’。
- liblinear : 使用liblinear,适用于小数据集。
- sag : 使用Stochastic Average Gradient Descent算法,适用于大数据集。只适用于penalty=‘l2’。
tol
: 一个浮点数,指定判断迭代收敛与否的阈值multi_class
: 一个字符串,指定对于多分类问题的策略,可以为:
- ovr : 采用one-vs-rest策略。
- multinomial : 直接采用多分类逻辑回归策略,不能与
liblinear
共存。
verbose
: 一个正数。用于开启关闭迭代中输出日志。warm_start
: 一个布尔值。如果为True,那么使用前一次训练结果继续训练。否则从头开始训练n_jobs
: 一个正数。任务并行时指定的CPU数量。如果为-1则使用所有可用的CPU。
- [x] 属性
coef_
: 权重向量。intercept_
:b值。n_iter
:实际迭代次数。
- [x] 方法
fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。predict_log_proba(X)
: 返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。predict_proba(X)
: 返回一个数组,数组的元素依次是X预测为各个类别的概率值。score(X,y)
: 返回在(X,y)上预测的准确率(accuracy)。
1.4 线性判别分析
LinearDiscriminationAnalysis是scikit-learn
提供的线性判别分析模型,其原型为:
class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver=’svd’, shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)[source]
- [x] 导包
- from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
- [x] 参数
solver
: 一个字符串,指定求解最优化问题的算法,可以为:
- svd:奇异值分解,对于有大规模特征的数据推荐用此种算法。
- lsqr:最小平方QR分解法,可以结合shrinkage,适合大且稀疏的矩阵。
- eigen:特征值分解法,可以结合shrinkage。
shrinkage
: 字符串‘auto’或者浮点数或者None。该参数通常在训练样本数量小于特征数量的场合下使用。该参数只有在solver=lsqr或者eigen下才有意义。priors
: 一个数组,数组中的元素依次指定了每个类别的先验概率。如果为None,则认为每个类别的先验概率是均等的。n_components
:store_covariance
:tol
:
- [x] 属性
coef_
: 权重向量。intercept_
: b值。covariance
:一个数组,依次给出每个类别的协方差矩阵。means_
: 一个数组,依次给出每个类别的均值向量。xbar_
: 给出了整体样本的均值向量。n_iter
: 实际迭代次数。
- [x] 方法
fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。predict_log_proba(X)
: 返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。predict_proba(X)
: 返回一个数组,数组的元素依次是X预测为各个类别的概率值。score(X,y)
: 返回在(X,y)上预测的准确率(accuracy)。
2. 决策树
2.1 回归决策树
DescisionTreeRegressor实现了回归决策树,用于回归问题,其原型为:
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, min_impurity_split=1e-07, presort=False)[source]
- [x] 导包
- from sklearn.tree import DecisionTreeRegressor
- [x] 参数
criterion
: 一个字符串,指定切分质量的评价标准。默认为‘mse’,且只支持该字符串,表示均方误差。splitter
: 一个字符串,指定切分原则,可以为:
best
: 表示选择最优的切分。random
: 表示随机切分。
max_features
: 可以为整数、浮点、字符或者None,指定寻找best split时考虑的特征数量。
- 如果是整数,则每次切分只考虑max_features个特征。
- 如果是浮点数,则每次切分只考虑max_features*n_features个特征(max_features指定了百分比)。
- 如果是字符串‘auto’,则max_features等于n_features。
- 如果是字符串‘sqrt’,则max_features等于sqrt(n_features)。
- 如果是字符串‘log2’,则max_features等于log2(n_features)。
- 如果是字符串None,则max_features等于n_features。
max_depth
: 可以为整数或者None,指定树的最大深度。
- 如果为None,表示树的深度不限(知道每个叶子都是纯的,即叶子结点中的所有样本点都属于一个类,或者叶子中包含小于min_sanples_split个样本点)。
- 如果max_leaf_nodes参数非None,则忽略此项。
min_samples_split
: 为整数,指定每个内部节点(非叶子节点)包含的最少的样本数。min_samples_leaf
: 为整数,指定每个叶子结点包含的最少的样本数。min_weight_fraction_leaf
: 为浮点数,叶子节点中样本的最小权重系数。max_leaf_nodes
: 为整数或None,指定叶子结点的最大数量。
- 如果为None,此时叶子节点数不限。
- 如果非None,则max_depth被忽略。
class_weight
: 一个字典、字典的列表、字符串‘balanced’或者None,他指定了分类的权重。权重形式为:{class_label:weight}
- 如果为None,则每个分类权重都为1.
- 字符串‘balanced’表示每个分类的权重是各分类在样本出现的频率的反比。
random_state
: 一个整数或者一个RandomState实例,或者None。
- 如果为整数,则它指定了随机数生成器的种子。
- 如果为RandomState实例,则指定了随机数生成器。
- 如果为None,则使用默认的随机数生成器。
presort
: 一个布尔值,指定了是否要提前排序数据从而加速寻找最优切分的过程。设置为True时,对于大数据集会减慢总体训练过程,但对于小数据集或者设定了最大深度的情况下,则会加速训练过程。
- [x] 属性
feature_importances_
: 给出了特征的重要程度。该值越高,则特征越重要(也称为Gini importance)。max_features_
: max_feature的推断值。n_features_
: 当执行fit后,特征的数量。n_outputs_
: 当执行fit后,输出的数量。tree_
: 一个Tree对象,即底层的决策树。
- [x] 方法
fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。score(X,y)
: 返回性能得分。设预测集为 Ttest ,真实值为 yi ,真实值的均值为 y¯ ,预测值为 y^i ,则:
score=1−∑Ttest(yi−y^i)2(yi−y¯)2
2.2分类决策树
DescisionTreeClassifier实现了分类决策树,用于分类问题,其原型为:
class 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, min_impurity_split=1e-07, class_weight=None, presort=False)
- [x] 导包
- from sklearn.tree import DecisionTreeClassifier
[x] 参数
criterion
: 一个字符串,指定切分质量的评价标准。可以为:- ‘gini’ :表示切分标准是Gini系数。切分时选取基尼系数小的属性切分。
数据集基尼指数:Gini(D)=1−∑k=1K(|Ck||D|)2给定特征A,根据其是否取某一个可能值a,样本集D被分为D1和D2Gini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(D2)
- ‘entropy’ : 表示切分标准是熵。切分时选取熵大的属性切分。数据集总量为 |D| ,共有 K 个类,每个类数量为
|Ck| ,根据特征A可以将数据集切分,每个数据集数量为 |Di|:数据集D的经验熵:H(D)=−∑k=1K|Ck||D|log2|Ck||D|特征A对数据集D的经验条件熵:H(D|A)=∑i=1n|Di||D|H(Di)=−∑i=1n|Di||D|∑k=1K|Dik||Di|log2|Dik||Di|计算信息增益:g(D,A)=H(D)−H(D|A)
- ‘gini’ :表示切分标准是Gini系数。切分时选取基尼系数小的属性切分。
splitter
: 一个字符串,指定切分原则,可以为:best
: 表示选择最优的切分。random
: 表示随机切分。
max_features
: 可以为整数、浮点、字符或者None,指定寻找best split时考虑的特征数量。
- 如果是整数,则每次切分只考虑max_features个特征。
- 如果是浮点数,则每次切分只考虑max_features*n_features个特征(max_features指定了百分比)。
- 如果是字符串‘auto’,则max_features等于n_features。
- 如果是字符串‘sqrt’,则max_features等于sqrt(n_features)。
- 如果是字符串‘log2’,则max_features等于log2(n_features)。
- 如果是字符串None,则max_features等于n_features。
max_depth
: 可以为整数或者None,指定树的最大深度。
- 如果为None,表示树的深度不限(知道每个叶子都是纯的,即叶子结点中的所有样本点都属于一个类,或者叶子中包含小于min_sanples_split个样本点)。
- 如果max_leaf_nodes参数非None,则忽略此项。
min_samples_split
: 为整数,指定每个内部节点(非叶子节点)包含的最少的样本数。min_samples_leaf
: 为整数,指定每个叶子结点包含的最少的样本数。min_weight_fraction_leaf
: 为浮点数,叶子节点中样本的最小权重系数。max_leaf_nodes
: 为整数或None,指定叶子结点的最大数量。
- 如果为None,此时叶子节点数不限。
- 如果非None,则max_depth被忽略。
class_weight
: 一个字典、字典的列表、字符串‘balanced’或者None,他指定了分类的权重。权重形式为:{class_label:weight}
- 如果为None,则每个分类权重都为1.
- 字符串‘balanced’表示每个分类的权重是各分类在样本出现的频率的反比。
random_state
: 一个整数或者一个RandomState实例,或者None。
- 如果为整数,则它指定了随机数生成器的种子。
- 如果为RandomState实例,则指定了随机数生成器。
- 如果为None,则使用默认的随机数生成器。
presort
: 一个布尔值,指定了是否要提前排序数据从而加速寻找最优切分的过程。设置为True时,对于大数据集会减慢总体训练过程,但对于小数据集或者设定了最大深度的情况下,则会加速训练过程。
- [x] 属性
classes_
: 分类的标签值。feature_importances_
: 给出了特征的重要程度。该值越高,则特征越重要(也称为Gini importance)。max_features_
: max_feature的推断值。n_classes_
: 给出了分类的数量。n_features_
: 当执行fit后,特征的数量。n_outputs_
: 当执行fit后,输出的数量。tree_
: 一个Tree对象,即底层的决策树。
- [x] 方法
fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。predict_log_proba(X)
: 返回一个数组,数组元素依次为X预测为各个类别的概率值的对数值。predict_proba(X)
: 返回一个数组,数组元素依次为X预测为各个类别的概率值。score(X,y)
: 返回在(X,y)上预测的准确率(accuracy)。
3. 贝叶斯分类器
朴素贝叶斯算法
- 输入
- 训练集 T=(x1,y1),(x2,y2),...,(xN,yN) , xi=(x(1)i,x(2)i,...,x(n)i)T , x(j)i 为第i个样本的第j个特征,其中 x(j)i∈{ aj1,aj2,...,ajsj}