scikit learn

Scikit-Learn各算法详细参数速查手册(中文)2018-

2018-09-11  本文已影响37人  BI罗

1. 线性模型

1.1 线性回归

LinearRegression是scikit-learn提供的线性回归模型,其原型为:
class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1)

,真实值为<nobr aria-hidden="true">yi</nobr>,真实值的均值为<nobr aria-hidden="true">yˉ</nobr>,预测值为<nobr aria-hidden="true">y^i</nobr>,则:

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>

1.2 线性回归的正则化

1.2.1 Lasso回归(L1正则)

原型为:
class 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’)

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>

1.2.2 岭回归(L2正则)

原型为:
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)

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>

1.2.3 ElasticNet(弹性网络正则)

原型为:
class sklearn.linear_model.ElasticNet(alpha=1.0, l1_ratio=0.5, fit_intercept=True, normalize=False, precompute=False, max_iter=1000, copy_X=True, tol=0.0001, warm_start=False, positive=False, random_state=None, selection=’cyclic’)

<nobr aria-hidden="true">αρ||ω||1+α(1?ρ)2||ω||22,α≥0,0≤ρ≤1</nobr>

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>

1.3 逻辑回归

Logistic Regressionscikit-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)

1.4 线性判别分析

LinearDiscriminationAnalysisscikit-learn提供的线性判别分析模型,其原型为:
class sklearn.discriminant_analysis.LinearDiscriminantAnalysis(solver=’svd’, shrinkage=None, priors=None, n_components=None, store_covariance=False, tol=0.0001)[source]


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]

,真实值为<nobr aria-hidden="true">yi</nobr>,真实值的均值为<nobr aria-hidden="true">yˉ</nobr>,预测值为<nobr aria-hidden="true">y^i</nobr>,则:

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>

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)

<nobr aria-hidden="true">给定特征A,根据其是否取某一个可能值a,样本集D被分为D1和D2</nobr>

<nobr aria-hidden="true">Gini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(D2)</nobr>

<nobr aria-hidden="true">数据集D的经验熵:H(D)=?∑k=1K|Ck||D|log2|Ck||D|</nobr>

<nobr aria-hidden="true">特征A对数据集D的经验条件熵:H(D|A)=∑i=1n|Di||D|H(Di)=?∑i=1n|Di||D|∑k=1K|Dik||Di|log2|Dik||Di|</nobr>

<nobr aria-hidden="true">计算信息增益:g(D,A)=H(D)?H(D|A)</nobr>


3. 贝叶斯分类器

朴素贝叶斯算法

,<nobr aria-hidden="true">xi=(x(1)i,x(2)i,...,x(n)i)T</nobr>,<nobr aria-hidden="true">x(j)i</nobr>为第i个样本的第j个特征,其中<nobr aria-hidden="true">x(j)i∈{aj1,aj2,...,ajsj}</nobr>,<nobr aria-hidden="true">ajl为第j个特征可能渠道的第l个值,j=1,2,...,n,l=1,2,...,sj,y∈{c1,c2,...,cK}</nobr>* * 。* 算法步骤

*   计算先验概率的估计值以及条件概率的估计值。

    *   <nobr aria-hidden="true">P(Y=ck)=∑Ni=1I(yi=ck)N;k=1,2,...,K</nobr>

        *   <nobr aria-hidden="true">P(X(j)=ajl|y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)∑Ni=1I(yi=ck)</nobr>

<nobr aria-hidden="true">j=1,2,...,n;l=1,2,...,sj;k=1,2,...,K</nobr>

三大算法均是朴素贝叶斯算法,区别在于假设了不同的<nobr aria-hidden="true">P(X(j)|Y=ck)</nobr>

分布。
GaussianNB假设:

<nobr aria-hidden="true">P(X(j)|Y=ck)=12πσ2k????√exp(?(X(j)?μk)22σ2k)</nobr>

MultinomialNB假设:

<nobr aria-hidden="true">P(X(j)=ajl|Y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)+a∑Ni=1I(yi=ck)+sja</nobr>

BernoulliNB假设

<nobr aria-hidden="true">P(X(j)|Y=ck)=pX(j)+(1?p)(1?X(j))</nobr>

3.1 高斯贝叶斯分类器

GaussianNB是高斯贝叶斯分类器,它假设特征的条件概率分布满足高斯分布:

<nobr aria-hidden="true">P(X(j)|y=ck)=12πσ2k????√exp(?(X(j)?μk)22σ2k)</nobr>

其原型为:
class sklearn.naive_bayes.GaussianNB(priors=None)

3.2 多项贝叶斯分类器

