写一个matlab机器学习一个例子
时间: 2023-07-07 08:31:23 浏览: 54
好的,以下是一个简单的Matlab机器学习例子,使用支持向量机(SVM)进行分类:
1. 准备数据:
```
% 生成训练数据
rng(1); % 设置随机数种子
X1 = randn(50,2) + 1; % 类别1的数据
X2 = randn(50,2) - 1; % 类别2的数据
Y1 = ones(50,1); % 类别1的标签
Y2 = -ones(50,1); % 类别2的标签
X = [X1; X2]; % 合并数据
Y = [Y1; Y2]; % 合并标签
```
2. 分离训练集和测试集:
```
% 分离训练集和测试集
cv = cvpartition(length(Y),'HoldOut',0.2); % 随机抽取20%的样本作为测试集
idx_train = training(cv);
idx_test = test(cv);
X_train = X(idx_train,:);
Y_train = Y(idx_train,:);
X_test = X(idx_test,:);
Y_test = Y(idx_test,:);
```
3. 训练SVM模型:
```
% 训练SVM模型
svm = fitcsvm(X_train,Y_train,'KernelFunction','rbf','BoxConstraint',1);
```
4. 测试模型:
```
% 测试模型
Y_pred = predict(svm,X_test);
accuracy = sum(Y_pred == Y_test)/length(Y_test);
disp(['Test Accuracy: ' num2str(accuracy)]);
```
5. 可视化分类结果:
```
% 可视化分类结果
figure;
gscatter(X(:,1),X(:,2),Y);
hold on;
xmin = min(X(:,1));
xmax = max(X(:,1));
ymin = min(X(:,2));
ymax = max(X(:,2));
[x,y] = meshgrid(linspace(xmin,xmax,100),linspace(ymin,ymax,100));
Xgrid = [x(:) y(:)];
[~,score] = predict(svm,Xgrid);
contour(x,y,reshape(score(:,2),size(x)),[0 0],'k');
title(['SVM Classification (Test Accuracy: ' num2str(accuracy) ')']);
```
以上是一个简单的Matlab机器学习例子,使用SVM进行二分类。可以通过修改数据和参数来尝试不同的机器学习算法和应用场景。