1 p/ U8 r `; E& r. z; G$ E8 f; j属于无监督式学习的算法有:关联规则,K-means聚类算法等 ( T2 |: i& l) ~9 E k& I% A r % y7 N3 p; ~' k% u; U/ [6 R3.强化学习 3 G, v) r, D9 K/ H# m9 Q7 L$ @) A0 k# ^5 i O! l0 \0 R- ~2 S
这个算法可以训练程序作出某一决定,程序在某一情况下尝试所有的可能行为,记录不同行动的结果并试着找出最好的一次尝试来做决定 # j, T; O; ]% `0 D8 G) U* h$ l! h3 K1 A0 J$ ?2 Q; b
属于强化学习的算法有:马尔可夫决策过程& F+ w6 e' _% ~8 C' |) ?
" i& {6 k( O( t8 t2 H, u# A3 r
常见的机器学习算法有: ' ^$ E. P) n4 h& ^; x* _ 5 x8 V( ^9 q! h+ A$ v & g0 F9 v$ E$ R% F1 M1.线性回归 (Linear Regression)3 O2 O4 ~3 l V7 \8 o: m
$ Q; D" p* b2 T( {! x A) C2 Q9 S2.逻辑回归 (Logistic Regression) - Z" z U) y7 h6 _ v* {, h, F1 Z( y M. X X4 B
3.决策树 (Decision Tree) 0 p8 |$ V: g& q" ^$ E4 n* e. J( D* f ( ]) R4 m9 s/ f& e8 {' L4.支持向量机(SVM)/ o9 f+ K' C$ h9 l% `6 `/ _0 M: w
' Q+ J" \" z9 R% A, e3 r
5.朴素贝叶斯 (Naive Bayes)0 K, x* \( @( H z0 T* a
8 c/ c8 s5 \1 I( t6.K邻近算法(KNN) ; g6 f! h" T6 z) ?6 y1 D Y1 w: C+ G" f
7.K-均值算法(K-means) 0 o) H" k* P. w" p) O/ E1 q$ g6 D7 S- v5 s2 a5 A
8.随机森林 (Random Forest)3 y Y& P5 \, A1 J
+ c9 `- G7 m& Q4 O8 \3 j" t9.降低维度算法(Dimensionality Reduction Algorithms): @/ Y: y; ? G4 S$ g0 P
+ O$ c% K* h+ S. B# x, `8 U
10.Gradient Boost和Adaboost算法. N+ d9 N$ r, u3 o/ E8 R# p: x/ c
一个一个来说:! n c. X8 v$ |% z5 l( }) e% s! V0 v
1.线性回归 ]* v( P( h3 T1 y6 b- C6 W
7 n6 K. X0 r$ l9 I
线性回归是利用连续性变量来估计实际数值(比如房价等),我们通过线性回归算法找出自变量和因变量的最佳线性关系,图形上可以确定一条最佳的直线.这条最佳直线就是回归线.线性回归关系可以用Y=ax+b表示.2 _2 \# c1 x; D" p
3 Q, {9 Y' f7 b$ [5 }5 p
在这个Y=ax+b这个公式里: & q5 c2 A4 E/ o& A) Z4 ?! d2 ?1 _) {) Y
Y=因变量 8 T& s5 v5 j: ]: U2 O/ T ' {) Q: E( ]# P* D a =斜率: l; m2 g- Z5 E$ v' p8 J' o/ F4 _" N
7 x/ G* e7 o9 p% F7 x x=自变量 4 L# V' d9 H- n* I7 x, P6 j* y4 w; k7 q: z
b=截距& p# t# Y# `) \5 M" I
+ J2 Y, G6 S/ x$ C* t
a和b可以通过最下化因变量误差的平方和得到(最小二乘法)( j9 Y6 V% E2 I, X, a' L
* p4 c8 R0 p0 n5 Q
我们可以假想一个场景来理解线性回归.比如你让一个五年级的孩子在不问同学具体体重多少的情况下,把班上的同学按照体重从轻到重排队。这个孩子会怎么做呢?他有可能会通过观察大家的身高和体格来排队。这就是线性回归!这个孩子其实是认为身高和体格与人的体重有某种相关。而这个关系就像是前一段的Y和X的关系。+ {0 P; F C2 b+ n( _( M0 S% ~
' t, C# S& Q* G8 |
给大家画一个图,方便理解,下图用的线性回归方程是Y=0.28x+13.9.通过这个方程,就可以根据一个人的身高预测他的体重信息.8 ?! A9 W6 N5 e+ K' [; I
! T! _8 B( i C/ ~4 R8 c! M1 J
& h9 b7 i6 u. H# n' a: w' J
; W; w7 Y2 a7 W" [3 j. y( n( y. V线性回归还分为:一元线性回归和多元线性回归.很明显一元只有一个自变量,多元有多个自变量.' S) }3 X7 J0 P; m/ @! `
( y/ l4 t4 u0 J! U v; S拟合多元线性回归的时候,可以利用多项式回归或曲线回归) a! p0 V- L* o
1 M) Q$ V0 }$ F% i8 s3 e
Import Library# x' J* }% H' n4 E! z
from sklearn import linear_model- J" u O% x8 c& ~4 d: a
6 W g6 q8 C2 O2 _/ Nx_train=input_variables_values_training_datasets. y% A; ^. p0 R) R5 Q F2 A c2 O
y_train=target_variables_values_training_datasets5 I2 b. R% ^) N) Q r
x_test=input_variables_values_test_datasets- d. i/ J( h# t1 l/ I u4 G
, [; l9 b* ?4 G) D# Create linear regression object( J. [8 W( {' H) M
linear = linear_model.LinearRegression()2 l6 S. g1 y1 V! _7 D# G/ L; f! l% }
4 h& Z( I7 k+ m# Train the model using the training sets and check score 2 b `9 Z5 O5 L! G/ P* Q& }+ zlinear.fit(x_train, y_train) 8 c1 D% ~+ m1 \# g8 ]: Ilinear.score(x_train, y_train)! ~8 q/ S: z/ r# q
4 ` \/ G1 P" o% Y% \2 k 3 l& V8 n8 }2 u$ ?; f% T0 o , b+ V# R0 S% b/ k从上图中我们可以看出,总体人群最终在玩与否的事件上被分成了四个群组。而分组是依据一些特征变量实现的。用来分组的具体指标有很多,比如Gini,information Gain, Chi-square,entropy。2 K1 ~# |* R: l6 i0 K, s0 i
& Z2 J9 D- i5 F+ G' B- F. W' F& m0 f* Q1 S1 r: |# q* U
from sklearn import tree3 g l. P/ b% T2 j2 O/ ~6 z
6 L1 Z3 J8 J9 B9 L0 Y" b" v( f( R+ e
9 U8 _( T% W2 u& a& E. Q
# Create tree object # V1 J" y3 P! l8 C6 V% jmodel = tree.DecisionTreeClassifier(criterion='gini') # for classification, here you can change the algorithm as gini or entropy (information gain) by default it is gini ( M- k4 Q1 S6 B9 T: X $ d6 y( C z) C# L8 G# model = tree.DecisionTreeRegressor() for regression" A! \$ ^) B" U/ n5 r, z5 c8 ]4 ]
3 e& Z2 v% f4 o8 g' n# Train the model using the training sets and check score8 x3 r% H# J# F; ~
model.fit(X, y)! u3 S. M+ c0 K) `: Q: A y6 t
model.score(X, y)+ g/ V* F& g- X+ Y0 \
4 P: A8 m E' d+ m8 T4 e#Predict Output 6 t" }, u2 j! \predicted= model.predict(x_test) . w' \9 b& ~; }4. 支持向量机(SVM) 7 \% |/ {- U) k2 ^这是一个分类算法。在这个算法中我们将每一个数据作为一个点在一个n维空间上作图(n是特征数),每一个特征值就代表对应坐标值的大小。比如说我们有两个特征:一个人的身高和发长。我们可以将这两个变量在一个二维空间上作图,图上的每个点都有两个坐标值(这些坐标轴也叫做支持向量)。; b) A6 {6 H, H2 h) k1 e; B% f
' t; s6 }0 o3 \# _' n a X5 n) w' X
现在我们要在图中找到一条直线能最大程度将不同组的点分开。两组数据中距离这条线最近的点到这条线的距离都应该是最远的。: Q9 g) H0 e9 c, |' Q
( D6 ^9 l$ A S9 M2 P+ v2 ^* u" n2 [* m: B* P$ V
c/ l& F' F, R' J
在上图中,黑色的线就是最佳分割线。因为这条线到两组中距它最近的点,点A和B的距离都是最远的。任何其他线必然会使得到其中一个点的距离比这个距离近。这样根据数据点分布在这条线的哪一边,我们就可以将数据归类。 0 C2 q( j3 u1 X2 p% F / {( e0 N2 d0 }, F7 T+ s#Import Library ' B+ ]7 m9 p# \" Sfrom sklearn import svm 9 R! e: [7 B: w* o. ?0 x, g. P! b#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset 9 ]4 T# R; H8 [6 T# Create SVM classification object ; s2 n! J& S) p
. f V$ }3 L7 lmodel = svm.svc() # there is various option associated with it, this is simple for classification. You can refer link, for mo# re detail. & \' s, s, M% |( ^ {7 k# @9 ?+ l' `$ O3 U" ?
# Train the model using the training sets and check score6 U3 V* p6 q+ D. P
model.fit(X, y) 9 J. h2 h& {0 o& Kmodel.score(X, y)& ?! }6 A' ~7 O8 A$ ~2 `& m" E
4 R" d) M. e+ Y3 a3 j7 r#Predict Output% s8 M# n: D! ~# Z% i
predicted= model.predict(x_test)7 f* }2 t% {+ V( ]
5. 朴素贝叶斯 9 N- C2 a/ Q2 \ p0 R. D这个算法是建立在贝叶斯理论上的分类方法。它的假设条件是自变量之间相互独立。简言之,朴素贝叶斯假定某一特征的出现与其它特征无关。比如说,如果一个水果它是红色的,圆状的,直径大概7cm左右,我们可能猜测它为苹果。即使这些特征之间存在一定关系,在朴素贝叶斯算法中我们都认为红色,圆状和直径在判断一个水果是苹果的可能性上是相互独立的。9 ^# C' L) R. h9 C i
$ [# u( j6 L' _! U% F# J& b$ I% K! |' d
朴素贝叶斯的模型易于建造,并且在分析大量数据问题时效率很高。虽然模型简单,但很多情况下工作得比非常复杂的分类方法还要好。 & ]3 h7 J; L& P6 M ) R; i! r i- a" ~1 M贝叶斯理论告诉我们如何从先验概率P(c),P(x)和条件概率P(x|c)中计算后验概率P(c|x)。算法如下: ! u7 d5 q( }0 w6 a# @8 T 2 t% \3 |/ b7 X1 H% p: e7 o" b* T: P5 U& u. s: V
P(c|x)是已知特征x而分类为c的后验概率。6 u8 W' M$ X4 k. ?
2 t6 p* ~, X g7 c
P(c)是种类c的先验概率。4 n- R( Z5 t; j+ |3 X
$ n* w: g: a! z( T4 S
P(x|c)是种类c具有特征x的可能性。 O& j* H3 B4 M5 o- f- |0 n % v6 a6 R0 ~5 pP(x)是特征x的先验概率。 2 k3 R d3 l, V! S' d : W" c' Q0 p5 K" T- Y0 D+ T2 d5 ^8 X1 ~! g3 D+ `+ O
例子: 以下这组训练集包括了天气变量和目标变量“是否出去玩”。我们现在需要根据天气情况将人们分为两组:玩或不玩。整个过程按照如下步骤进行:9 l5 I" L! i+ M( ?# x
+ _0 _( c r0 }4 X" d- R步骤1:根据已知数据做频率表# s/ j6 y5 p8 n9 ?" `2 A! D
0 L* A: Q: z0 D步骤2:计算各个情况的概率制作概率表。比如阴天(Overcast)的概率为0.29,此时玩的概率为0.64.3 ^) V& K: ~' t+ R
, Y8 e: T3 u4 |/ t" `- o