鸢尾花分类MATLAB实验报告,[机器学习实战-分类-决策树]-以鸢尾花分类实验为例...

整套流程:

1.数据获取,划分训练集测试集

2.模型训练->模型预测->模型评估

3.模型的保存与加载

4.模型可视化

iris数据集简介:共150条数据,三个类(分别:Setosa,Versicolour,Virginica。每个类50条数据),4个维度特征(分别为:萼片长度、萼片宽度、花瓣长度、花瓣宽度)

数据源:https://archive.ics.uci.edu/ml/datasets/iris

88490f54a5df

"""1.数据获取,划分训练集测试集"""

from sklearn import datasets

from sklearn.model_selection import train_test_split

# 数据获取

iris = datasets.load_iris() # 加载 iris 数据集

iris_feature = iris.data # 特征数据

iris_target = iris.target # 分类数据

print('类别:',iris.target_names)

print('特征:',iris.feature_names)

# 划分训练集测试集: test_size测试集占比, random_stat为数据混乱程度

feature_train, feature_test, targe

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
半监督学习是一种利用有标签和无标签数据的机器学习技术,对于标签缺失的数据可以通过无标签数据的信息进行学习。本文将介绍如何使用 MATLAB鸢尾花数据集进行半监督学习分类。 ## 数据集简介 鸢尾花数据集是一个经典的分类数据集,包含了 3 类不同种类的鸢尾花,每类鸢尾花有 50 个样本,共 150 个样本。每个样本包含了 4 个特征,分别是花萼长度、花萼宽度、花瓣长度、花瓣宽度。 ## 导入数据 首先需要将数据导入 MATLAB 中,可以使用 `csvread` 函数读取数据集文件,也可以直接使用 `load` 函数加载数据集。 ```matlab data = csvread('iris.csv'); X = data(:, 1:4); y = data(:, 5); ``` ## 标记部分数据 在半监督学习中,我们需要先标记一部分数据作为有标签数据,这里我们选择标记前 10 个样本。 ```matlab labeled_idx = 1:10; unlabeled_idx = 11:size(X, 1); labeled_X = X(labeled_idx, :); labeled_y = y(labeled_idx); ``` ## 构建分类器 接下来我们使用支持向量机(SVM)作为分类器,使用有标签数据训练 SVM 模型。 ```matlab svm_model = fitcsvm(labeled_X, labeled_y); ``` ## 利用无标签数据学习 现在我们可以利用无标签数据对 SVM 模型进行优化。在半监督学习中,通常使用协同训练(co-training)或自训练(self-training)方法来利用无标签数据进行学习。 ### 协同训练 协同训练是一种基于两个互补的分类器共同学习的方法,假设我们有两个分类器 $C_1$ 和 $C_2$,它们使用不同的特征来进行分类。我们将 $C_1$ 训练在有标签数据上,然后将 $C_2$ 训练在无标签数据上,并使用 $C_1$ 对 $C_2$ 预测的样本进行筛选,将预测结果置信度较高的样本加入有标签数据中,然后重新训练 $C_1$ 和 $C_2$。重复这个过程直到达到一定的迭代次数或者准确率。 ```matlab unlabeled_X = X(unlabeled_idx, :); co_train_model_1 = fitcsvm(labeled_X, labeled_y); co_train_model_2 = fitcsvm(unlabeled_X, predict(co_train_model_1, unlabeled_X)); for i = 1:10 [pred, score] = predict(co_train_model_2, unlabeled_X); [~, idx] = sort(max(score, [], 2), 'descend'); labeled_X = [labeled_X; unlabeled_X(idx(1), :)]; labeled_y = [labeled_y; pred(idx(1))]; co_train_model_1 = fitcsvm(labeled_X, labeled_y); co_train_model_2 = fitcsvm(unlabeled_X, predict(co_train_model_1, unlabeled_X)); end ``` ### 自训练 自训练是一种基于单个分类器的方法,假设我们有一个分类器 $C$,我们将其训练在有标签数据上,然后将预测结果置信度较高的样本加入有标签数据中,然后重新训练分类器。重复这个过程直到达到一定的迭代次数或者准确率。 ```matlab self_train_model = fitcsvm(labeled_X, labeled_y); for i = 1:10 [pred, score] = predict(self_train_model, unlabeled_X); [~, idx] = sort(max(score, [], 2), 'descend'); labeled_X = [labeled_X; unlabeled_X(idx(1), :)]; labeled_y = [labeled_y; pred(idx(1))]; self_train_model = fitcsvm(labeled_X, labeled_y); end ``` ## 测试分类器 现在我们可以使用测试集来评估我们的分类器的性能了。 ```matlab test_X = X(141:end, :); test_y = y(141:end); co_train_pred = predict(co_train_model_1, test_X); co_train_acc = sum(co_train_pred == test_y) / numel(test_y); self_train_pred = predict(self_train_model, test_X); self_train_acc = sum(self_train_pred == test_y) / numel(test_y); ``` ## 总结 本文介绍了如何使用 MATLAB鸢尾花数据集进行半监督学习分类,包括了构建分类器、标记部分数据、利用无标签数据学习以及测试分类器。半监督学习是一种非常实用的机器学习技术,可以在标签数据较少的情况下提升分类器的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值