martin
LinearRegression是scikit-learn
提供的线性回归模型,其原型为:
class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)
fit_intercept
: 一个布尔值,指定是否需要计算b值。如果为False,那么不计算b值。normalize
: 一个布尔值。如果为True,那么训练样本会在回归之前被归一化。copy_X
: 一个布尔值。如果为True,则会被复制。n_jobs
: 一个正数。任务并行时指定的CPU数量。如果为-1则使用所有可用的CPU。coef_
: 权重向量。intercept_
: 截距b值。fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。score(X,y)
: 返回性能得分。设预测集为
alpha
:
fit_intercept
:一个布尔值,指定是否需要计算b值。如果为False,那么不计算b值。max_iter
: 一个整数,指定最大迭代次数。normalize
:一个布尔值。如果为True,那么训练样本会在回归之前被归一化。copy_X
: 一个布尔值。如果为True,则会被复制。precompute
: 一个布尔值或者一个序列。决定是否提前计算Gram矩阵来加速计算。tol
: 一个浮点数,指定判断迭代收敛与否的阈值warm_start
: 一个布尔值。如果为True,那么使用前一次训练结果继续训练。否则从头开始训练positive
: 一个布尔值。如果为True,那么要求权重向量的分量都为正数。selection
: 一个字符串,可以为‘cyclic’或者‘random’。它指定了当每轮迭代的时候,选择权重向量的那个分量来更新。 random_state
: 一个整数或者一个RandomState实例,或者None。 coef_
: 权重向量。intercept_
: 截距b值。n_iter_
: 实际迭代次数。fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。score(X,y)
: 返回性能得分。设预测集为
alpha
:
fit_intercept
:一个布尔值,指定是否需要计算b值。如果为False,那么不计算b值。max_iter
: 一个整数,指定最大迭代次数。normalize
:一个布尔值。如果为True,那么训练样本会在回归之前被归一化。copy_X
: 一个布尔值。如果为True,则会被复制。solver
: 一个字符串,指定求解最优化问题的算法。可以为: tol
: 一个浮点数,指定判断迭代收敛与否的阈值random_state
: 一个整数或者一个RandomState实例,或者None。 coef_
: 权重向量。intercept_
: 截距b值。n_iter_
: 实际迭代次数。fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。score(X,y)
: 返回性能得分。设预测集为
alpha
:
l1_ratio
:
fit_intercept
:一个布尔值,指定是否需要计算b值。如果为False,那么不计算b值。max_iter
: 一个整数,指定最大迭代次数。normalize
:一个布尔值。如果为True,那么训练样本会在回归之前被归一化。copy_X
: 一个布尔值。如果为True,则会被复制。precompute
: 一个布尔值或者一个序列。决定是否提前计算Gram矩阵来加速计算。tol
: 一个浮点数,指定判断迭代收敛与否的阈值warm_start
: 一个布尔值。如果为True,那么使用前一次训练结果继续训练。否则从头开始训练positive
: 一个布尔值。如果为True,那么要求权重向量的分量都为正数。selection
: 一个字符串,可以为‘cyclic’或者‘random’。它指定了当每轮迭代的时候,选择权重向量的那个分量来更新。 random_state
: 一个整数或者一个RandomState实例,或者None。 coef_
: 权重向量。intercept_
: 截距b值。n_iter_
: 实际迭代次数。fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。score(X,y)
: 返回性能得分。设预测集为
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)
penalty
: 一个字符串,指定了正则化策略。 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’。 max_iter
: 一个整数,制定最大迭代数。random_state
:一个整数或者一个RandomState实例,或者None。 solver
: 一个字符串,指定了求解最优化的算法,可以为: tol
: 一个浮点数,指定判断迭代收敛与否的阈值multi_class
: 一个字符串,指定对于多分类问题的策略,可以为: liblinear
共存。verbose
: 一个正数。用于开启关闭迭代中输出日志。warm_start
: 一个布尔值。如果为True,那么使用前一次训练结果继续训练。否则从头开始训练n_jobs
: 一个正数。任务并行时指定的CPU数量。如果为-1则使用所有可用的CPU。coef_
: 权重向量。intercept_
:b值。n_iter
:实际迭代次数。fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。predict_log_proba(X)
: 返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。predict_proba(X)
: 返回一个数组,数组的元素依次是X预测为各个类别的概率值。score(X,y)
: 返回在(X,y)上预测的准确率(accuracy)。LinearDiscriminationAnalysis是scikit-learn
提供的线性判别分析模型,其原型为:
class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver=’svd’, shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)[source]
solver
: 一个字符串,指定求解最优化问题的算法,可以为: shrinkage
: 字符串‘auto’或者浮点数或者None。该参数通常在训练样本数量小于特征数量的场合下使用。该参数只有在solver=lsqr或者eigen下才有意义。priors
: 一个数组,数组中的元素依次指定了每个类别的先验概率。如果为None,则认为每个类别的先验概率是均等的。n_components
: store_covariance
:tol
: coef_
: 权重向量。intercept_
: b值。covariance
:一个数组,依次给出每个类别的协方差矩阵。means_
: 一个数组,依次给出每个类别的均值向量。xbar_
: 给出了整体样本的均值向量。n_iter
: 实际迭代次数。fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。predict_log_proba(X)
: 返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。predict_proba(X)
: 返回一个数组,数组的元素依次是X预测为各个类别的概率值。score(X,y)
: 返回在(X,y)上预测的准确率(accuracy)。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]
criterion
: 一个字符串,指定切分质量的评价标准。默认为‘mse’,且只支持该字符串,表示均方误差。splitter
: 一个字符串,指定切分原则,可以为: best
: 表示选择最优的切分。random
: 表示随机切分。max_features
: 可以为整数、浮点、字符或者None,指定寻找best split时考虑的特征数量。 max_depth
: 可以为整数或者None,指定树的最大深度。 min_samples_split
: 为整数,指定每个内部节点(非叶子节点)包含的最少的样本数。min_samples_leaf
: 为整数,指定每个叶子结点包含的最少的样本数。min_weight_fraction_leaf
: 为浮点数,叶子节点中样本的最小权重系数。max_leaf_nodes
: 为整数或None,指定叶子结点的最大数量。 class_weight
: 一个字典、字典的列表、字符串‘balanced’或者None,他指定了分类的权重。权重形式为:{class_label:weight} random_state
: 一个整数或者一个RandomState实例,或者None。 presort
: 一个布尔值,指定了是否要提前排序数据从而加速寻找最优切分的过程。设置为True时,对于大数据集会减慢总体训练过程,但对于小数据集或者设定了最大深度的情况下,则会加速训练过程。feature_importances_
: 给出了特征的重要程度。该值越高,则特征越重要(也称为Gini importance)。max_features_
: max_feature的推断值。n_features_
: 当执行fit后,特征的数量。n_outputs_
: 当执行fit后,输出的数量。tree_
: 一个Tree对象,即底层的决策树。fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。score(X,y)
: 返回性能得分。设预测集为
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] 参数
criterion
: 一个字符串,指定切分质量的评价标准。可以为:
splitter
: 一个字符串,指定切分原则,可以为:
best
: 表示选择最优的切分。random
: 表示随机切分。max_features
: 可以为整数、浮点、字符或者None,指定寻找best split时考虑的特征数量。 max_depth
: 可以为整数或者None,指定树的最大深度。 min_samples_split
: 为整数,指定每个内部节点(非叶子节点)包含的最少的样本数。min_samples_leaf
: 为整数,指定每个叶子结点包含的最少的样本数。min_weight_fraction_leaf
: 为浮点数,叶子节点中样本的最小权重系数。max_leaf_nodes
: 为整数或None,指定叶子结点的最大数量。 class_weight
: 一个字典、字典的列表、字符串‘balanced’或者None,他指定了分类的权重。权重形式为:{class_label:weight} random_state
: 一个整数或者一个RandomState实例,或者None。 presort
: 一个布尔值,指定了是否要提前排序数据从而加速寻找最优切分的过程。设置为True时,对于大数据集会减慢总体训练过程,但对于小数据集或者设定了最大深度的情况下,则会加速训练过程。classes_
: 分类的标签值。feature_importances_
: 给出了特征的重要程度。该值越高,则特征越重要(也称为Gini importance)。max_features_
: max_feature的推断值。n_classes_
: 给出了分类的数量。n_features_
: 当执行fit后,特征的数量。n_outputs_
: 当执行fit后,输出的数量。tree_
: 一个Tree对象,即底层的决策树。fit(X,y)
: 训练模型。predict(X)
: 用模型预测,返回预测值。predict_log_proba(X)
: 返回一个数组,数组元素依次为X预测为各个类别的概率值的对数值。predict_proba(X)
: 返回一个数组,数组元素依次为X预测为各个类别的概率值。score(X,y)
: 返回在(X,y)上预测的准确率(accuracy)。朴素贝叶斯算法
三大算法均是朴素贝叶斯算法,区别在于假设了不同的
GaussianNB假设:
GaussianNB是高斯贝叶斯分类器,它假设特征的条件概率分布满足高斯分布:
priors
: 类的先验概率。如果指定的先验概率并不适合数据。class_prior_
: 一个数组,形状为(n_classes),是每个类别的概率
class_count_
: 一个数组,形状为(n_classes),是每个类别包含的样本数量。theta_
: 一个数组,形状为(n_classes,n_features),是每个类别上每个特征的均值
sigma_
: 一个数组,形状为(n_classes,n_features),是每个类别上每个特征的标准差
fit(X,y)
: 训练模型。partial_fit(X,y)
: 追加训练模型,该方法主要用于大规模数据集的训练,此时大规模数据集被分成多个小数据集然后分别训练。predict(X)
: 用模型预测,返回预测值。predict_log_proba(X)
: 返回一个数组,数组元素依次为X预测为各个类别的概率值的对数值。predict_proba(X)
: 返回一个数组,数组元素依次为X预测为各个类别的概率值。score(X,y)
: 返回在(X,y)上预测的准确率(accuracy)。MultinomialNB是多项贝叶斯分类器,它假设特征的条件概率分布满足多项分布。
贝叶斯估计:
设第
当
其原型为:
class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
[x] 导包
alpha
: 一个浮点数,指定
fit_prior
: 布尔值。如果为True,则不去学习
class_prior
: 一个数组它指定了每个类别的先验概率
class_log_prob_
: 一个数组对象,形状为(n_classes),给出了每个类别调整后的经验概率分布的对数值。feature_log_prob_
: 一个数组对象,形状为(n_classes,n_features)。给出了
class_count_
: 一个数组,形状为(N_classes),是每个类别包含的训练样本数。feature_count_
: 一个数组,形状为(n_classes,n_features)。训练过程中,每个类别每个特征遇到的样本数。fit(X,y)
: 训练模型。partial_fit(X,y)
: 追加训练模型,该方法主要用于大规模数据集的训练,此时大规模数据集被分成多个小数据集然后分别训练。predict(X)
: 用模型预测,返回预测值。predict_log_prob(X)
: 返回一个数组,数组元素依次为X预测为各个类别的概率值的对数值。predict_prob(X)
: 返回一个数组,数组元素依次为X预测为各个类别的概率值。score(X,y)
: 返回在(X,y)上预测的准确率(accuracy)。BernoulliNB是伯努利贝叶斯分类器。它假设特征的条件概率分布满足二项分布:
alpha
: 一个浮点数,指定
binarize
: 一个浮点数或者None。 fit_prior
: 布尔值。如果为True,则不去学习
class_prior
: 一个数组它指定了每个类别的先验概率
class_log_prob_
: 一个数组对象,形状为(n_classes),给出了每个类别调整后的经验概率分布的对数值。feature_log_prob_
: 一个数组对象,形状为(n_classes,n_features)。给出了
class_count_
: 一个数组,形状为(N_classes),是每个类别包含的训练样本数。feature_count_
: 一个数组,形状为(n_classes,n_features)。训练过程中,每个类别每个特征遇到的样本数。fit(X,y)
: 训练模型。partial_fit(X,y)
: 追加训练模型,该方法主要用于大规模数据集的训练,此时大规模数据集被分成多个小数据集然后分别训练。predict(X)
: 用模型预测,返回预测值。predict_log_prob(X)
: 返回一个数组,数组元素依次为X预测为各个类别的概率值的对数值。predict_prob(X)
: 返回一个数组,数组元素依次为X预测为各个类别的概率值。score(X,y)
: 返回在(X,y)上预测的准确率(accuracy)。KNeighborsClassifier是scikit-learn
提供的K近邻算法分类模型,其原型为:
class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None, n_jobs=1, **kwargs)
n_neighbors
: 一个整数,指定k值。weights
: 一字符串或者可调用对象,指定投票权重类型。即这些邻居投票权可以为相同或者不同。 algorithm
: 一个字符串,指定最近邻的算法,可以为下: leaf_size
: 一个整数,指定BallTree或者KDTree叶节点的规模。它影响树的构建和查询速度。metric
: 一个字符串,指定距离度量。默认为‘minkowski’(闵可夫斯基)距离。P
: 整数值。 n_jobs
: 并行性。默认为-1表示派发任务到所有计算机的CPU上。fit(X,y)
: 训练模型。predict(X)
: 预测模型。score(X,y)
: 返回在(X,y)上预测的准确率(accuracy)。predict_proba(X)
: 返回样本为每种标记的概率。kneighbors([X,n_neighbors,return_distace])
: 返回样本点的k邻近点。如果return_distance=True,同时还返回到这些近邻点的距离。kneighbors_graph([X,n_neighbors,mode])
: 返回样本点的连接图。KNeighborsRegressor是scikit-learn
提供的K近邻算法回归模型,其原型为:
class sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None, n_jobs=1, **kwargs)
n_neighbors
: 一个整数,指定k值。weights
: 一字符串或者可调用对象,指定投票权重类型。即这些邻居投票权可以为相同或者不同。 algorithm
: 一个字符串,指定最近邻的算法,可以为下: leaf_size
: 一个整数,指定BallTree或者KDTree叶节点的规模。它影响树的构建和查询速度。metric
: 一个字符串,指定距离度量。默认为‘minkowski’(闵可夫斯基)距离。P
: 整数值。 n_jobs
: 并行性。默认为-1表示派发任务到所有计算机的CPU上。fit(X,y)
: 训练模型。predict(X)
: 预测模型。score(X,y)
: 返回性能得分。设预测集为
predict_proba(X)
: 返回样本为每种标记的概率。kneighbors([X,n_neighbors,return_distace])
: 返回样本点的k邻近点。如果return_distance=True,同时还返回到这些近邻点的距离。kneighbors_graph([X,n_neighbors,mode])
: 返回样本点的连接图。PCA是scikit-learn
中提供的PCA模型,其原型为:
class sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver=’auto’, tol=0.0, iterated_power=’auto’, random_state=None)
n_components
: 一个整数,指定降维后的维数。 copy
: 一个布尔值。如果为False,则直接用原始数据来训练,结果会覆盖原始数据所在的数组。whiten
:一个布尔值。如果为True,则将特征向量除以n_samples倍的特征值,从而保证非相关输出的方差为1。tol
: 一个浮点数,指定arpack他特征值求解器的收敛阈值(如果为0,则自动选择)。svd_solver
:字符串。 random_state
: 整数或者一个RandomState实例或者None。 iterated_power
: 整数或者‘auto’。指定使用svd_solver = ‘randomized’方法进行高效迭代。components_
: 主成分数组。explained_variance_
: 每个成分对应的explained variance。explained_variance_ratio_
: 一个数组,元素是每个主分成的explained variance的比例。mean_
: 一个数组,元素是每个特征的统计平均值。n_components_
: 一个整数,指示主成分有多少各元素。fit(X,y)
: 训练模型。transform(X)
: 执行降维。fit_transform(X,y)
: 训练模型并降维。inverse_transform(X)
: 执行升维(逆向操作),将数据从低维空间逆向转换到原始空间。IncrementalPCA适用于超大规模数据,它可以将数据分批加载进内存。其原型为:
class sklearn.decomposition.IncrementalPCA(n_components=None, whiten=False, copy=True, batch_size=None)
n_components
: 一个整数,指定降维后的维数。 bath_size
: 一个整数或者None,指定每个批次训练时,使用的样本数量。只有当调用fit()/partial_fit()方法时才会用到该参数。 copy
: 一个布尔值。如果为False,则直接用原始数据来训练,结果会覆盖原始数据所在的数组。whiten
:一个布尔值。如果为True,则将特征向量除以n_samples倍的特征值,从而保证非相关输出的方差为1。components_
: 主成分数组。explained_varicance_
: 每个成分对应的explained variance。explained_variance_ratio_
: 一个数组,元素是每个主分成的explained variance的比例。mean_
: 一个数组,元素是每个特征的统计平均值。var_
: 一个数组,元素是每个特征的经验方差。每调用一次partial_fit()方法,就会更新一次该属性。n_components_
: 一个整数,指示主成分有多少各元素。n_samples_seen_
: 一个整数,只是目前已经处理了多少个样本。每调用一次partial_fit()方法,就会更新一次该属性。每调用一个fit()方法就会清零该属性。fit(X,y)
: 训练模型。partial_fit(X,y)
: 继续训练模型,使用bath_size个样本。transform(X)
: 执行降维。fit_transform(X,y)
: 训练模型并降维。inverse_transform(X)
: 执行升维(逆向操作),将数据从低维空间逆向转换到原始空间。KMeans是scikitlearn
提供的k均值聚类算法模型,其原型为:
class sklearn.cluster.KMeans(n_clusters=8, init=’k-means++’, n_init=10, max_iter=300, tol=0.0001, precompute_distances=’auto’, verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm=’auto’)
n_clusters
: 一个整数,指定分类数量。init
: 一个字符串,指定初始均值向量的策略,可以为以下值: n_init
: 一个整数,指定了k均值算法的运行次数,每一次都会选择一组不同的初始化均值向量,最终算法会选择最佳的分类簇作为最终结果。algorithm
: 一个字符串。 max_iter
: 一个整数,指定了单轮kmeans算法中最大的迭代次数。算法总的迭代次数为:max_iter*n_init。precompute_distances
: 可以为布尔值或者字符串‘auto’。该参数指定是否提前计算好样本之间的距离(如果提前计算需要更多内存,但是算法会运行更快)。 tol
: 一个浮点数,指定了算法收敛的阈值。n_jobs
: 一个整数,指定任务并行时指定CPU数量,如果为-1使用全部CPU。verbose
: 一个整数。如果为0,则不输出日志,如果为1,则每隔一段时间打印一次日志,如果大于1则打印日志更频繁。random_state
: 一个整数或者一个RandomState实例,或者None。 copy_x
: 布尔值,用于precompute_distances=True的情况。 cluster_centers_
: 给出分类簇的均值向量。labels_
: 给出每个样本所属的簇的标记。inertia_
: 给出了每个样本距离他们各自最近的簇中心的距离之和。fit(X,y)
: 训练模型。fit_predict(X,y)
: 训练模型并预测每个样本所属的簇。它等价于先调用fit()方法,后调用predict()方法。predict(X)
: 预测样本所属的簇。score(X,y)
: 给出了样本距离簇中心的偏移量的相反数。DBSCAN是scikit-learn
提供的密度聚类算法模型,其原型为:
class sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric=’euclidean’, algorithm=’auto’, leaf_size=30, p=None, n_jobs=1)
eps
:
min_samples
: MinPts参数,用于判断核心对象。metric
: 一个字符串或者可调用对象,用于计算距离。如果是字符串,则必须是在metrics.pairwise.calculate_distance中指定它。algorithm
: 一个字符串,用于计算两点距离并找出最近邻点,可以为如下: leaf_size
: 一个整数,用于指定当algorithm=ball_tree或者kd_tree时,树的叶节点大小。该参数会影响构建树、搜索最近邻速度,同时影响存储树的内存。p
: 闵可夫斯基距离p参数。core_sample_indices_
: 核心样本在原始训练集中的位置。components_
: 核心样本的一份副本。labels_
: 每个样本所属的簇的标记。对于噪声样本,其簇标记为-1样本fit(X,y)
: 训练模型。fit_predict(X,y)
: 训练模型并预测每个样本的所属簇的标记。AgglomerativeClustering是scikitlearn
提供的层次聚类算法模型。其原型为:
class sklearn.cluster.AgglomerativeClustering(n_clusters=2, affinity=’euclidean’, memory=Memory(cachedir=None), connectivity=None, compute_full_tree=’auto’, linkage=’ward’, pooling_func=)
n_clusters
: 一个整数,指定分类簇的数量。connectivity
: 一个数组或者可调用对象或者为None,用于指定连接矩阵,它指出了每个样本可连接的样本。affinity
: 一个字符串或者可调用对象,用于计算距离,可以为:’euclidean’,’l1’,’l2’,’manhattan’,’cosine’,’precomputed’,如果linkage=’ward’,则’affinity’必须是’euclidean’。memory
: 用于缓存输出结果,默认不缓存。compute_full_tree
: 通常当训练了n_clusters之后,训练过程就停止,但是如果为True则会继续训练从而生成一棵完整的树。linkage
: 一个字符串,用于指定链接算法。 pooling_func
: 一个可调用对象,它的输入是一组特征值,输出是一个数值。labels_
: 每个样本的簇标记。n_leaves_
: 分层树的叶节点数量。n_components
: 连接图中联通分量的估计值。children
: 一个数组,给出了每个非叶节点中的子节点数量。fit(X,y)
: 训练模型。fit_predict(X,y)
: 训练模型并预测每个样本所属的标记。LinearSVC实现了线性分类支持向量机,它是根据liblinear
实现的,可以用于二分类、也可以用于多分类,其原型为:
class sklearn.svm.LinearSVC(penalty=’l2’, loss=’squared_hinge’, dual=True, tol=0.0001, C=1.0, multi_class=’ovr’, fit_intercept=True, intercept_scaling=1, class_weight=None, verbose=0, random_state=None, max_iter=1000)
C
: 一个浮点数,罚项系数。C值越大对误分类的惩罚越大。loss
: 字符串,表示损失函数,可以为如下值: penalty
:字符串,指定‘l1’或者‘l2’,罚项范数。默认为‘l2’(他是标准的SVM范数)。dual
:布尔值,如果为True,则解决对偶问题,如果是False,则解决原始问题。当n_samples>n_features是,倾向于采用False。tol
:浮点数,指定终止迭代的阈值。multi_class
:字符串,指定多分类的分类策略。 fit_intecept
:布尔值,如果为True,则计算截距,即决策树中的常数项,否则忽略截距。intercept_scaling
:浮点值,若提供了,则实例X变成向量[X,intercept_scaling]。此时相当于添加一个人工特征,该特征对所有实例都是常数值。class_weight
: 可以是个字典或者字符串‘balanced’。指定个各类的权重,若未提供,则认为类的权重为1。 verbose
:一个整数,表示是否开启verbose输出。random_state
:一个整数或者一个RandomState实例,或者None。 max_iter
:一个整数,指定最大迭代数。coef_
: 一个数组,它给出了各个特征的权重。intercept_
: 一个数组,它给出了截距。fit(X,y)
:训练模型。predict(X)
: 用模型进行预测,返回预测值。score(X,y)
: 返回在(X,y)上的预测准确率。SVC实现了非线性分类支持向量机,它是根据libsvm
实现的,可以用于二分类,也可以用于多分类,其原型为:
class sklearn.svm.SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto’, coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=None, random_state=None)
C
: 一个浮点数,罚项系数,C越大惩罚越大。kernel
: 一个字符串,指定核函数。 degree
: 一个整数,指定当核函数是多项式核函数时,多项式的系数。对于其它核函数该参数无效。gamma
:一个浮点数。当核函数是’rbf’,’poly’,’sigmoid’时,核函数的系数。如果为‘auto’,则表示系数为
coef0
:浮点数,用于指定核函数中的自由项。只有当核函数是‘poly’和‘sigmoid’时有效。probability
:布尔值。如果为True,则会进行概率估计。它必须在训练之前设定好,且会拖慢训练速度。shrinking
: 布尔值。如果为True,则使用启发式收缩。tol
:浮点数,指定终止迭代的阈值。cache_size
:浮点值,指定了kernel cache的大小,单位为MB。class_weight
: 可以是个字典,或者字符串‘balanced’。指定各个类的权重,若为提供,则权重均为1。verbose
:是否开启verbose输出。max_iter
:一个整数,指定最大迭代次数。decision_function_shape
:为字符串或者None,指定决策函数的形状。 random_state
:一个整数或者一个RandomState实例,或者None。 support_
:一个数组,形状为[n_SV],支持向量的下标。support_vectors_
:一个数组,形状为[n_SV,n_features],支持向量。n_support_
:一个数组,形状为[n_class],每一个分类的支持向量个数。dual_coef_
: 一个数组,形状为[n_class-1,n_SV]。对偶问题中,在分类决策函数中每一个支持向量的系数。coef_
:一个数组,形状为[n_class-1,n_features]。原始问题中,每个特征的系数。只有在linear kernel中有效。intercept_
:一个数组,形状为[n_class*(n_class-1)/2]。决策函数中的常数项。fit(X,y)
: 训练模型。predict(X)
: 用模型进行预测,返回预测值。score(X,y)
: 返回在(X,y)上预测的准确度。predict_log_proba(X)
: 返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。predict_proba(X)
:返回一个数组,数组的元素依次是X预测为各个类别的概率。LinearSVR实现了线性回归支持向量机,它基于liblinear
实现,其原型为:
class sklearn.svm.LinearSVR(epsilon=0.0, tol=0.0001, C=1.0, loss=’epsilon_insensitive’, fit_intercept=True, intercept_scaling=1.0, dual=True, verbose=0, random_state=None, max_iter=1000)
C
: 一个浮点值,罚项系数。loss
:字符串,表示损失函数,可以为: epsilon
:浮点数,用于lose中的
dual
:布尔值。如果为True,则解决对偶问题,如果是False则解决原始问题。tol
:浮点数,指定终止迭代的阈值。fit_intercept
:布尔值。如果为True,则计算截距,否则忽略截距。intercept_scaling
:浮点值。如果提供了,则实例X变成向量[X,intercept_scaling]。此时相当于添加了一个人工特征,该特征对所有实例都是常数值。verbose
:是否开启verbose输出。random_state
:一个整数或者一个RandomState实例,或者None。 max_iter
:一个整数,指定最大迭代次数。coef_
:一个数组,他给出了各个特征的权重。intercept_
:一个数组,他给出了截距,及决策函数中的常数项。fit(X,y)
:训练模型。predict(X)
:用模型进行预测,返回预测值。score(X,y)
:返回性能得分。设预测集为
SVR实现了非线性回归支持向量机,它是基于libsvm
实现的,其原型为:
class sklearn.svm.SVR(kernel=’rbf’, degree=3, gamma=’auto’, coef0=0.0, tol=0.001, C=1.0, epsilon=0.1, shrinking=True, cache_size=200, verbose=False, max_iter=-1)
C
:一个浮点值,罚项系数。epsilon
:浮点数,用于lose中的
kernel
: 一个字符串,指定核函数。 degree
:一个整数,指定当核函数是多项式核函数时,多项式的系数。对于其它核函数该参数无效。gamma
:一个浮点数。当核函数是’rbf’,’poly’,’sigmoid’时,核函数的系数。如果为‘auto’,则表示系数为
coef0
:浮点数,用于指定核函数中的自由项。只有当核函数是‘poly’和‘sigmoid’时有效。shrinking
:布尔值。如果为True,则使用启发式收缩。tol
:浮点数,指定终止迭代的阈值。cache_size
:浮点值,指定了kernel cache的大小,单位为MB。verbose
:指定是否开启verbose输出。max_iter
:一个整数,指定最大迭代步数。support_
:一个数组,形状为[n_SV],支持向量的下标。support_vectors_
:一个数组,形状为[n_SV,n_features],支持向量。n_support_
:一个数组,形状为[n_class],每一个分类的支持向量个数。dual_coef_
: 一个数组,形状为[n_class-1,n_SV]。对偶问题中,在分类决策函数中每一个支持向量的系数。coef_
:一个数组,形状为[n_class-1,n_features]。原始问题中,每个特征的系数。只有在linear kernel中有效。intercept_
:一个数组,形状为[n_class*(n_class-1)/2]。决策函数中的常数项。fit(X,y)
: 训练模型。predict(X)
: 用模型进行预测,返回预测值。score(X,y)
:返回性能得分。设预测集为
Bagging这个词是根据BootstrapAggregation这个词组创造的一个新词。Bootstrap,是指拔靴带,是帮助穿靴子时的一个纽带。统计学上的Bootstrap一般称为自助法,是指从m
个训练样本中随机有放回的抽样m次,重复此过程T次。然后对每个样本集进行训练,最后结果由T个训练器投票表决最终答案。
Bagging典型的代表就是Random Forest
,不过随机森林与Bagging有点不同:
由于以上两点,在样本充足的条件下,随机森林一般的结果都比任何一个单分类器效果要好。
Boosting就不同了,他是一种串行模型,取的是全部样本来学习,但是它会进行多次重复学习,并且每次学习都会在之前一步的学习结果上在进行学习和改进,改进的是对上一次分错的节点的权重,为的是在本次学习中上次分错的节点在本次会得到更多关注,进而分类正确。Adaboost是Boosting的一种。
下面给出一个例题,可以对Boosting有一个直观的认识:
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
y | 1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | -1 |
对于m=2步:
为何采用加法模型
下面介绍AdaBoost算法的过程:
1. 初始化训练数据的权值分布:
2. 对
(a) 使用具有权值分布
3. 构建基本分类器的线性组合:
1. 先来看基分类器的权值
我们知道AdaBoost是将多个弱分类器组合起来形成一个很强的分类器,但这里有个隐含条件:弱分类器。什么叫弱分类器?意思就是在效果上比随机猜想要好的分类器。比如二分类问题,随机猜想的正确率是0.5,所以说弱分类器的正确率一定要比0.5高,于是它的错误率
2. 再来看训练数据集分布的权值分配,公式如下:
由公式可知,对训练集的样例正确分类与错误分类之间,错误分类样本的权值被放大:
AdaBoost模型是由基本分类器组成的
1. 加法模型:
2. 损失函数:
3. 每次训练后的基分类器都是乘以
4. 于是,在第
5. 目标是每一次的损失在训练集上最小,所以最小化目标函数为:
上式中,将
6. 于是,有:
所以,我们得到了优化的目标函数:
7. 对6中的目标函数关于
等价于:
因为:
所以有:
8. 由于之前有个假设:
于是,就有了更新公式:
AdaBoostClassifier是scikit-learn
提供的AdaBoost分类器,其原型为:
class sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm=’SAMME.R’, random_state=None)
base_estimator
:是一个基础分类器对象。默认为DecisionTreeClassifier。该基础分类器必须支持带权重的学习。n_estimator
:一个整数,指定基础分类器的数量(默认50)。当然如果训练集已经完美地训练好了,可能算法会提前停止。此时基础分类器的数量少于该值。learning_rate
:为浮点数。默认为1.它用于每一步的步长,防止步长太大而跨过了极值点。通常learning_rate越小,则需要的基础分类器数量就会越多,因此在learning_rate和n_estimators之间会有所折中。learning_rate为下式中的v。 algorithm
:一个字符串,指定算法,该算法用于多分类问题,默认为’SAMME.R’。 random_state
:一个整数或者一个RandomState实例,或者None。 estimators_
:所有训练过的基础分类器。classes_
:所有类别标签。n_classes_
:类别数量。estimator_weights_
:每个基础分类器的权重。estimator_errors_
:每个基础分类器的分类误差。feature_importances_
:每个特征的重要性。fit(X,y)
:训练模型。predict(X)
:用模型进行预测,返回预测值。predict_log_proba(X)
:返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。predict_proba(X)
:返回一个数组,数组的元素依次是X预测为各个类别的概率值。score(X,y)
:返回在(X,y)上预测的准确率。staged_predict(X)
:返回一个数组,数组元素依次是每一轮迭代结束时尚未完成的集成分类器的预测值。staged_predict_proba(X)
:返回一个二维数组,数组元素依次是每一轮迭代结束时尚未完成的集成分类器预测X为各个类别的概率值。staged_score(X,y)
:返回一个数组,数组元素依次是每一轮迭代结束时尚未完成的集成分类器的预测准确率。AdaBoostRegressor是scikit-learn
提供的AdaBoost回归器,其原型为:
class sklearn.ensemble.AdaBoostRegressor(base_estimator=None, n_estimators=50, learning_rate=1.0, loss=’linear’, random_state=None)
base_estimator
:是一个基础回归器对象。默认为DecisionTreeRegressor。该基础回归器必须支持带权重的学习。 n_estimator
:一个整数,指定基础回归器的数量(默认50)。当然如果训练集已经完美地训练好了,可能算法会提前停止。此时基础回归器的数量少于该值。learning_rate
:为浮点数。默认为1.它用于每一步的步长,防止步长太大而跨过了极值点。通常learning_rate越小,则需要的基础回归器数量就会越多,因此在learning_rate和n_estimators之间会有所折中。learning_rate为下式中的v。 loss
:一个字符串,指定了损失函数,可以为: random_state
:一个整数或者一个RandomState实例,或者None。 estimators_
:所有训练过的基础回归器。estimator_weights_
:每个基础回归器的权重。estimator_errors_
:每个基础回归器的误差。feature_importances_
:每个特征的重要性。fit(X,y)
:训练模型。predict(X)
:用模型进行预测,返回预测值。score(X,y)
:返回性能得分。设预测集为
staged_predict(X)
:返回一个数组,数组元素依次是每一轮迭代结束时尚未完成的集成回归器的预测值。staged_score(X,y)
:返回一个数组,数组元素依次是每一轮迭代结束时尚未完成的集成回归器的预测准确率。GradientBoostingClassifier是scikit-learn
提供的梯度提升决策树,其原型为:
class sklearn.ensemble.GradientBoostingClassifier(loss=’deviance’, learning_rate=0.1, n_estimators=100, subsample=1.0, criterion=’friedman_mse’, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_split=1e-07, init=None, random_state=None, max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, presort=’auto’)
loss
:一个字符串,指定损失函数,可以为: n_estimators
:一个整数,指定基础决策树的数量(默认为100)。GBDT对过拟合有很好的鲁棒性,因此该值越大越好。learning_rate
:为浮点数。默认为1.它用于每一步的步长,防止步长太大而跨过了极值点。通常learning_rate越小,则需要的基础分类器数量就会越多,因此在learning_rate和n_estimators之间会有所折中。learning_rate为下式中的v。 max_depth
:一个整数或者None,指定每一个基础决策树模型的最大深度。如果max_leaf_noeds不是None,则忽略此参数。criterion
:字符串。用来衡量切分的质量。默认为‘friedman_mse’。可以为: min_samples_split
:一个整数,指定了每个基础决策树模型分裂所需最小样本数。min_samples_leaf
:一个整数,指定了每个基础决策树模型叶节点所包含的最小样本数。min_weight_fraction_leaf
:一个浮点数。叶节点的最小加权权重。当不提供sample_weight时,样本的权重是相等的。subsample
:一个浮点数,指定了提取原始训练集中的一个子集用于训练基础决策树,该参数就是子集占原始训练集的大小,
max_features
:一个整数,浮点数或者None。代表节点分裂是参与判断的最大特征数。整数为个数,浮点数为所占比重。max_leaf_nodes
:为整数或者None,指定了每个基础决策树模型的最大叶节点数量。min_impurity_split
:一个浮点数,指定在树生长的过程中,节点分裂的阈值,默认为1e-7。init
:一个基础分类器对象或者None,该分类器对象用于执行初始的预测。如果为None,则使用loss.init_estimator。verbose
:一个整数,如果为0则不输出日志,如果为1,则每隔一段时间输出日志,大于1输出日志会更频繁。warm_start
:布尔值。当为True是,则继续使用上一次训练结果。否则重新开始训练。random_state
:一个整数或者一个RandomState实例,或者None。 presort
:一个布尔值或者‘auto’,是否对数据进行显示以加速最佳分割的发现。默认情况下,自动模式将在密集的数据上使用presorting,默认为稀疏数据的正常排序。在稀疏的数据上设置显示值将会导致错误。feature_importance_
:一个数组,给出了每个特征的重要性(值越高重要性越大)。oob_improvement_
:一个数组,给出了每增加一棵基础决策树,在包外估计(即测试集)的损失函数的改善情况。(及损失函数减少值)。train_score_
:一个数组,给出每增加一棵基础决策树,在训练集上的损失函数的值。loss
:具体损失函数对象。init
:初始预测使用的分类器。estimators_
:一个数组,给出了每个基础决策树。fit(X,y)
:训练模型。predict(X)
:用模型进行预测,返回预测值。predict_log_proba(X)
:返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。predict_proba(X)
:返回一个数组,数组的元素依次是X预测为各个类别的概率值。score(X,y)
:返回在(X,y)上预测的准确率。staged_predict(X)
:返回一个数组,数组元素依次是每一轮迭代结束时尚未完成的集成分类器的预测值。staged_predict_proba(X)
:返回一个二维数组,数组元素依次是每一轮迭代结束时尚未完成的集成分类器预测X为各个类别的概率值。GradientBoostingRegressor是scikit-learn
提供的提升树回归模型,其原型为:
class sklearn.ensemble.GradientBoostingRegressor(loss=’ls’, learning_rate=0.1, n_estimators=100, subsample=1.0, criterion=’friedman_mse’, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_split=1e-07, init=None, random_state=None, max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None, warm_start=False, presort=’auto’)
loss
:一个字符串,指定损失函数,可以为: alpha
:一个浮点数,只有当loss=‘huber’或者loss=‘quantile’时才有效。n_estimators
:一个整数,指定基础决策树的数量(默认为100)。GBRT对过拟合有很好的鲁棒性,因此该值越大越好。learning_rate
:为浮点数。默认为1.它用于每一步的步长,防止步长太大而跨过了极值点。通常learning_rate越小,则需要的基础回归器数量就会越多,因此在learning_rate和n_estimators之间会有所折中。learning_rate为下式中的v。 max_depth
:一个整数或者None,指定每一个基础决策树模型的最大深度。如果max_leaf_noeds不是None,则忽略此参数。criterion
:字符串。用来衡量切分的质量。默认为‘friedman_mse’。可以为: min_samples_split
:一个整数,指定了每个基础决策树模型分裂所需最小样本数。min_samples_leaf
:一个整数,指定了每个基础决策树模型叶节点所包含的最小样本数。min_weight_fraction_leaf
:一个浮点数。叶节点的最小加权权重。当不提供sample_weight时,样本的权重是相等的。subsample
:一个浮点数,指定了提取原始训练集中的一个子集用于训练基础决策树,该参数就是子集占原始训练集的大小,
max_features
:一个整数,浮点数或者None。代表节点分裂是参与判断的最大特征数。整数为个数,浮点数为所占比重。max_leaf_nodes
:为整数或者None,指定了每个基础决策树模型的最大叶节点数量。min_impurity_split
:一个浮点数,指定在树生长的过程中,节点分裂的阈值,默认为1e-7。init
:一个基础回归器对象或者None,该回归器对象用于执行初始的预测。如果为None,则使用loss.init_estimator。verbose
:一个整数,如果为0则不输出日志,如果为1,则每隔一段时间输出日志,大于1输出日志会更频繁。warm_start
:布尔值。当为True是,则继续使用上一次训练结果。否则重新开始训练。random_state
:一个整数或者一个RandomState实例,或者None。 presort
:一个布尔值或者‘auto’,是否对数据进行显示以加速最佳分割的发现。默认情况下,自动模式将在密集的数据上使用presorting,默认为稀疏数据的正常排序。在稀疏的数据上设置显示值将会导致错误。feature_importance_
:一个数组,给出了每个特征的重要性(值越高重要性越大)。oob_improvement_
:一个数组,给出了每增加一棵基础决策树,在包外估计(即测试集)的损失函数的改善情况。(及损失函数减少值)。train_score_
:一个数组,给出每增加一棵基础决策树,在训练集上的损失函数的值。loss
:具体损失函数对象。init
:初始预测使用的分类器。estimators_
:一个数组,给出了每个基础决策树。fit(X,y)
:训练模型。predict(X)
:用模型进行预测,返回预测值。predict_log_proba(X)
:返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。predict_proba(X)
:返回一个数组,数组的元素依次是X预测为各个类别的概率值。score(X,y)
:返回性能得分。设预测集为