今天来更新一个超超超级经典的数据集的数据分析实验吧!
在今天这个实验室中,我们将使用著名流行的数据集——【鸢尾花数据集-Iris Dataset】(来自Ronald Fisher)。
这是一个由三种不同鸢尾花的50个样本(总共150个样本)组成的数据集,每个样本都有萼片长度、萼片宽度、花瓣长度和花瓣宽度的测量值。
一开始,我们可以从Kaggle数据集中查看数据集信息,除了ID列,我们可以看到还有五列。
前四列是关于测量的,最后一列是三个不同种类的鸢尾花(setosa, versicolor和virginica)。
首先,我们从Scikit-Learn中加载数据集。
事实上,Iris数据集是在Scikit-Learn中预加载的,我们可以简单地使用导入函数来使用它。在单元格中输入以下语句并运行它们以检查结果。
我们来打印四种Iris特征名字。
然后打印代表每个观察到的物种的整数,物种编码方案如下:0=setosa, 1=versicolor, 2=virginica。
检查功能和目标(响应)的类型。
检查特征的形状(第一行)和响应(第二行)。
上面的代码显示了Iris的[数据](特征)和[目标](响应)的[形状](维度)。
对于这个数据集, “150”表示有150行记录/观测值,“4”是列(特征)的数量。
另外,我们把它当作一个待运算的矩阵。对于[target标签],这是一个单一的维度。结果是150,应该与观察数(记录行)相匹配。
机器学习模型
现在,我们已经准备好了数据集,我们可以尝试建立一个分类模型(应用kNN (k-Nearest Neighbors)算法)来对未知的虹膜物种进行预测。
下面列出了kNN分类的简要描述。
kNN分类选择一个k值在训练数据集中搜索最接近未知Iris测量值的k个观测值。
使用kNN中最流行的响应值作为未知Iris的预测响应值。
定义X与y。
步骤1 -导入我们计划使用的类(即kNN)
步骤2 -实例化估计器
步骤3 -用数据拟合模型(模型训练)
步骤4 -预测一个新的观测结果的响应
它返回一个“NumPy”数组。o这意味着它可以预测多个观测结果。
可以尝试一些其他值并检查结果。
对k使用不同的值,简单地重复步骤2到4,做一个新的预测。
哪一个更好呢?
模型评价
我们刚刚用kNN和Logistic回归建立了三个分类模型。我们如何评估这三个模型的结果?
首先,我们需要存储这些预测结果,然后检查它们的准确性(有多少预测与实际的预测相匹配)。
为了检查准确性,我们从Scikit-Learn中导入一个函数来检查预测的准确性。
由于我们使用了整个数据集来生成模型,并使用同一组数据来测试模型,因此它被称为[训练精度]。
现在,我们有三个查准率:0.97333 vs 0.96666 vs 1.0。
查准率= 1.0时,表示100%正确。
模型评估-分割数据
一般来说,我们使用分类模型来预测那些“样本外”数据/查询。在我们的例子中,我们使用同一组数据进行训练和测试,这可能会导致模型“过拟合”。因此,“准确率”通常很高。
例如,如果我们用模型来预测“样本外”数据,我们无法得到与我们从“测试”中得到的相同的满意结果。
一种解决方案是:我们将数据集分成两个,一个用于训练,另一个用于测试。
在Scikit-Learn中,有一个函数可以帮助我们将数据集分成两个。
对测试集进行预测,然后检查准确性得分。
也许我们可以为kNN尝试更多的k值,比如1到25,就像先前那样。
检查分数数组,结果如下所示。
为了有一个更好的可视化,我们可以绘制一个图表来显示结果。
k的最佳值似乎是11。我们可以简单地使用这个值来预测那些样本外的观测结果。