Skip to content

Commit 8027398

Browse files
committed
SVM
1 parent 5b39d9e commit 8027398

File tree

4 files changed

+41
-1
lines changed

4 files changed

+41
-1
lines changed

formula/SVM.wmf

14.3 KB
Binary file not shown.

images/SVM_09.png

28.4 KB
Loading

images/SVM_10.png

101 KB
Loading

readme.md

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,44 @@ def predict(Theta1,Theta2,X):
693693
![enter description here][30]
694694
![enter description here][31]
695695

696+
- 如何选择初始的![{l^{(1)}}{l^{(2)}}{l^{(3)}}...](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%7Bl%5E%7B%281%29%7D%7D%7Bl%5E%7B%282%29%7D%7D%7Bl%5E%7B%283%29%7D%7D...)
697+
- 训练集:![(({x^{(1)}},{y^{(1)}}),({x^{(2)}},{y^{(2)}}),...({x^{(m)}},{y^{(m)}}))](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%28%28%7Bx%5E%7B%281%29%7D%7D%2C%7By%5E%7B%281%29%7D%7D%29%2C%28%7Bx%5E%7B%282%29%7D%7D%2C%7By%5E%7B%282%29%7D%7D%29%2C...%28%7Bx%5E%7B%28m%29%7D%7D%2C%7By%5E%7B%28m%29%7D%7D%29%29)
698+
- 选择:![{l^{(1)}} = {x^{(1)}},{l^{(2)}} = {x^{(2)}}...{l^{(m)}} = {x^{(m)}}](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%7Bl%5E%7B%281%29%7D%7D%20%3D%20%7Bx%5E%7B%281%29%7D%7D%2C%7Bl%5E%7B%282%29%7D%7D%20%3D%20%7Bx%5E%7B%282%29%7D%7D...%7Bl%5E%7B%28m%29%7D%7D%20%3D%20%7Bx%5E%7B%28m%29%7D%7D)
699+
- 对于给出的`x`,计算`f`,令:![f_0^{(i)} = 1](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=f_0%5E%7B%28i%29%7D%20%3D%201)所以:![{f^{(i)}} \in {R^{m + 1}}](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%7Bf%5E%7B%28i%29%7D%7D%20%5Cin%20%7BR%5E%7Bm%20%2B%201%7D%7D)
700+
- 最小化`J`求出`θ`
701+
![J(\theta ) = C\sum\limits_{i = 1}^m {[{y^{(i)}}\cos {t_1}({\theta ^T}{f^{(i)}}) + (1 - {y^{(i)}})\cos {t_0}({\theta ^T}{f^{(i)}})} ] + \frac{1}{2}\sum\limits_{j = 1}^{\text{n}} {\theta _j^2} ](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=J%28%5Ctheta%20%29%20%3D%20C%5Csum%5Climits_%7Bi%20%3D%201%7D%5Em%20%7B%5B%7By%5E%7B%28i%29%7D%7D%5Ccos%20%7Bt_1%7D%28%7B%5Ctheta%20%5ET%7D%7Bf%5E%7B%28i%29%7D%7D%29%20%2B%20%281%20-%20%7By%5E%7B%28i%29%7D%7D%29%5Ccos%20%7Bt_0%7D%28%7B%5Ctheta%20%5ET%7D%7Bf%5E%7B%28i%29%7D%7D%29%7D%20%5D%20%2B%20%5Cfrac%7B1%7D%7B2%7D%5Csum%5Climits_%7Bj%20%3D%201%7D%5E%7B%5Ctext%7Bn%7D%7D%20%7B%5Ctheta%20_j%5E2%7D%20)
702+
- 如果![{\theta ^T}f \geqslant 0](http://chart.apis.google.com/chart?cht=tx&chs=1x0&chf=bg,s,FFFFFF00&chco=000000&chl=%7B%5Ctheta%20%5ET%7Df%20%5Cgeqslant%200),==》预测`y=1`
703+
704+
### 4、使用`scikit-learn`中的`SVM`模型代码
705+
- 线性可分的,指定核函数为`linear`
706+
```
707+
'''data1——线性分类'''
708+
data1 = spio.loadmat('data1.mat')
709+
X = data1['X']
710+
y = data1['y']
711+
y = np.ravel(y)
712+
plot_data(X,y)
713+
714+
model = svm.SVC(C=1.0,kernel='linear').fit(X,y) # 指定核函数为线性核函数
715+
```
716+
- 非线性可分的,默认核函数为`rbf`
717+
```
718+
'''data2——非线性分类'''
719+
data2 = spio.loadmat('data2.mat')
720+
X = data2['X']
721+
y = data2['y']
722+
y = np.ravel(y)
723+
plt = plot_data(X,y)
724+
plt.show()
725+
726+
model = svm.SVC(gamma=100).fit(X,y) # gamma为核函数的系数,值越大拟合的越好
727+
```
728+
### 5、运行结果
729+
- 线性可分的决策边界:
730+
![enter description here][32]
731+
- 线性不可分的决策边界:
732+
![enter description here][33]
733+
696734

697735
[1]: ./images/LinearRegression_01.png "LinearRegression_01.png"
698736
[2]: ./images/LogisticRegression_01.png "LogisticRegression_01.png"
@@ -724,4 +762,6 @@ def predict(Theta1,Theta2,X):
724762
[28]: ./images/SVM_05.png "SVM_05.png"
725763
[29]: ./images/SVM_06.png "SVM_06.png"
726764
[30]: ./images/SVM_07.png "SVM_07.png"
727-
[31]: ./images/SVM_08.png "SVM_08.png"
765+
[31]: ./images/SVM_08.png "SVM_08.png"
766+
[32]: ./images/SVM_09.png "SVM_09.png"
767+
[33]: ./images/SVM_10.png "SVM_10.png"

0 commit comments

Comments
 (0)