MultinomialNB是多项贝叶斯分类器,它假设特征的条件概率分布满足多项分布。

贝叶斯估计

设第<nobr aria-hidden="true">j</nobr>

个特征<nobr aria-hidden="true">x(j)</nobr>可能取值为<nobr aria-hidden="true">aj1,aj2,...,ajsj</nobr>,则条件概率<nobr aria-hidden="true">P(X(j)=ajl|Y=ck)</nobr>

的极大似然估计为:

<nobr aria-hidden="true">极大似然估计:P(X(j)=ajl|y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)∑Ni=1I(yi=ck)</nobr>

<nobr aria-hidden="true">j=1,2,...,n</nobr>

<nobr aria-hidden="true">l=1,2,...,sj</nobr>

<nobr aria-hidden="true">k=1,2,...,K</nobr>

用极大似然估计可能会出现分母<nobr aria-hidden="true">∑Ni=1I(yi=ck)=0</nobr>的情况,此时可以采用贝叶斯估计(最大后验估计):

<nobr aria-hidden="true">贝叶斯估计:P(X(j)=ajl|y=ck)=∑Ni=1I(x(j)i=ajl,yi=ck)+a∑Ni=1I(yi=ck)+sja</nobr>

其等价于在<nobr aria-hidden="true">X(j)</nobr>的各个取值的频数上赋予了一个正数<nobr aria-hidden="true">a(也叫λ)</nobr>。

3.3 伯努利贝叶斯分类器

BernoulliNB是伯努利贝叶斯分类器。它假设特征的条件概率分布满足二项分布:

<nobr aria-hidden="true">P(X(j)|Y=ck)=pX(j)+(1?p)(1?X(j))</nobr>

其中,要求特征的取值为<nobr aria-hidden="true">X(j)∈{0,1}</nobr>,且<nobr aria-hidden="true">P(X(j)=1|y=ck)=p</nobr>。其原型为:
class sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)


4. K近邻

4.1 KNN分类器

KNeighborsClassifierscikit-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)

4.2 KNN回归器

KNeighborsRegressorscikit-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)

,真实值为<nobr aria-hidden="true">yi</nobr>,真实值的均值为<nobr aria-hidden="true">yˉ</nobr>,预测值为<nobr aria-hidden="true">y^i</nobr>,则:

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>


5. 数据降维

5.1 PCA

PCAscikit-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)

5.2 超大规模数据降维IncrementalPCA

IncrementalPCA适用于超大规模数据,它可以将数据分批加载进内存。其原型为:
class sklearn.decomposition.IncrementalPCA(n_components=None, whiten=False, copy=True, batch_size=None)


6. 聚类

6.1 K均值(KMeans)聚类

KMeansscikitlearn提供的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’)

6.2 密度(DBSCAN)聚类

DBSCANscikit-learn提供的密度聚类算法模型,其原型为:
class sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric=’euclidean’, algorithm=’auto’, leaf_size=30, p=None, n_jobs=1)

6.3 层次(AgglomerativeClustering)聚类

AgglomerativeClusteringscikitlearn提供的层次聚类算法模型。其原型为:
class sklearn.cluster.AgglomerativeClustering(n_clusters=2, affinity=’euclidean’, memory=Memory(cachedir=None), connectivity=None, compute_full_tree=’auto’, linkage=’ward’, pooling_func=)


7. 支持向量机

7.1 线性分类SVM

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)

7.2 非线性分类SVM

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)

7.3 线性回归SVR

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)

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>

7.4 非线性回归SVR

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)

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>


8. 集成学习

概念

此处输入图片的描述

Bagging

Bagging这个词是根据BootstrapAggregation这个词组创造的一个新词。Bootstrap,是指拔靴带,是帮助穿靴子时的一个纽带。统计学上的Bootstrap一般称为自助法,是指从m个训练样本中随机有放回的抽样m次,重复此过程T次。然后对每个样本集进行训练,最后结果由T个训练器投票表决最终答案。

此处输入图片的描述

Bagging典型的代表就是Random Forest,不过随机森林与Bagging有点不同:

由于以上两点,在样本充足的条件下,随机森林一般的结果都比任何一个单分类器效果要好。

Boosting

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步:

此处输入图片的描述

为何采用加法模型

8.1 AdaBoost

算法过程

下面介绍AdaBoost算法的过程:
1. 初始化训练数据的权值分布:

<nobr aria-hidden="true">D1=(w11,w12,w13,...,w1N),w1i=1N,i=1,2,...,N</nobr>

2. 对<nobr aria-hidden="true">m=1,2,...,M</nobr>

(a) 使用具有权值分布<nobr aria-hidden="true">Dm</nobr>

