. I: W& N6 l; D8 ?线性回归还分为:一元线性回归和多元线性回归.很明显一元只有一个自变量,多元有多个自变量.- ~# B& G! V4 N4 N" k! r
; e9 k2 j+ _/ v. L1 V5 x% X
拟合多元线性回归的时候,可以利用多项式回归或曲线回归# D t" Z; T. I# S# o) h' F( q
0 L$ R; S+ R. P: Q' ?. Y- P/ mImport Library, z. L3 ` t, N, L* G& R( D
from sklearn import linear_model* ]+ L7 t. v4 o2 h2 W
7 e% m7 V* i+ m `$ p
x_train=input_variables_values_training_datasets5 ]/ T. p i! n- s
y_train=target_variables_values_training_datasets 3 L2 |5 ~, E- E5 G9 \3 W( I* O6 ]x_test=input_variables_values_test_datasets, V. ?) V/ G# a L$ f8 v2 s
( L) W* h G6 x0 p# c( ]# Create linear regression object; J0 {; \4 Z1 N, M3 M
linear = linear_model.LinearRegression() $ q% a3 V- S5 `+ ~2 d 0 ? E, I7 t: F+ o( f; i# Train the model using the training sets and check score 1 I# d% n" O) wlinear.fit(x_train, y_train), L$ J5 F8 k$ j T$ x
linear.score(x_train, y_train) $ q* V& l r7 Q2 g# v& y$ A) Q* a4 W2 D/ H Q
#Equation coefficient and Intercept/ G7 ] h* D7 I* B7 q$ z
print('Coefficient: \n', linear.coef_)1 z3 V* c5 s$ T' `
print('Intercept: \n', linear.intercept_) : a$ t& l1 A- |* P% k" s! w 7 X5 S+ r/ Z, A u7 A2 Q#Predict Output . u& l) u4 I) @$ Q. k+ w# j9 ppredicted= linear.predict(x_test)% C' [* n$ U/ g- @' h$ t" j1 p
2.逻辑回归5 K5 F& @/ f) B0 H: `. m
逻辑回归最早听说的时候以为是回归算法,其实是一个分类算法,不要让他的名字迷惑了.通常利用已知的自变量来预测一个离散型因变量的值(通常是二分类的值).简单来讲,他就是通过拟合一个Lg来预测一个时间发生的概率,所以他预测的是一个概率值,并且这个值是在0-1之间的,不可能出这个范围,除非你遇到了一个假的逻辑回归!/ b9 N; B# l: a* a* ^3 ^4 }
. T+ E6 @* Y9 {/ p! \/ t同样用例子来理解:1 l& o1 a5 T& P& Q
/ c2 n& t/ S7 h( ]! B
假设你的一个朋友让你回答一道题。可能的结果只有两种:你答对了或没有答对。为了研究你最擅长的题目领域,你做了各种领域的题目。那么这个研究的结果可能是这样的:如果是一道十年级的三角函数题,你有70%的可能性能解出它。但如果是一道五年级的历史题,你会的概率可能只有30%。逻辑回归就是给你这样的概率结果。 9 u5 W, z6 v' m, W! o9 ]+ O6 P3 J ' e% f1 }6 V4 `' e2 c: \8 e5 k数学又来了,做算法这行业是离不开数学的,还是好好学学数学吧2 S, F7 F0 x2 h/ g5 y* ^( I4 A
( N+ C4 R Z, [( Y
最终事件的预测变量的线性组合就是:7 S1 d2 R8 k8 c. g( ]$ Z
3 }- G. ^: |# G6 [6 s
& h5 A9 o( X8 Q, U7 V" W3 ?odds= p/ (1-p) = probability of event occurrence / probability of not event occurrence4 J* J4 [1 e# O3 }# s, A
! q9 u" G) ~2 _; F S. dln(odds) = ln(p/(1-p))) t# F" h4 U& L0 `
& {( F# j: u5 e% i* `$ r
logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk4 P( i8 r/ Q b+ @) H# Z ?
在这里,p是我们感兴趣的事件出现的概率.他通过筛选出特定参数值使得观察到的样本值出现的概率最大化,来估计参数,而不是像普通回归那样最小化误差的平方和. , Y1 Y/ V$ I; h9 C& G ?9 L& e& h6 m3 m3 r8 p! N: ^3 w7 z; p
至于有的人会问,为什么需要做对数呢?简单来说这是重复阶梯函数的最佳方法. % |6 ^4 W8 @7 d3 `- b - S" q% Y( v( v- q y; h* Z" y r7 O) C9 E5 G
) [ s) B' O+ U; ?' d8 z
from sklearn.linear_model import LogisticRegression 0 r6 x3 Q4 ~2 l& n) Q5 ] 4 K( O4 R! i/ D8 o) J model = LogisticRegression()* t# O" t+ Q9 k, K8 z+ Z
9 B( t. F( M% W. [6 `
# Train the model using the training sets and check score; Y, n6 e# P! d6 T6 R
model.fit(X, y) ( b. q5 [' k- d+ p$ e model.score(X, y) J7 b* b x2 ~$ d4 |8 @1 }4 m) i6 ?1 m9 C+ @! C) Q
#Equation coefficient and Intercept . \4 E' y! \7 ^/ |$ z/ P print('Coefficient: \n', model.coef_) 6 P/ J; L+ Q4 }. \ print('Intercept: \n', model.intercept_) - r# J; Q% Z/ l; U $ T/ l. s/ f D/ a" `% m #Predict Output , Q; k# {/ c, f& O) R6 g) o' z predicted= model.predict(x_test) 5 P" h3 G" `! }! @逻辑回归的优化: : k' d4 z% }, v2 X加入交互项2 C' R( c X) Z# S+ r
3 j: x: l: d. P! [" _9 _" t
减少特征变量! |5 j& o; T) g
9 d; `+ o5 s) f' T. d 正则化. Y' G( R! ~! K
R$ {3 j* P- p# ]2 Q" _0 s 使用非线性模型 . M) p: g, D3 s! o3 I! K2 h5 K1 D$ K" {
3.决策树+ N; `# l" Y$ t( o0 x$ _
这是我最喜欢也是能经常使用到的算法。它属于监督式学习,常用来解决分类问题。令人惊讶的是,它既可以运用于类别变量(categorical variables)也可以作用于连续变量。这个算法可以让我们把一个总体分为两个或多个群组。分组根据能够区分总体的最重要的特征变量/自变量进行。 # Q, ]5 C! t1 q+ x* U+ K/ l8 E. B$ @( R y5 O. |+ v
$ m( K0 L& _) B/ @$ I$ }0 I! d. i ( F. Q+ ?# ?3 y4 P; G" M( @9 T从上图中我们可以看出,总体人群最终在玩与否的事件上被分成了四个群组。而分组是依据一些特征变量实现的。用来分组的具体指标有很多,比如Gini,information Gain, Chi-square,entropy。% H' ~4 _ T% Q( ^6 x
8 P% e5 n0 ^; v* I& Y+ ]7 d9 s' Q z* K& e1 f: c) x
from sklearn import tree ( K1 x6 t8 }. \2 T# u 4 ?; N9 N( g, A0 k$ j" W1 `" c/ J 5 t. S( B3 W3 W- R0 x# Create tree object ; U5 j6 L9 \& B
model = tree.DecisionTreeClassifier(criterion='gini') # for classification, here you can change the algorithm as gini or entropy (information gain) by default it is gini 5 s/ F5 X- \0 B+ W
. k$ s5 O! M) m# model = tree.DecisionTreeRegressor() for regression; Z, E1 E2 @8 D+ K- E
! d3 F# ~- ~1 v# Train the model using the training sets and check score4 T6 t2 y8 [$ `4 K
model.fit(X, y) ( p. z) K: ^% _2 `) ~' Hmodel.score(X, y)% W$ d% Y* U- Q
* ~: K7 N/ ~/ i# R3 P' N#Predict Output( V' ~" u% ]0 T' D3 Z# m
predicted= model.predict(x_test) 5 _ e' q3 b% U6 G2 T0 e, D0 N4. 支持向量机(SVM) ( V Q4 M1 o& X这是一个分类算法。在这个算法中我们将每一个数据作为一个点在一个n维空间上作图(n是特征数),每一个特征值就代表对应坐标值的大小。比如说我们有两个特征:一个人的身高和发长。我们可以将这两个变量在一个二维空间上作图,图上的每个点都有两个坐标值(这些坐标轴也叫做支持向量)。) P' u8 l% ]- g( X6 _
j0 K% U# e7 u' d
现在我们要在图中找到一条直线能最大程度将不同组的点分开。两组数据中距离这条线最近的点到这条线的距离都应该是最远的。7 _4 f% G8 V0 c$ S0 _* i" w
2 {. R. T6 U4 I. C& O* H5 b
~/ T4 R) b8 a1 R7 a) I1 H* S q
% {2 E( E( s' M1 S3 u在上图中,黑色的线就是最佳分割线。因为这条线到两组中距它最近的点,点A和B的距离都是最远的。任何其他线必然会使得到其中一个点的距离比这个距离近。这样根据数据点分布在这条线的哪一边,我们就可以将数据归类。9 W) G* r0 H# [( c. |$ @
7 p& B9 F% x3 T/ t#Import Library . z4 {+ _* S9 Z: ^* d/ k8 mfrom sklearn import svm 5 S$ v2 Q1 d3 H# M3 h+ P' Y! S#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset9 k4 x* [- C& ~ i; c) f& g0 f, Q
# Create SVM classification object - E' O$ N2 M+ x0 @; K4 s a! O5 a7 [- r( [ {/ s$ u
model = svm.svc() # there is various option associated with it, this is simple for classification. You can refer link, for mo# re detail.& i3 `, Q" a8 K$ ?" s$ O
/ |3 I* j4 [8 n3 P
# Train the model using the training sets and check score# H/ }, i- r2 u/ Q
model.fit(X, y) - o+ u, p! _# p) |: Qmodel.score(X, y) 7 w/ M- ~0 c" V 4 }# t) B* ~0 U) |) G# r#Predict Output5 {9 {/ _3 J, p8 h& h3 y
predicted= model.predict(x_test) ( L" Z! t$ u/ W5. 朴素贝叶斯: }' ^% a* g: O; u. B: q' `
这个算法是建立在贝叶斯理论上的分类方法。它的假设条件是自变量之间相互独立。简言之,朴素贝叶斯假定某一特征的出现与其它特征无关。比如说,如果一个水果它是红色的,圆状的,直径大概7cm左右,我们可能猜测它为苹果。即使这些特征之间存在一定关系,在朴素贝叶斯算法中我们都认为红色,圆状和直径在判断一个水果是苹果的可能性上是相互独立的。& `8 e$ z- |/ G1 w9 G# T( C
7 _7 a4 S+ `1 H
朴素贝叶斯的模型易于建造,并且在分析大量数据问题时效率很高。虽然模型简单,但很多情况下工作得比非常复杂的分类方法还要好。% s& a% k1 h3 W- m( v0 ?! M8 V
3 T' n {$ ? Z2 C- M0 o3 d贝叶斯理论告诉我们如何从先验概率P(c),P(x)和条件概率P(x|c)中计算后验概率P(c|x)。算法如下: 3 x2 L3 F# H. A1 Q( ?% } ! a& \; E1 k2 x6 p7 @; g' ^# p - u- k! B7 a! n5 |) y! u9 M. wP(c|x)是已知特征x而分类为c的后验概率。3 Q3 s1 n4 o, q+ o5 c) j+ | s
4 S/ @# Y. W1 b% X$ [& K
P(c)是种类c的先验概率。& k" p4 r/ h: C* `
* W4 y! D9 P. j: `P(x|c)是种类c具有特征x的可能性。8 t9 B. u9 Q! e* M. a' `
. c6 r, `! u1 }0 }P(x)是特征x的先验概率。' }& o$ |' V7 ~
* f* D t- V, a( k( G e) w' L
6 x7 q: ?5 {/ w1 r/ I- H例子: 以下这组训练集包括了天气变量和目标变量“是否出去玩”。我们现在需要根据天气情况将人们分为两组:玩或不玩。整个过程按照如下步骤进行:! Q( c% _) J2 B8 r. x
) B* r( r' r5 z" R( j N8 \/ y当有多种类别和多种特征时,预测的方法相似。朴素贝叶斯通常用于文本分类和多类别分类问题。3 [( ?' }1 g6 _) U P0 b8 _, a
, v& N! p2 E8 T/ R) ]! Y
#Import Library3 k+ S/ h$ l, W8 k6 S3 }( E+ M
from sklearn.naive_bayes import GaussianNB( ~) x; ]# E. ~3 a0 W
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset + @0 B3 X" \# n C2 A' U ?) X8 W: P* E; R0 |
# Create SVM classification object model = GaussianNB() # there is other distribution for multinomial classes like Bernoulli Naive Bayes, Refer link" S) ]1 T' \4 K5 z& J4 \9 o
4 B+ D$ [5 K; \# Train the model using the training sets and check score' I. X4 x* \1 z7 x1 |' B+ {
model.fit(X, y)3 i- h4 Y7 V; g7 q( `* h# x8 H# ^
0 x ~) P1 n, N, _5 ^* c
#Predict Output- |! b; @1 g/ q( v3 K
predicted= model.predict(x_test)7 w; t4 u- ]4 Y$ `2 ^+ |
6.KNN(K-邻近算法), ?4 P9 {6 W+ j) ~6 Y5 w/ q
这个算法既可以解决分类问题,也可以用于回归问题,但工业上用于分类的情况更多。 KNN先记录所有已知数据,再利用一个距离函数,找出已知数据中距离未知事件最近的K组数据,最后按照这K组数据里最常见的类别预测该事件。/ f! C1 U/ o& K2 B
# ~+ D J1 k% ~; n, b距离函数可以是欧式距离,曼哈顿距离,闵氏距离 (Minkowski Distance), 和汉明距离(Hamming Distance)。前三种用于连续变量,汉明距离用于分类变量。如果K=1,那问题就简化为根据最近的数据分类。K值的选取时常是KNN建模里的关键。 - K+ V6 H' @) w a+ l" \% t7 K+ A ) C5 X9 U. N) G- g( F, Q. H # R% s5 b3 ]' A2 V$ K1 K0 j u( `5 P6 ]
KNN在生活中的运用很多。比如,如果你想了解一个不认识的人,你可能就会从这个人的好朋友和圈子中了解他的信息。; |; ^3 x3 k# t) Q1 \
! `' D8 J2 N" V
在用KNN前你需要考虑到: * |3 j7 d/ J3 ~! Y8 `( E f f m0 ?9 P; k- K f% I
KNN的计算成本很高 : d) k1 f1 W; \3 P" U & ~! W. {/ o8 L5 T$ U所有特征应该标准化数量级,否则数量级大的特征在计算距离上会有偏移。 ! a1 e |! l0 b* Y $ h$ ^, N3 T, s1 k& |在进行KNN前预处理数据,例如去除异常值,噪音等。' V3 I7 w I; d$ n: }+ [0 H/ \ {
% Z! M: _( b+ ]+ M; }#Import Library3 v( n9 k" z, B' v0 Y$ ^- A% H
from sklearn.neighbors import KNeighborsClassifier7 j' p% d; [8 p8 z1 z
5 g9 b% f" m& x0 b3 ]% R& X
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset 1 @% m3 Y9 J; ^3 ?7 J- _/ J# Create KNeighbors classifier object model ( w' H+ K# w. I; F/ L
6 M# ^/ ^0 S' mKNeighborsClassifier(n_neighbors=6) # default value for n_neighbors is 5 ( A; a4 t2 I/ l- T 3 b( ^7 c1 y5 J8 V* ^: y/ p! l# Train the model using the training sets and check score " F- h/ Y: ?, w4 C) Wmodel.fit(X, y) % r3 I* g* P- A) S j$ K! g; f1 e: L# R4 V+ X" T
#Predict Output! Z+ [; d# s1 q2 f) i- L
predicted= model.predict(x_test). b0 T, A3 a. Q5 t7 f0 B- b
7. K均值算法(K-Means) : D/ K% X5 F# G这是一种解决聚类问题的非监督式学习算法。这个方法简单地利用了一定数量的集群(假设K个集群)对给定数据进行分类。同一集群内的数据点是同类的,不同集群的数据点不同类。 ( j7 v Y' ]9 n3 Q3 a+ x! h9 C& \( P e1 Y8 d7 R
还记得你是怎样从墨水渍中辨认形状的么?K均值算法的过程类似,你也要通过观察集群形状和分布来判断集群数量!: i0 ?- J/ B3 i; k
- e! P _2 D/ U# h; r" P. j( K4 }: X8 Z% l
K均值算法如何划分集群: 9 z9 L- m7 d6 T9 ^, @# @( v$ \ * F1 [7 f' ~6 s3 T$ L. |, p. b! ]' w- e
3 S4 A5 Q! Z0 {, `! r: P! E
从每个集群中选取K个数据点作为质心(centroids)。 0 y$ ?/ {, W7 h/ \7 l. c' R( y1 Y $ w+ J7 U( Z" ~" E- C将每一个数据点与距离自己最近的质心划分在同一集群,即生成K个新集群。 7 B9 ` n% d U2 O # J( X4 |+ Z4 z- D8 G找出新集群的质心,这样就有了新的质心。 3 f$ S: b O9 A, i. B/ o& d: t9 R4 {3 L( L( V' H4 v7 |
重复2和3,直到结果收敛,即不再有新的质心出现。 & F4 f. }, O* J* z9 A K! v+ t; {6 G0 J+ ?6 ?
+ X3 L: d, L" W7 M% m ]怎样确定K的值: 7 X( t3 l% X' f9 G: p! f9 O5 W5 Q ( E/ ^( f& b4 s9 x如果我们在每个集群中计算集群中所有点到质心的距离平方和,再将不同集群的距离平方和相加,我们就得到了这个集群方案的总平方和。 " J. E$ d4 y. u2 y% ^8 h) o" B; X C0 Z! U9 z9 ? K5 p
我们知道,随着集群数量的增加,总平方和会减少。但是如果用总平方和对K作图,你会发现在某个K值之前总平方和急速减少,但在这个K值之后减少的幅度大大降低,这个值就是最佳的集群数。1 S& q2 u3 D: F8 n0 R! @ \1 X
% Z2 K, J. E+ P- Q5 z( O! b
! W D1 T/ M1 e) v
#Import Library 8 k3 N- ~, n W# C9 L/ y5 `from sklearn.cluster import KMeans 1 @7 B6 p8 f! c8 x% N7 p3 \ % J4 ~. X T! u2 y! U6 k8 T#Assumed you have, X (attributes) for training data set and x_test(attributes) of test_dataset j0 L4 d1 ^2 e: I
# Create KNeighbors classifier object model 0 w; U) n+ O, K e: }
k_means = KMeans(n_clusters=3, random_state=0) & I9 p! T; v" W6 } k, d1 Z4 L- w3 B. {# y1 Q X
# Train the model using the training sets and check score" H1 J- K6 F! R, K8 `3 J* @: S, v
model.fit(X) $ s: e' s( c& g$ c* e - Z# o4 k w1 N* O. ^% f7 p#Predict Output , K2 {1 _% {& k+ N8 h \predicted= model.predict(x_test)/ v- p5 o# b, x$ [7 I- n
8.随机森林 . W0 Z+ D3 {1 N4 u% p随机森林是对决策树集合的特有名称。随机森林里我们有多个决策树(所以叫“森林”)。为了给一个新的观察值分类,根据它的特征,每一个决策树都会给出一个分类。随机森林算法选出投票最多的分类作为分类结果。 $ r# r: Q1 P" P1 U) a4 c; \ , Q" j, D1 U4 _0 T怎样生成决策树: * C# ~# `: S. }. q 2 e7 `! G: M2 T如果训练集中有N种类别,则有重复地随机选取N个样本。这些样本将组成培养决策树的训练集。 - S) n$ r" X% `. Q) F! ? ' t$ q- r% {% k$ Q& B0 q* P如果有M个特征变量,那么选取数m << M,从而在每个节点上随机选取m个特征变量来分割该节点。m在整个森林养成中保持不变。# n$ E* r$ N$ u! V
) {; G7 {% q# T1 ^+ U# l每个决策树都最大程度上进行分割,没有剪枝。. f9 i& L' x J4 x- [4 ^( n
* q; j. A$ D- `* v4 s7 k2 g, `#Import Library. z! S( M7 i9 u" E. k4 l. O* |
from sklearn.ensemble import RandomForestClassifier. F! I" o6 B8 p' C- N0 h5 a/ s2 u
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset k; b0 N5 k) M/ p! ~" q9 A
& k1 ?3 ^! I/ d2 g
# Create Random Forest object0 `/ T+ v' h( ^$ d. }# M
model= RandomForestClassifier() : A: f: l& g2 ?: g7 d2 p) i, W3 h) T2 G/ C
# Train the model using the training sets and check score 5 O `/ a7 @$ J% u" k7 C% Pmodel.fit(X, y) & E7 F- ]6 }8 ?5 `/ _0 h ) L1 G6 F% ?! e' X/ g: s& n#Predict Output A/ n z3 f% e3 T8 upredicted= model.predict(x_test) , t- B, V. N: C& p- F) g9 n0 r9.降维算法(Dimensionality Reduction Algorithms) 2 f6 F9 @$ \+ T$ |% s1 q在过去的4-5年里,可获取的数据几乎以指数形式增长。公司/政府机构/研究组织不仅有了更多的数据来源,也获得了更多维度的数据信息。 ( n, p& L5 `3 x! S 8 K: J' r/ u6 i/ S# r, B例如:电子商务公司有了顾客更多的细节信息,像个人信息,网络浏览历史,个人喜恶,购买记录,反馈信息等,他们关注你的私人特征,比你天天去的超市里的店员更了解你。2 T' s x& N% j' O
7 L8 k% F# t4 B
作为一名数据科学家,我们手上的数据有非常多的特征。虽然这听起来有利于建立更强大精准的模型,但它们有时候反倒也是建模中的一大难题。怎样才能从1000或2000个变量里找到最重要的变量呢?这种情况下降维算法及其他算法,如决策树,随机森林,PCA,因子分析,相关矩阵,和缺省值比例等,就能帮我们解决难题。 1 B3 c# B( F1 q% T1 O- K: e$ u, w! {) w3 C: o6 t+ ]8 u2 e/ L, y
# T8 w* ?4 o+ }& a5 M5 E3 I E/ w# m
#Import Library& S0 a! j6 `4 s' q
from sklearn import decomposition . G+ \; d5 _$ _8 x! L' D" R" R#Assumed you have training and test data set as train and test2 v( _/ I' _2 l
# Create PCA obeject pca= decomposition.PCA(n_components=k) #default value of k =min(n_sample, n_features)* t- {7 t1 g( ]. C, D# v
# For Factor analysis. c, T* z# C* N- c
#fa= decomposition.FactorAnalysis()& p, {$ M: t6 d/ b+ ?( P
# Reduced the dimension of training dataset using PCA& u' H* h6 d) S' @6 [+ b1 i
0 w( L+ ~# ^ g4 y" N' |& w) H+ {6 u) s. {
train_reduced = pca.fit_transform(train) ' a( `& ^7 ^" V G" a: A5 t9 ^2 G8 h/ o#Reduced the dimension of test dataset/ |+ ~5 k5 x- I
test_reduced = pca.transform(test)! u: R' a2 Q. h; Z
10.Gradient Boosing 和 AdaBoost . P2 F$ Z* D! [# l2 L( f8 wGBM和AdaBoost都是在有大量数据时提高预测准确度的boosting算法。Boosting是一种集成学习方法。它通过有序结合多个较弱的分类器/估测器的估计结果来提高预测准确度。这些boosting算法在Kaggle,AV Hackthon, CrowdAnalytix等数据科学竞赛中有出色发挥。 # k/ c' w" i: ?; n0 @" `) n0 I3 C1 G9 w4 D3 {, l9 k+ ^/ |# |) n
#Import Library" E/ M5 f& Q7 f/ }$ |* e3 _) i
from sklearn.ensemble import GradientBoostingClassifier. h; c! E I. Y' I- U
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset 2 R" ^$ u) t7 _0 Y1 S7 ?8 L/ g5 {# Create Gradient Boosting Classifier object 0 r/ M& \5 \) I O' b4 i8 nmodel= GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)$ x; E: Y( Y$ _$ k; \
8 u& q0 B) [' _4 }" A5 W/ W# _- `
# Train the model using the training sets and check score + C% W& p3 X* n2 x" L& k% tmodel.fit(X, y) G, q* u Z2 r9 m( c#Predict Output 9 z4 D- z0 t& L( X* o4 Y7 Jpredicted= model.predict(x_test) , a( X o7 F* ?/ P5 w% _% K2 |GradientBoostingClassifier 和随机森林是两种不同的boosting分类树。人们经常提问 这两个算法有什么不同。 . ]- I Z5 {) z8 N. o% ]8 @8 Z ( ` w1 ~1 t) ~4 Y+ B$ T原文链接:http://blog.csdn.net/han_xiaoyang/article/details/51191386 ' G8 l8 _' q9 O! w- x———————————————— 5 z' S" L: E, C3 u+ ~+ O版权声明:本文为CSDN博主「_小羊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。2 l9 A v/ _# c0 F% h ~9 P; \
原文链接:https://blog.csdn.net/qq_39303465/article/details/79176075! n# c1 Y( i7 O t