数学建模MATLAB代码知识点集合

每天都加一点点
ps:ctrl+F查找

  1. K-近邻分类
 %% ———————————机器学习方法———————————————%%
 2 %%%%%%%%%%%%%%%%%%%%%%%1.K-近邻分类%%%%%%%%%%%%%%%%%%%%%%%%%
 3 %16个属性分别为:
 4 %age   job   marital  education default  balance  housing loan   contact
 5 %day  month  duration  campaign    pdays    previous    poutcome    y(是否愿意)  
 6 load 'bank.mat';%载入记录数据
 7 names = bank.Properties.VariableNames;%使用数据文件,记录自变量和因变量的属性名
 8 category = varfun(@iscellstr,bank,'Output','uniform'); %输出格式为数值格式。为字符串的返回结果为1,为数字的返回结果为0
 9 for i = find(category)
10     bank.(names{i}) = categorical(bank.(names{i}));
11     %将bank中的属性创建分类数组。bank.(names{i}) 的类别是bank.(names{i})经过分类后的唯一值且经过排序
12 end
13 catPred = category(1:end-1);
14 rng('default');%设置随机数的生成方式,‘default’可以生成相同的随机数
15 figure(1)
16 gscatter(bank.balance,bank.duration,bank.y,'kk','xo')
17 set(gca,'linewidth',2);
18 X = table2array(varfun(@double,bank(:,1:end-1)));%预测变量
19 Y = bank.y;
20 disp('数据中YES&No的统计结果');
21 tabulate(Y) %求重复数字的个数使用tabulate,占比率
22 Xnum = [X(:,~catPred) dummyvar(X(:,catPred))];
23 Ynum = double(Y)-1;
24 
25 %%%设置交叉验证方式
26 cv = cvpartition(height(bank),'holdout',0.40);
27 Xtrain = X(training(cv),:);
28 Ytrain = Y(training(cv),:);
29 XtrainNum = Xnum(training(cv),:);
30 YtrainNum = Ynum(training(cv),:);
31 Xtest = X(test(cv),:);
32 Ytest = Y(test(cv),:);
33 XtestNum = Xnum(test(cv),:);
34 YtestNum = Ynum(test(cv),:);
35 disp('训练集');
36 tabulate(Ytrain);
37 disp('测试集');
38 tabulate(Ytest);
39 
40 %%%训练K-NN分类器
41 knn = ClassificationKNN.fit(Xtrain,Ytrain,'Distance','seuclidean','NumNeighbors',5);
42 %进行预测
43 [Y_knn,Yscore_knn] = knn.predict(Xtest);
44 Yscore_knn = Yscore_knn(:,2);
45 %计算混淆矩阵
46 disp('最近邻方法分类结果:');
47 C_knn = confusionmat(Ytest,Y_knn)

ClassificationKNN.fit:建立
mdl =ClassificationKNN.fit(X,Y):
基于特征和分类标签返回分类模型。
X:每行表示一个特征向量,每列表示特征向量中一个变量。
Y:每行代表的是X中特征向量说代表的标签或种类。
mdl = ClassificationKNN.fit(X,Y,Name,Value):
value代表K的值

cvpartition()
语法1:c = cvpartition(n,‘KFold’,k);
说明:k折法,在n个样本中将数据集平均划分k组,分组是用逻辑数组表示。
语法2:c = cvpartition(n,‘HoldOut’,p);
说明:简单随机交叉验证,在n个样本中选择n*p个样本作为测试集(0<p<1时),或者选择p个样本作为测试集(p为整数);
语法3:c = cvpartition(n,‘LeaveOut’,);
说明:留一法交叉验证,在n个样本中选择1个样本作为测试集,重复n次。

  1. 贝叶斯分类

如何利用新证据修改已有的看法

B = repmat(A,m,n)
B = repmat(A,[m n])
B = repmat(A,[m n p…])

这是一个处理大矩阵且内容有重复时使用,其功能是以A的内容堆叠在(MxN)的矩阵B中,B矩阵的大小由MxN及A矩阵的内容决定,如果A是一个3x4x5的矩阵,有B = repmat(A,2,3)则最后的矩阵是6x12x5

3.支持向量机
找到对分类有较好区分能力的支持向量,由此构造的分类器可以最大化类与类的间隔,因而有较好的适应能力和较高的分辨率

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值