的训练集学习,得到基本分类器:

<nobr aria-hidden="true">Gm(x):X?>{?1,+1}</nobr>

(b) 计算<nobr aria-hidden="true">Gm(x)</nobr>在训练数据集上的分类误差:

<nobr aria-hidden="true">em=P(Gm(xi)≠yi)=∑Ni=1wmiI(Gm(xi)≠yi)∑Ni=1wmi=∑i=1NwmiI(Gm(xi)≠yi)</nobr>

<nobr aria-hidden="true">上式中,∑i=1Nwmi=1</nobr>

(c) 计算<nobr aria-hidden="true">Gm(x)</nobr>的系数:

<nobr aria-hidden="true">αm=12log1?emem</nobr>

(d) 更新数据集的权值分布:

<nobr aria-hidden="true">Dm+1=(wm+1,1,wm+1,2,...,wm+1,N)</nobr>

<nobr aria-hidden="true">wm+1,i=wmiZme?αmyiGm(xi)</nobr>

<nobr aria-hidden="true">其中,Zm=∑i=1Nwmie?αmyiGm(xi),是规范化因子</nobr>

(e) 重复<nobr aria-hidden="true">(a)?(d)</nobr>步<nobr aria-hidden="true">m</nobr>次得到<nobr aria-hidden="true">m</nobr>个权值<nobr aria-hidden="true">a</nobr>和<nobr aria-hidden="true">m</nobr>个基分类器<nobr aria-hidden="true">G(x)</nobr>

3. 构建基本分类器的线性组合:

<nobr aria-hidden="true">f(x)=∑m=1MamGm(x)</nobr>

4. 最终得到分类器:

<nobr aria-hidden="true">G(x)=sign(f(x))=sign(∑m=1MamGm(x))</nobr>

基分类器权值<nobr aria-hidden="true">a</nobr>

与训练数据集权值<nobr aria-hidden="true">w</nobr>

的分析

1. 先来看基分类器的权值<nobr aria-hidden="true">α</nobr>

,公式如下:

<nobr aria-hidden="true">α=12log1?emem</nobr>

我们知道AdaBoost是将多个弱分类器组合起来形成一个很强的分类器,但这里有个隐含条件:弱分类器。什么叫弱分类器?意思就是在效果上比随机猜想要好的分类器。比如二分类问题,随机猜想的正确率是0.5,所以说弱分类器的正确率一定要比0.5高,于是它的错误率<nobr aria-hidden="true">em<0.5</nobr>

,所以<nobr aria-hidden="true">α会随着em的减小而增大</nobr>,这是什么意思?意思是,如果我的基分类器的错误率很小,也就是正确率很大,那么在众多基分类器中我给予它很大的权值<nobr aria-hidden="true">α</nobr>

,让它能发挥更大的作用。

2. 再来看训练数据集分布的权值分配,公式如下:

<nobr aria-hidden="true">wm+1,i=wm,iZme?amyiG(xi)=???wm,iZme?am,Gm(xi)=yiwm,iZmeam,Gm(xi)≠yi</nobr>

由公式可知,对训练集的样例正确分类与错误分类之间,错误分类样本的权值被放大:<nobr aria-hidden="true">e2αm=1?emem</nobr>

倍,所以,在下一轮学习中将会被更大关注。

AdaBoost推导

AdaBoost模型是由基本分类器组成的<nobr aria-hidden="true">加法模型</nobr>

,损失函数是<nobr aria-hidden="true">指数函数</nobr>

1. 加法模型:<nobr aria-hidden="true">f(x)=∑Mm=1αmGm(x)</nobr>

2. 损失函数:<nobr aria-hidden="true">L(y,f(x))=e?yf(x)</nobr>

3. 每次训练后的基分类器都是乘以<nobr aria-hidden="true">α</nobr>

再与前一个模型线性相加,所以对于第<nobr aria-hidden="true">m?1</nobr>

次训练后模型为:

<nobr aria-hidden="true">fm?1(x)=fm?2(x)+αm?1Gm?1(x)=α1G1(x)+...+αm?1Gm?1(x)</nobr>

4. 于是,在第<nobr aria-hidden="true">m</nobr>

次训练后有:<nobr aria-hidden="true">fm(x)=fm?1(x)+αmGm(x)</nobr>

5. 目标是每一次的损失在训练集上最小,所以最小化目标函数为:

<nobr aria-hidden="true">(αm,Gm(x))=min∑i=1Ne?yifm(xi)=min∑i=1Ne?yi[fm?1(xi)+αmGm(x)]=min∑i=1Ne?yifm?1(xi)?yiαmGm(x)=min∑i=1Nwmie?yiαmGm(x)</nobr>

