matlab里支持向量机SVM实例1葡萄酒分类

1.数据集介绍
wine数据的来源是UCI数据库,记录的是在意大利同一区域上三种不同品种的葡萄酒的化学成分分析,数据里含有178个样本,每个样本含有13个特征分量(化学成分),每个样本的类别标签已给。将这178个样本的50%作为训练集,另50%作为测试集,用训练集对SVM进行训练可以得到分类模型,再用得到的模型对测试集进行类别标签预测。
在178个样本中,1-59属于第一类,60-130属于第二类,131-178属于第三类。现将每个类别分成两组,重新组合数据,一部分作为训练集(train_wine),一部分作为测试集(test_wine)。
matlab里支持向量机SVM实例1葡萄酒分类_第1张图片
2.matlab里SVM代码

%%查看红酒数据集属性
help wine_dataset
%%把matlab表变成excel格式,前提是每个表都是一列数据
load patients.mat
T = table(LastName,Age,Weight,Smoker);
T(1:5,:)
filename = 'patientdata.xlsx';
writetable(T,filename,'Sheet',1,'Range','D1')
%%表行列转换
%a=a';
%%添加路径
addpath('matlab')
%%读取数据
data=xlsread('红酒分类数据集.xlsx','Sheet1','A1:N178');%工作布名字,表名,数据开始左上角:右下角
%%冒号用法
A=randi([1 15],10,6)%使用 randi 函数生成在 1050 之间均匀分布的 5 个随机整数
B=A(:,1:5)
features=data(:,1:13);%特征
class=data(:,14);%类型
%%归一化
temp=mapminmax(features',0,1);%归一化到0-1之间,mapminmax按行逐行地对数据进行标准化处理,将每一行数据分别标准化到区间[ymin,ymax]内
featuresn=temp';%转置
%%构建支持向量机
cmd=['-c 100 -g 0.1 -s 0 -t 2'];%支持向量机参数设置
model=svmtrain(class,featuresn,cmd);%对数据进行训练
%%使用支持向量机做预测
[predict_class,accuracy,dec_value]=svmpredict(class,featuresn,model);
%%预测结果作图
figure
plot(class,'bo');
hold on
plot(predict_class,'r');
grid on
xlabel('样本序号');
ylabel('类型');
legend('实际类型','预测类型');
set(gca,'fontsize',12)

最后运行数据可视化和变量、正确率
matlab里支持向量机SVM实例1葡萄酒分类_第2张图片
补充:

%%模型函数
model=svmtrain(training_label_vector,training_instance_matrix [, 'libsvm_options']);
%%预测函数
[predicted_label,accuracy,decision_values/prob_estimates]=svmpredict(testing_label_vector, testing_instance_matrix, model [, 'libsvm_options']);

以下内容补充几个参数翻译,非表里数据。
:svm-train [options] training_set_file [model_file]
options:
-s svm_type:设定SVM类型(默认为0)
0 – C-SVC (多类分类)
1 – nu-SVC (多类分类)
2 – one-class SVM
3 – epsilon-SVR (回归)
4 – nu-SVR (回归)
-t kernel_type:设定核函数类型(默认为2)
0–linear:u'v线性核函数
1 – polynomial: (gamma
u'v + coef0)^degree 多项式核函数
2 – radial basis function: exp(-gamma
|u-v|^2) 径向基函数
3 – sigmoid: tanh(gamma*u'v + coef0) sigmoid核函数
4 – precomputed kernel (kernel values in training_set_file) 自定义核函数
-d degree:设定核函数的 degree 值(默认为 3)
-g gamma:设定核函数的 gamma 值(默认为 1/k)
-r coef0:设定核函数的 coef0 值(默认为 0)
-c cost:设定 C-SVC,epsilon-SVR,nu-SVR 的参数惩罚因子C值(默认为 1)
-n nu:设定 nu-SVC,one-class SVM,nu-SVR 的参数nu值(默认为 0.5)
-p epsilon:设定 epsilon-SVR 的损失函数中的 epsilon 值(默认为 0.1)
-m cachesize:设定缓存大小,以 MB 为单位(默认为 100)
-e epsilon:设定终止条件的允差(默认为 0.001)
-h shrinking:是否使用 shrinking heuristics(PS:这玩意太不好翻译),0 或 1(默认为 1)
-b probability_estimates:是否训练一个 SVC 或 SVR 模型做概率估计,0或1(默认为 0)
-wi weight : 对于 C-SVC,设定 i 类的参数 C 为 weight
C(默认为1)
-v n:n-折交叉验证模式
-q :退出模式(无输出)
-g 选项中的的 k 为输入数据的属性数量。
-v 选项随机截取数据为 n 个部分,计算它们的交叉验证的精度或者均方误差。

你可能感兴趣的:(MATLAB机器学习,支持向量机,matlab,分类)