目标是:对98个样本,1000个属性的Excel数据进行二分类,求最佳支持向量机。
4条回答 默认 最新
- Coral Gajic 2018-01-03 08:39关注
clear all;
close all;
clc;
% 确保libsvm_317工具包在当前文件夹
addpath('.\libsvm_317\matlab'); % 引入\libsvm_317\matlab\子文件夹中的子函数%% SVR 基本使用示例
% 产生初始训练样本和训练输出量
P=-1:0.1:1; % 训练样本输入, 1*N
T=sin(pi*P); % 训练样本输出, 1*N% 确保libsvm工具包输入函数格式
P1 = P'; % 确保训练样本矩阵为 N*m, N表示有多少个样本, m表示一个样本有多少属性量(也叫特征量),本示例中 m=1
T1 = T'; % 确保训练样本输出为 N*1, N表示样本个数, 1表示SVR的输出为1维量%% 调用SVM训练函数, 部分参数定义如下, 详细请参考\libsvm_317\matlab\子文件夹中的svmtrain.c文件
% 这些参数的具体物理意义, 请参考 http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 网站
% ------------------------------------------------
% "-s svm_type : set type of SVM (default 0)"
% " 0 -- C-SVC (multi-class classification)"
% " 1 -- nu-SVC (multi-class classification)"
% " 2 -- one-class SVM"
% " 3 -- epsilon-SVR (regression)"
% " 4 -- nu-SVR (regression)"
% --------------------------------------------------
% "-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)"
% --------------------------------------------------
% "-t kernel_type : set type of kernel function (default 2)"
% " 0 -- linear: u'*v\n"
% " 1 -- polynomial: (gamma*u'*v + coef0)^degree"
% " 2 -- radial basis function: exp(-gamma*|u-v|^2)"
% " 3 -- sigmoid: tanh(gamma*u'*v + coef0)"
% " 4 -- precomputed kernel (kernel values in training_instance_matrix)"
% ---------------------------------------------------
model = svmtrain(T1, P1, '-s 3 -p 0.1 -t 2'); % SVM(SVR)训练结果保存在model类结构下% 校验当前参数下,SVR模型的训练误差量, 即将训练样本P1和其输出T1输入, model参数集输入,
% 计算训练样本P1在拟合曲线上的输出, 与真实输出T1的误差量
[~, accuracy, ~] = svmpredict(T1, P1, model); % test the training data
accuracy(3) % 输出训练误差量%% 利用训练得到的SVR模型, 预测未知量的拟合输出值
P_test = [0.1,0.2,0.3]; % 1*k, k个未知量
P_test1 = P_test'; % 确保测试样本矩阵为 k*m, k表示有多少个测试样本, m表示一个样本有多少属性量(也叫特征量),本示例中 m=1% 将测试样本输入, 计算拟合输出量
[test_label, ~, ~] = svmpredict(ones(size(P_test1,1),1), P_test1, model);
%
% 由于训练样本是按照 sin(pi*x)函数产生的,所以测试样本集 P_test1 的真实期望输出为 sin(pi*P_test1)
disp('测试样本集P_test1的真实期望输出为:');
T_test1 = sin(pi*P_test1)
disp('测试样本集P_test1的拟合期望预测为:');
test_labelclear all; % 清楚所有变量缓存
close all; % 关闭所有打开Figure窗口
clc; % 清除命令窗口无关内容%% 变量输入
a = [1, 2, 3]; % 行向量
b = [1; 2; 3]; % 列向量
% Excel中copy
c = [];
% 变量空间中paste
d = [];
f = magic(4)[f_max_lab1, f_max_lab2]=find(f==min(min(f))) % 找出矩阵f中最小值对应的坐标
%% 变量保存
save(['data_a_b.mat'],'a','b'); % 将Matlab数据进行保存clear all; % 删除所有变量
load('data_a_b.mat'); % 直接引入, 可看到变量 a b 重新出现
D0 = load('data_a_b.mat'); % 以类的形式进行引入, a和b以类结构出现%%
clear all;
% close all;
clc;
%
%% 作图
x_value = [7.5, 6, 5.5, 5, 4.5, 4, 3];
y_value = [0.51, 0.67, 0.721, 0.80, 0.754, 0.721, 0.601];
%
figure(1);% '*'为星号形, '+'为加号形, 'x'为叉号形状....
% 'Color'有多种颜色, blue,green,red,cyan,magenta,yellow,black
plot(x_value, y_value, '-*','MarkerSize',10,'LineWidth',2, 'Color','blue');xxl = xlabel('隐层节点数'); %横标题
set(xxl,'Fontsize',16); %调节标题大小
yyl = ylabel('数据值'); %纵标题
set(yyl,'Fontsize',16); %调节标题大小% 有两种结果需要比较,如下
x_value1 = x_value - 1;
y_value1 = [0.51, 0.67, 0.721, 0.80,... % 代码比较长, 可以用连续3个点号回车换行
0.754, 0.721, 0.601] + 0.1;hold on; % 如果多个结果图在一个Figure里面, 需要 hold on 命令
plot(x_value1, y_value1, '-+','MarkerSize',10,'LineWidth',2, 'Color','red');% 需要标注区分两个结果图
table = legend('结果1','结果2');grid on; % 打开网格命令
% hold off;
%% 多项式拟合
clear all;
% close all;
clc;x = [26.3, 33.5, 39.1, 43.1, 47.0, 50.0, 54.5, 56.8, 64.9, 72.0, 77.0];
y = [8.85, 8.17, 7.49, 7.16, 6.81, 6.58, 6.21, 5.91, 5.48, 5.11, 5.98];
%多项式拟合
n = 1;
A = polyfit(x,y,n); % n是给定的多项式的次数,拟合出来的结果A是系数向量
y1 = polyval(A,x); % 计算出拟合的y值
figure, plot(x,y,'*','MarkerSize',10,'LineWidth',2, 'Color','blue'); %
hold on;
plot(x,y1,'-','MarkerSize',10,'LineWidth',2, 'Color','red'); % 画出数据对比图,黑点是原始数据,红线是拟合曲线
gtext('y=kx+b'); %将拟合得到的直线方程式画到当前Figure图里面%% 直方图绘制
clear all;
% close all;
clc;
RE_value = rand(1000,1); % 随机生成1000个随机数
% 统计这1000个随机数的概率直方图, 标出直方图变化曲线(红色),并规定好X轴和Y轴的坐标范围
figure,histfit(RE_value), axis([-0.1 1.1 0 60]);
% 定义Title名字
ttl = title('Model1'); set(ttl,'Fontsize',20,'FontWeight','bold');
% 定义X和Y坐标的名字
xxl = xlabel('RE'); set(xxl,'Fontsize',20);
yyl = ylabel('Frequency'); set(yyl,'Fontsize',20);
set(gca, 'FontSize', 15);解决 2无用
悬赏问题
- ¥15 用三极管设计—个共射极放大电路
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
- ¥15 求daily translation(DT)偏差订正方法的代码
- ¥15 js调用html页面需要隐藏某个按钮
- ¥15 ads仿真结果在圆图上是怎么读数的
- ¥20 Cotex M3的调试和程序执行方式是什么样的?
- ¥20 java项目连接sqlserver时报ssl相关错误
- ¥15 一道python难题3
- ¥15 牛顿斯科特系数表表示