上式中,将<nobr aria-hidden="true">e?yifm?1(xi)=wmi</nobr>

,因为<nobr aria-hidden="true">wmi</nobr>既不依赖<nobr aria-hidden="true">α</nobr>也不依赖与<nobr aria-hidden="true">G</nobr>

,所以与最小无关。

6. 于是,有:

<nobr aria-hidden="true">min∑i=1Nwmie?yiαmGm(x)=min∑yi=Gm(xi)wmie?a+∑yi≠Gm(xi)wmiea=min(e?a∑i=1NwmiI(yi=Gm(xi))+eα∑i=1NwmiI(yi≠Gm(xi)))=min(e?a∑i=1Nwmi[1?I(yi≠Gm(xi))]+eα∑i=1NwmiI(yi≠Gm(xi)))=min((eα?e?α)∑i=1NwmiI(yi≠Gm(xi))+e?a∑i=1Nwmi)</nobr>

所以,我们得到了优化的目标函数:

<nobr aria-hidden="true">L(α)=(eα?e?α)∑i=1NwmiI(yi≠Gm(xi))+e?a∑i=1Nwmi</nobr>

7. 对6中的目标函数关于<nobr aria-hidden="true">α</nobr>

求导,令<nobr aria-hidden="true">?L(α)?α=0</nobr>

,求的最小值:

<nobr aria-hidden="true">?L(α)?α=?e?a∑i=1Nwmi+(eα+e?α)∑i=1NwmiI(yi≠Gm(xi))=0</nobr>

等价于:

<nobr aria-hidden="true">(eα+e?α)∑i=1NwmiI(yi≠Gm(xi))=e?a∑i=1Nwmi</nobr>

因为:<nobr aria-hidden="true">em=∑Ni=1wmiI(yi≠Gm(xi))</nobr>

,<nobr aria-hidden="true">∑Ni=1wmi=1</nobr>

所以有:

<nobr aria-hidden="true">(eα+e?α)em=e?a</nobr>

等价于:

<nobr aria-hidden="true">e2a=1?emem</nobr>

解得:

<nobr aria-hidden="true">α=12ln1?emem</nobr>

8. 由于之前有个假设:<nobr aria-hidden="true">wmi=e?yifm?1(xi)</nobr>

,而这个式子又可以化为:

<nobr aria-hidden="true">wm+1,i=e?yifm(xi)=e?yi[fm?1(xi)+αmGm(xi)]=wmie?yiαmGm(xi)</nobr>

于是,就有了更新公式:

<nobr aria-hidden="true">wm+1,i=wmie?yiαmGm(xi)</nobr>

,与AdaBoost算法中的更新公式只差了个规范化因子而已。

8.1.1 AdaBoostClassifier

AdaBoostClassifierscikit-learn提供的AdaBoost分类器,其原型为:
class sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm=’SAMME.R’, random_state=None)


8.1.2 AdaBoostRegressor

AdaBoostRegressorscikit-learn提供的AdaBoost回归器,其原型为:
class sklearn.ensemble.AdaBoostRegressor(base_estimator=None, n_estimators=50, learning_rate=1.0, loss=’linear’, random_state=None)

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>


8.2 Gradient Tree Boosting

8.2.1 GradientBoostingClassifier

GradientBoostingClassifierscikit-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’)


8.2.2 GradientBoostingRegressor

GradientBoostingRegressorscikit-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’)

参数的指定比例,该损失函数的定义为:

<nobr aria-hidden="true">LHuber={12(y?f(x))2,if|y?f(x)|≤aa|y?f(x)|?12a2,else</nobr>

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>


8.3 Random Forest

8.3.1 RandomForestClassifier

RandomForestClassifierscikit-learn提供的随机森林分类模型,其原型为:
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, min_impurity_split=1e-07, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)

8.3.2 RandomForestRegressor

RandomForestRegressorscikit-learn提供的随机森林回归模型,其原型为:
class sklearn.ensemble.RandomForestRegressor(n_estimators=10, criterion=’mse’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_split=1e-07, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False)

,真实值为<nobr aria-hidden="true">yi</nobr>,真实值的均值为<nobr aria-hidden="true">yˉ</nobr>,预测值为<nobr aria-hidden="true">y^i</nobr>,则:

<nobr aria-hidden="true">score=1?∑Ttest(yi?y^i)2(yi?yˉ)2</nobr>


参考书籍

1 《统计学习方法》李航
2 《机器学习》周志华
3 《python大战机器学习》华校专,王正林
4 scikit-learn.org官方API文档

上一篇 下一篇

猜你喜欢

热点阅读