最开始选取鸢尾花数据集来了解决策树模型时,笔者是按照学习报告的形式来写得,在这里将以原形式上传。格式较为繁复,希望读者可以耐心看完,谢谢大家。
目录
1、问题描述
2、数据准备与数据预处理
2.1 收集数据
2.2划分数据集
3、数据可视化
4、模型基本原理与算法实现
4.1 KNN算法基本原理及主程序
4.2决策树模型算法及基本原理
4.3朴素贝叶斯算法及基本原理
5、测试方法与结果
5.1KNN测试结果
5.2决策树测试结果
5.3朴素贝叶斯测试结果
6.总结
7.问题
1、问题描述
iris是鸢尾植物,这里存储了其萼片和花瓣的长宽,共4个属性,鸢尾植物分三类。假定现在出现了一株鸢尾植物,如何通过其所具有的特征来推断出它属于三类中的哪一类?这就是机器学习中的分类问题了。该数据集一共包含4个特征变量,1个类别变量。共有150个样本,鸢尾有三个亚属,分别是山鸢尾 (Iris-setosa),变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。
2、数据准备与数据预处理
2.1收集数据
在本次问题过程中,所使用的是一个较经典的数据集,所以在scikit-learn的数据库中可以找到。也可以在UCI数据集上下载完成。
数据集一共分为四个变量,分别为:花萼长度、花萼宽度、花瓣长度、花瓣宽度
2.2划分数据集
从上面对样本集的输出我们可以看出Iris数据集给出的三种花是按照顺序来的,前50个是第0类,51-100是第1类,101~150是第二类,如果我们分训练集和测试集的时候要把顺序打乱。在这里我们选取120个为训练集,30个为测试集。为实现随机性,选取三个部分的每部分的最后十组数据作为测试集元素。
train_data = np.concatenate((iris.data[0:40, :], iris.data[50:90, :], iris.data[100:140, :]), axis = 0) #训练集
train_target = np.concatenate((iris.target[0:40], iris.target[50:90], iris.target[100:140]), axis = 0) #训练集样本类别
test_data = np.concatenate((iris.data[40:50, :], iris.data[90:100, :], iris.data[140:150, :]), axis = 0) #测试集
test_target = np.concatenate((iris.target[40:50], iris.target[90:100], iris.target[140:150]), axis = 0) #测试集样本类别
3.数据可视化