# t# U0 W- R1 U" yx_train=input_variables_values_training_datasets 8 L, }8 s& L! r8 ]' R1 t7 Q) Ky_train=target_variables_values_training_datasets ( _0 B l1 p! u! y# F3 Yx_test=input_variables_values_test_datasets& s; r$ q \4 Z9 ~
, ~ b. b+ j9 f5 V! X% M7 ^
# Create linear regression object& \0 v2 v2 |& i, L I }/ X
linear = linear_model.LinearRegression()2 K0 R9 {. `' r4 J2 ~2 c# [
/ V6 M0 x: B e" `0 Z
# Train the model using the training sets and check score 5 v* |5 \* A- \3 q2 l o/ Mlinear.fit(x_train, y_train) 3 d4 i; U# A3 M3 klinear.score(x_train, y_train) + A9 j/ ^- i( \/ n% @( M# q j( c. g i& v$ A8 C
#Equation coefficient and Intercept 2 K% R! c/ R {* w% j) ^. E' Qprint('Coefficient: \n', linear.coef_) , V' y7 _# k J! S/ f& F; |! _print('Intercept: \n', linear.intercept_) " |- \5 z; A l* s6 \" i% ^3 B: w2 N1 r" [, v4 |- R- w- K
#Predict Output8 w8 W, T/ }0 R
predicted= linear.predict(x_test)6 a( J$ L, s M: C3 h+ Z4 V# k3 x
2.逻辑回归) x9 V9 \6 E/ j9 t- I% Y: o
逻辑回归最早听说的时候以为是回归算法,其实是一个分类算法,不要让他的名字迷惑了.通常利用已知的自变量来预测一个离散型因变量的值(通常是二分类的值).简单来讲,他就是通过拟合一个Lg来预测一个时间发生的概率,所以他预测的是一个概率值,并且这个值是在0-1之间的,不可能出这个范围,除非你遇到了一个假的逻辑回归!! S6 I+ X# y, \7 |# r
5 A; b% }* ?1 [+ r; w: E- k
同样用例子来理解:* v3 ?' O9 {- x* r% l4 l$ o8 f
! x5 D) {' c: l+ g1 `
假设你的一个朋友让你回答一道题。可能的结果只有两种:你答对了或没有答对。为了研究你最擅长的题目领域,你做了各种领域的题目。那么这个研究的结果可能是这样的:如果是一道十年级的三角函数题,你有70%的可能性能解出它。但如果是一道五年级的历史题,你会的概率可能只有30%。逻辑回归就是给你这样的概率结果。 y1 ^; z; U( N+ p( M. v
6 |* T0 v/ M' ~0 f数学又来了,做算法这行业是离不开数学的,还是好好学学数学吧% C7 y1 Z3 h" a; r) e
. ?# z& [' s. G$ [" ]/ E2 C
最终事件的预测变量的线性组合就是: + _5 q: u( k; ^" C- B) L+ y; `$ t, F% R' S: _# F9 P4 t. ]
. m$ h7 j% E& e3 A- `% Podds= p/ (1-p) = probability of event occurrence / probability of not event occurrence' I' O+ ~+ q- B4 m! m8 T
/ W0 x4 J& M6 [0 l* W2 Z( L. m: K3 A
ln(odds) = ln(p/(1-p))1 _1 m! J3 k3 h
r1 c# v1 R3 @' U! h S
logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk. x7 H1 e9 A# }4 _4 }/ }
在这里,p是我们感兴趣的事件出现的概率.他通过筛选出特定参数值使得观察到的样本值出现的概率最大化,来估计参数,而不是像普通回归那样最小化误差的平方和.* x3 u8 q. H3 M/ Z
# T. ~: x7 l$ r" w至于有的人会问,为什么需要做对数呢?简单来说这是重复阶梯函数的最佳方法. , P- p3 U1 |7 S1 |; E5 M% |; z: D: N8 B7 h
+ h; s0 W& M6 }# s
) d0 p( i& I* {* \% T from sklearn.linear_model import LogisticRegression# V# Y/ m/ m! O7 P
0 R( e& e) ?2 S5 x4 Z- `3 y4 A" C* A model = LogisticRegression() & Y- K) a! P* K+ u8 X" W3 P$ _* h$ l9 ~
# Train the model using the training sets and check score + v. X% S A- D# R# r; } model.fit(X, y) # f5 G" X5 \* D9 `5 E model.score(X, y)1 ~& X6 i* M/ J2 B2 d
* B' e& U# o' G1 y4 N1 s #Equation coefficient and Intercept 3 k$ I h. K8 G/ E6 b; j print('Coefficient: \n', model.coef_) 4 D7 i1 j- ~& F" E, H8 j print('Intercept: \n', model.intercept_) & d$ k6 C* m2 K7 @8 _; ?, p$ u8 f$ E t9 C0 O- x# @" ~* d& A- N
#Predict Output! f' s5 Z3 I/ m' N. Q
predicted= model.predict(x_test)5 E. M( f5 |+ T: o
逻辑回归的优化:' B; T8 R# ]) ^9 O8 O( u+ M
加入交互项- ^# s1 l! y1 {7 K
/ \0 F- P5 X+ P0 n7 J
减少特征变量, v3 F% Z+ Q7 o! z6 L1 Z2 B1 E+ N
" x7 Q/ E! f+ G; i( k 正则化# Q( c, M0 V, {2 Q
. h( E, J. ], G7 O I1 a 使用非线性模型- t( M& ^' o7 E; S
/ E w G7 m5 N6 v9 I2 x( f
3.决策树% c o( P/ c% ~; a3 F* B$ \* m
这是我最喜欢也是能经常使用到的算法。它属于监督式学习,常用来解决分类问题。令人惊讶的是,它既可以运用于类别变量(categorical variables)也可以作用于连续变量。这个算法可以让我们把一个总体分为两个或多个群组。分组根据能够区分总体的最重要的特征变量/自变量进行。 ' F" M* c- K0 Z0 ]& ]6 {5 @- w& k+ O) W
) B( @2 S$ }. H7 V; ~. |8 l5 J7 C" a8 o. Z! I
从上图中我们可以看出,总体人群最终在玩与否的事件上被分成了四个群组。而分组是依据一些特征变量实现的。用来分组的具体指标有很多,比如Gini,information Gain, Chi-square,entropy。 9 t9 n) ^, l- K" X5 d5 ?( L 9 g H& z& I0 X3 [9 }$ R6 ^( Y$ D" O; \3 B" p. y
from sklearn import tree' C, }- U, O: |
$ s I' F. Z% @! @3 ^# ?! f
5 p y' L0 Y" D! H
# Create tree object $ d( T3 c% P0 C% @model = tree.DecisionTreeClassifier(criterion='gini') # for classification, here you can change the algorithm as gini or entropy (information gain) by default it is gini * X2 f" W1 n0 t. D* X
+ `" C6 ^0 ^, S: ]5 s: u% F# model = tree.DecisionTreeRegressor() for regression$ _+ v; s$ H% P: x% K* B
( D8 \3 V6 n" r& Y+ P- C- E# Train the model using the training sets and check score3 x, ?# b8 U [7 f3 f' g% X8 e5 }
model.fit(X, y)5 D: H% i; G- X: J# A8 }( X
model.score(X, y) * |+ E' X3 f, c& i h9 [# u. X# C& z3 _' U. X
#Predict Output 7 K* j+ f4 o$ rpredicted= model.predict(x_test) , [+ q) S- q4 `8 h* s/ q4. 支持向量机(SVM)1 C" A5 t# B( y+ t/ M. Z
这是一个分类算法。在这个算法中我们将每一个数据作为一个点在一个n维空间上作图(n是特征数),每一个特征值就代表对应坐标值的大小。比如说我们有两个特征:一个人的身高和发长。我们可以将这两个变量在一个二维空间上作图,图上的每个点都有两个坐标值(这些坐标轴也叫做支持向量)。- ?6 R/ Q9 \, s& g
' k# S/ }$ j0 z- W/ t {7 a
现在我们要在图中找到一条直线能最大程度将不同组的点分开。两组数据中距离这条线最近的点到这条线的距离都应该是最远的。2 @: J, Y; }& \2 s* s6 ]
& j U( m5 i& q" z1 _% L3 N" m
' x: d7 |" w7 H, r7 u0 L& t 4 T$ o5 u @9 y0 {8 |在上图中,黑色的线就是最佳分割线。因为这条线到两组中距它最近的点,点A和B的距离都是最远的。任何其他线必然会使得到其中一个点的距离比这个距离近。这样根据数据点分布在这条线的哪一边,我们就可以将数据归类。0 t* h D# s5 ]& b
6 L- c2 f0 ~7 I2 P/ K; o#Import Library, \$ R3 T5 C$ E; o
from sklearn import svm : T9 }- e1 U4 c1 z) |# V#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset: y, o- ^( R' l# U8 h m
# Create SVM classification object 3 m1 ]/ l, \; ^( f7 k
% f& @/ r, i9 g4 O0 Umodel = svm.svc() # there is various option associated with it, this is simple for classification. You can refer link, for mo# re detail.8 G! p- _+ ?) y( b, I+ d
3 m! W+ }" ^# N( I; O. L' ~. g# Train the model using the training sets and check score1 D& R4 Z9 s5 q3 y& i8 d% b
model.fit(X, y)" M. {* z1 |5 l4 ?
model.score(X, y) 2 {5 j" I& |1 S6 T5 R/ }& M! ]3 c6 Z% ?( p- V+ M
#Predict Output : V2 D' y" e/ z6 O; K4 u6 `5 S( Apredicted= model.predict(x_test)! y5 T6 u: C2 ~& e1 M5 T
5. 朴素贝叶斯9 T1 x3 m; i3 J; g: T3 i6 f
这个算法是建立在贝叶斯理论上的分类方法。它的假设条件是自变量之间相互独立。简言之,朴素贝叶斯假定某一特征的出现与其它特征无关。比如说,如果一个水果它是红色的,圆状的,直径大概7cm左右,我们可能猜测它为苹果。即使这些特征之间存在一定关系,在朴素贝叶斯算法中我们都认为红色,圆状和直径在判断一个水果是苹果的可能性上是相互独立的。7 F8 @! J8 t. R8 K5 G: a1 R
5 l; f3 ~( w( X# B! Y$ s朴素贝叶斯的模型易于建造,并且在分析大量数据问题时效率很高。虽然模型简单,但很多情况下工作得比非常复杂的分类方法还要好。 % G0 T" a: T% y9 J9 W# j, L6 l7 C - g! B4 R0 N7 z6 {7 W t贝叶斯理论告诉我们如何从先验概率P(c),P(x)和条件概率P(x|c)中计算后验概率P(c|x)。算法如下: , A, h0 {5 {+ d8 I z5 S9 C, ]1 H+ u! U: l% c8 R5 L
- W# J0 k; p# U9 \# p
P(c|x)是已知特征x而分类为c的后验概率。 & H. H/ W' }6 g& Q" ^6 i' G" O3 u 0 u, K5 {& @$ G0 M9 o4 m5 wP(c)是种类c的先验概率。 - Q' ]! J9 D; I& C( O @; q: Z! k( x7 Z0 v, x
P(x|c)是种类c具有特征x的可能性。 ) l0 u: `! a) M' {6 C3 X: W8 S2 V+ W' W
P(x)是特征x的先验概率。% u) `8 i2 n1 i( V, z; j
1 y- g1 C" w) M, H, M* F
( i9 I! k L2 L& c例子: 以下这组训练集包括了天气变量和目标变量“是否出去玩”。我们现在需要根据天气情况将人们分为两组:玩或不玩。整个过程按照如下步骤进行: , P6 m( b. D# O5 i9 v" a; y6 G [$ R* o 0 Q$ T3 N5 [, Q7 ^" [+ n% v$ Z步骤1:根据已知数据做频率表 + D8 d- d$ n* N& D, m2 l0 C" f5 v& ~/ U
步骤2:计算各个情况的概率制作概率表。比如阴天(Overcast)的概率为0.29,此时玩的概率为0.64.2 |* |5 U1 M6 @4 n `% r, i
8 V* K* T0 m; z8 X4 _) ^9 q a3 Z' F
步骤3:用朴素贝叶斯计算每种天气情况下玩和不玩的后验概率。概率大的结果为预测值。 1 H! @% A j) U/ w提问: 天气晴朗的情况下(sunny),人们会玩。这句陈述是否正确? 6 K# k4 x) I2 c4 d/ e' }( C( `" o9 J/ T: m; y" Y
我们可以用上述方法回答这个问题。P(Yes | Sunny)=P(Sunny | Yes) * P(Yes) / P(Sunny)。 - n7 F) c0 a h% Y6 V% v7 i D' S 3 N1 d9 a" ^. h这里,P(Sunny |Yes) = 3/9 = 0.33, P(Sunny) = 5/14 = 0.36, P(Yes)= 9/14 = 0.64。5 H. u# d2 X$ R. }
# B1 N" f2 X5 g5 e1 o8 t3 L& i' c! I
那么,P (Yes | Sunny) = 0.33 * 0.64 / 0.36 = 0.60>0.5,说明这个概率值更大。 1 s& v! Q4 @7 w: r/ s( R* u2 U" V m- C# O6 W
当有多种类别和多种特征时,预测的方法相似。朴素贝叶斯通常用于文本分类和多类别分类问题。" c; ^3 ]% X) h9 l4 _
7 J) \5 a0 p; ?' N#Import Library : l$ t# h9 C E- k! Dfrom sklearn.naive_bayes import GaussianNB ; b$ ~! s6 [2 @( w9 s8 H1 B# F1 R#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset) A1 M7 f. r5 ]
4 z$ o4 w7 w' a5 T
# Create SVM classification object model = GaussianNB() # there is other distribution for multinomial classes like Bernoulli Naive Bayes, Refer link + a! C0 F4 n5 l9 k# s4 w* r * s; o) |+ y- J1 O9 E1 G# Train the model using the training sets and check score- b$ c; o% L9 ^5 o- j( U, E
model.fit(X, y) x+ w4 J6 m- @; a, M8 G) f% @* B
8 F; J" j# o5 Y$ c2 H3 K#Predict Output$ d; v: t& Z7 k! a; I; f4 J
predicted= model.predict(x_test)* o' L. }( v1 v/ h+ n# h% U5 x- \
6.KNN(K-邻近算法) % @: r! a) J" M9 w; ?) E5 c9 E这个算法既可以解决分类问题,也可以用于回归问题,但工业上用于分类的情况更多。 KNN先记录所有已知数据,再利用一个距离函数,找出已知数据中距离未知事件最近的K组数据,最后按照这K组数据里最常见的类别预测该事件。 7 `6 T" i! G/ b: U9 B' V1 H E% b" {) A+ I- S' m1 B
距离函数可以是欧式距离,曼哈顿距离,闵氏距离 (Minkowski Distance), 和汉明距离(Hamming Distance)。前三种用于连续变量,汉明距离用于分类变量。如果K=1,那问题就简化为根据最近的数据分类。K值的选取时常是KNN建模里的关键。! | a0 M O* W. S/ W0 `1 N
~2 v6 D+ S/ A: k! B$ Q. j
+ }7 T6 \1 r6 o# Z2 [. K- o$ {, @! |( g2 e$ f( J
KNN在生活中的运用很多。比如,如果你想了解一个不认识的人,你可能就会从这个人的好朋友和圈子中了解他的信息。 " v# g# J; S4 J% R4 S3 d5 H% `$ z7 v: _% t3 D" u
在用KNN前你需要考虑到:- y( t5 }( L9 [1 A8 q7 E. w2 s
0 h, _* Z4 G! ~; Y, ^
KNN的计算成本很高3 a& N" J9 l( Z) ?7 l
0 P- }! u5 d" x
所有特征应该标准化数量级,否则数量级大的特征在计算距离上会有偏移。% y4 x% |0 d5 o8 C6 B
% h$ r& v: Q( \; z* D; g6 K在进行KNN前预处理数据,例如去除异常值,噪音等。 5 k6 f' n3 h2 d 7 j% { b7 V4 q* x& \4 ^#Import Library + J. V! O$ ^; _from sklearn.neighbors import KNeighborsClassifier/ L( q# m. l$ l/ [3 h
! ~5 X4 Z7 s, u+ W! O
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset; W. |. j' O+ q) R B e9 C" H' H
# Create KNeighbors classifier object model # z- l$ C' G& V U
1 h7 M9 x# F* K, r. U6 OKNeighborsClassifier(n_neighbors=6) # default value for n_neighbors is 5 m( c: I# |7 p; u5 o8 @9 Z9 d+ R- Z
. _" P' g i! D8 J
# Train the model using the training sets and check score 6 G1 p* x8 k: e# ~1 v, ]model.fit(X, y)( E5 C! K$ C7 z. a7 d3 d2 j
* S1 P( _& r. R* a# z! b
#Predict Output9 P x; ?7 V2 y, v
predicted= model.predict(x_test)% o! z1 B) r# M# K! ` z
7. K均值算法(K-Means) 1 j" P" N$ j. A$ R: T) B这是一种解决聚类问题的非监督式学习算法。这个方法简单地利用了一定数量的集群(假设K个集群)对给定数据进行分类。同一集群内的数据点是同类的,不同集群的数据点不同类。 . k& a! D' Y8 G! j5 n" u: _ 7 t7 b' e, d1 C- W8 v还记得你是怎样从墨水渍中辨认形状的么?K均值算法的过程类似,你也要通过观察集群形状和分布来判断集群数量!- T6 E! F+ z5 O
; W3 c/ n. r5 F5 ^% \4 ~: `2 j, D6 m; ~: H
从每个集群中选取K个数据点作为质心(centroids)。) {+ P) S( ^2 H
0 D2 ^5 L p, z" E将每一个数据点与距离自己最近的质心划分在同一集群,即生成K个新集群。 : o5 Z. g& N/ e& E8 _# _1 D# Z' b( `- _, v4 [
找出新集群的质心,这样就有了新的质心。- R+ o2 s- ?9 J# f
' ]/ r1 l# K" q" D: u' n! S, T
重复2和3,直到结果收敛,即不再有新的质心出现。1 [0 \; d+ z. i- M) R+ v; S3 I+ d& b
* s g: [& Q8 E7 e O+ F2 b$ r V/ N k7 \# A
怎样确定K的值: ) J1 ~% U' j0 q9 j# x1 n s- q) N" v- s+ k7 N
如果我们在每个集群中计算集群中所有点到质心的距离平方和,再将不同集群的距离平方和相加,我们就得到了这个集群方案的总平方和。# `$ F& n9 |& v
" \3 X: O3 T5 e! C! A
我们知道,随着集群数量的增加,总平方和会减少。但是如果用总平方和对K作图,你会发现在某个K值之前总平方和急速减少,但在这个K值之后减少的幅度大大降低,这个值就是最佳的集群数。 B G8 k: N0 D6 q) {" |; Y$ V4 Y/ S# X+ k
9 m$ Q! J; c2 A6 O( J
#Import Library; M3 u. V! Q1 m- [# j6 u
from sklearn.cluster import KMeans 2 W) a6 N E3 f2 C9 `6 S- O 3 I' g, @3 e, ?" S/ G6 k#Assumed you have, X (attributes) for training data set and x_test(attributes) of test_dataset & p0 J8 S( t& {* _' N# Create KNeighbors classifier object model $ t7 a. M5 x. F# [. p5 M4 vk_means = KMeans(n_clusters=3, random_state=0): H7 d! }# u9 I! M+ m
0 S0 x$ f2 S' u
# Train the model using the training sets and check score + }6 H" I/ Z) J5 d- Hmodel.fit(X)( \, W, s- O5 K$ w" E
( Y; A$ P5 E' e: a, Z1 F
#Predict Output ( X( p w7 N: @5 y1 V2 q" K: w. mpredicted= model.predict(x_test)' K. q8 ?( P A4 e& P
8.随机森林, r9 ^6 n [, J
随机森林是对决策树集合的特有名称。随机森林里我们有多个决策树(所以叫“森林”)。为了给一个新的观察值分类,根据它的特征,每一个决策树都会给出一个分类。随机森林算法选出投票最多的分类作为分类结果。 8 g' y; }4 I- Y& e, E) A6 S5 Z1 z. s7 M8 B& ?
怎样生成决策树: 4 ]8 Q, R: Z& l" S4 C, f * p' D1 N' ?4 F( o( C如果训练集中有N种类别,则有重复地随机选取N个样本。这些样本将组成培养决策树的训练集。 A8 v( R' X b7 U- ]2 x0 g0 E
8 O: w6 |) f h. m/ k
如果有M个特征变量,那么选取数m << M,从而在每个节点上随机选取m个特征变量来分割该节点。m在整个森林养成中保持不变。" t, W3 S9 k1 {% q% \
) V) I( t. l5 O, t Y; x每个决策树都最大程度上进行分割,没有剪枝。/ A1 i1 d& {7 H) i0 o9 x4 Y, g0 J
r8 `7 \# F/ R9 e! X) x#Import Library $ {* R+ C- G: l& E. sfrom sklearn.ensemble import RandomForestClassifier; a- V$ S- R. _9 R$ ]8 j. @
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset3 z) @8 F0 X2 C* j3 ^% G
6 `- v$ P0 L7 o, [/ ?1 F1 B+ Y
# Create Random Forest object ; Y: I- _8 k1 ymodel= RandomForestClassifier() / G: v! K) Q" @& ?1 U! l3 b; }4 g' c. D0 @* N3 O+ k& h
# Train the model using the training sets and check score * n2 E3 Y% }0 w: g. {3 V {+ v2 Amodel.fit(X, y) % }- X9 p3 |$ g; R+ W: m8 l6 {0 R. W _5 E6 n: K
#Predict Output8 r/ w) Y& o* j8 V' Q, o- D
predicted= model.predict(x_test)+ J9 {. g$ ~/ I( ~/ Z3 Y4 R
9.降维算法(Dimensionality Reduction Algorithms) 9 b; A3 q3 P8 _/ }6 f1 q6 z/ d在过去的4-5年里,可获取的数据几乎以指数形式增长。公司/政府机构/研究组织不仅有了更多的数据来源,也获得了更多维度的数据信息。 , L" n {- B4 n( f7 N* U" _" T! C, r
例如:电子商务公司有了顾客更多的细节信息,像个人信息,网络浏览历史,个人喜恶,购买记录,反馈信息等,他们关注你的私人特征,比你天天去的超市里的店员更了解你。4 |8 H2 }% I9 u
9 f9 @' [2 L& B0 i1 N! R作为一名数据科学家,我们手上的数据有非常多的特征。虽然这听起来有利于建立更强大精准的模型,但它们有时候反倒也是建模中的一大难题。怎样才能从1000或2000个变量里找到最重要的变量呢?这种情况下降维算法及其他算法,如决策树,随机森林,PCA,因子分析,相关矩阵,和缺省值比例等,就能帮我们解决难题。 + d- V4 `# H% q; \9 R s) T8 C# t8 C) B* F$ _- ]; I ) a) ~$ c6 ]. T* E0 f" g#Import Library6 y8 ~9 j9 z. G- d& C! R% D
from sklearn import decomposition4 B% N/ J3 e" }
#Assumed you have training and test data set as train and test ( F* \- x; l" _! Y3 A- e$ j# Create PCA obeject pca= decomposition.PCA(n_components=k) #default value of k =min(n_sample, n_features) 1 t: [7 S1 v# H o# For Factor analysis 0 P2 G( k, q; E b, ]; C#fa= decomposition.FactorAnalysis()$ R, B" l- d* x) K7 V) G
# Reduced the dimension of training dataset using PCA & M* ?& T5 `/ k1 l' P) C 4 Y9 \3 m) P8 Z( ?: Qtrain_reduced = pca.fit_transform(train) u d& [2 J7 S2 l# w
+ W9 r: y( [) f) X( ^% N#Reduced the dimension of test dataset% b. v9 o# g# V1 I" w! L# x
test_reduced = pca.transform(test) M5 O _% \) j+ \/ f10.Gradient Boosing 和 AdaBoost % ^ Y0 H5 E+ \& @' X$ t. oGBM和AdaBoost都是在有大量数据时提高预测准确度的boosting算法。Boosting是一种集成学习方法。它通过有序结合多个较弱的分类器/估测器的估计结果来提高预测准确度。这些boosting算法在Kaggle,AV Hackthon, CrowdAnalytix等数据科学竞赛中有出色发挥。! w* v* t( f& G f/ V# [) Q/ r
3 u$ P- M) Y/ @7 A6 u
#Import Library % V: s+ V% h$ Q6 g! lfrom sklearn.ensemble import GradientBoostingClassifier1 N8 h! X! Q2 ?" M9 o! j
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset: ?1 x, v8 T7 R) c* R
# Create Gradient Boosting Classifier object & }9 d6 r' L9 U' tmodel= GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)6 b t# s) y& _5 k$ `8 K
' \$ Y+ x0 |1 N& q- q# Train the model using the training sets and check score & O6 A" l* W" q. j6 Z1 a; h/ V* nmodel.fit(X, y) ( ]0 y- i9 y+ W9 h. P#Predict Output % C8 g& @3 s5 d8 \+ u- dpredicted= model.predict(x_test) ' j$ F8 t4 a) F b; t5 QGradientBoostingClassifier 和随机森林是两种不同的boosting分类树。人们经常提问 这两个算法有什么不同。9 k1 e4 i# I3 g0 K3 @
0 m3 p% b3 _& Y5 r原文链接:http://blog.csdn.net/han_xiaoyang/article/details/51191386 + E" ?9 u, a% f! u: Y# {* K———————————————— ' b0 I( ]- P: N. F版权声明:本文为CSDN博主「_小羊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。+ V( T# P- F9 }) Q# T
原文链接:https://blog.csdn.net/qq_39303465/article/details/79176075, i+ h# P' p" n# C( H: m8 Y, R