- SVM支持向量机
1)Gaussian kernel实现,计算两个样本的相似度,用于学习非线性边界。
sim = exp(-(x1-x2)'*(x1-x2)/(2*sigma^2));
2)找到最优的C与sigma参数
其实就是枚举,计算不同参数组合的错误率,找到最小的。
先用学习的样本进行模型学习,然后用验证集计算错误率。dataset3Params.m文件
- 垃圾邮件分类
邮件分类时,先提取特征,特征提取方法如下:
- 先把邮件里的词语做替换,将部分相似的词语替换成统一个一个词
- 进行词频统计,为模型学习正确性,出现少的词频不要拿来学习,否则影响精度
- 将选用做特征的词进行编码,转化成数字。
processEmail.m文件
for i= 1: len
if strcmp(str, vocabList{i})
word_indices =[word_indices;i];
end
其实就是做了遍历查找。
邮件向量化 emailFeatures.m 文件
indics_len = length(word_indices);
for i=1:indics_len
x(word_indices(i))=1;
end