Coursera NG 机器学习 第六周 SVM分类 Spam Classifier Python 实现

本文介绍如何使用SVM进行非线性数据分类,并探讨了SVM参数C和gamma的影响。同时,展示了应用SVM构建一个简单的垃圾邮件分类器,作业中结合了朴素贝叶斯和SVM,但预处理部分因技术限制未实现,而是采用输出邮件到txt文件再读取的方式。
摘要由CSDN通过智能技术生成

SVM 分类

ex6.py

import numpy as np
from scipy.io import loadmat
from sklearn.svm import SVC
import matplotlib.pyplot as plt
from ex6modules import *
 
#Exmaple 1
data=loadmat('ex6data1.mat')
X=data['X']
y=data['y'].ravel()
plotData(X,y)
plt.show()
 
#Plot C=1's boundary
clf=SVC(C=1,kernel='linear')
clf.fit(X,y)
visualizeBoundaryLinear(X,y,clf)
 
#Plot C=100's boundary
clf=SVC(C=100,kernel='linear')
clf.fit(X,y)
visualizeBoundaryLinear(X,y,clf)
 
#Examing Gaussian Kernel
sim=gaussianKernel(np.array([1,2,1]),np.array([0,4,-1]),sigma=2)
print("similarity :",sim)
 
#Example 2
data=loadmat('ex6data2.mat')
X=data['X']
y=data['y'].ravel()
plotData(X,y)
plt.show()
 
clf=SVC(C=1,kernel='rbf',gamma=50) #gamma=1/(2*sigma**2)
clf.fit(X,y)
visualizeBoundary(X,y,clf)
 
#Exmaple 3
data=loadmat('ex6data3.mat')
X=data['X']
y=data['y'].ravel()
Xval=data['Xval']
yval=data['yval']
plotData(X,y)
plt.show()
 
Csteps=np.array([.01,.03,.1,.3,1,3,10,30])
gammasteps=np.array([1/(2*.01**2),1/(2*.03**2),1/(2*.1**2),1/(2*.3**2),\
                     1/(2*1**2),1/(2*3**2),1/(2*10**2),1/(2*30**2)])
 
Cmin,gammamin=findBest(Csteps,gammasteps,X,y,Xval,yval)
 
clf=SVC(C=Cmin,kernel='rbf',gamma=gammamin)
clf.fit(X,y)
visualizeBoundary(X,y,clf)

ex6modules.py 

import matplotlib.pyplot as plt
import numpy as np
from sklearn.svm import SVC
 
def plotData(X,y):
    pos &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值