吴恩达-机器学习课后题06-SVM(支持向量机)2-垃圾邮件

1、问题

垃圾邮件分类

2、解题

1、导入数据:

data1 = sio.loadmat(path)
data2 = sio.loadmat(path2)
print(data1.keys())
X,y = data1['X'],data1['y']
X_test,y_test = data2['Xtest'],data2['ytest']
print(X.shape,y.shape)
print(X)

输出:
dict_keys([‘header’, ‘version’, ‘globals’, ‘X’, ‘y’])
(4000, 1899) (4000, 1)
[[0 0 0 … 0 0 0]
[0 0 0 … 0 0 0]
[0 0 0 … 0 0 0]

[0 0 0 … 0 0 0]
[0 0 1 … 0 0 0]
[0 0 0 … 0 0 0]]

看出X的维度是4000*1899
其中每一行中代表的是封邮件中这个单词是否出现

y:1代表是垃圾邮件,0代表不是
[[1]
[1]
[0]

[1]
[0]
[0]]

2、使用线性的方式,选择最优的参数C

def find_best():
    Cvalues = [0.01, 0.03, 0.1, 0.3, 1, 3, 10, 30, 100]
    # gammas = [0.01, 0.03, 0.1, 0.3, 1, 3, 10, 30, 100]
    best_score = 0
    best_param = 0
    for c in Cvalues:
        # for gamma in gammas:
            svm = SVC(C=c,kernel='linear')
            svm.fit(X,y.flatten())
            score = svm.score(X_test,y_test.flatten())
            if score>best_score:
                best_score = score
                best_param = c
                print(best_param,best_score)
    return best_param,best_score
find_best()

结果:
0.01 0.98
0.03 0.99

可以看出,当c=0.03的时候得分最高,达到了99%

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值