0
点赞
收藏
分享

微信扫一扫

python留出法鸢尾花

Python留出法与鸢尾花数据集

在机器学习中,评估模型性能是一个至关重要的步骤。留出法(Hold-Out)是一种简单有效的模型评估技术,它通过将数据集划分为两个部分:训练集和测试集,来评估模型的表现。在这篇文章中,我们将讨论留出法的基本原理,并使用鸢尾花数据集作为示例。

留出法的基本原理

留出法简单来说就是将数据集分成两部分:训练集和测试集。模型在训练集上进行训练,然后在测试集上进行验证。这种方法的优点是简单易实施,缺点是模型的评估结果会受到划分的随机性的影响。

工作流程

留出法的基本工作流程如下:

stateDiagram
    [*] --> 数据集准备
    数据集准备 --> 划分数据集
    划分数据集 --> 训练模型
    训练模型 --> 验证模型
    验证模型 --> [*]

鸢尾花数据集介绍

鸢尾花数据集(Iris Dataset)是一个经典的机器学习数据集,包含150个样本,每个样本有四个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。这些样本属于三种不同的鸢尾花类型:山鸢尾、变色鸢尾和维吉尼亚鸢尾。

导入必要的库

为了使用鸢尾花数据集,我们需要导入一些必要的库,包括 pandasnumpysklearn。以下是导入这些库的代码:

import pandas as pd
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

加载数据集

接下来,我们将加载鸢尾花数据集并将其转换为一个pandas DataFrame,以便于之后的操作:

# 加载数据集
iris = datasets.load_iris()
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
iris_df['species'] = iris.target

数据集划分

我们将数据集划分为训练集和测试集,通常使用70%到80%的数据用于训练,20%到30%的数据用于测试。我们使用 train_test_split 函数来完成这一任务:

# 划分数据集
X = iris_df[iris.feature_names]
y = iris_df['species']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

在上面的代码中,X 是特征集,y 是目标变量。test_size 参数表示测试集所占的比例,random_state 参数确保每次划分的一致性。

训练模型

在数据集划分完成后,我们可以选择一个机器学习算法进行训练。这里我们采用 K 最近邻(KNN)算法进行示范:

# 初始化KNN模型
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

验证模型

训练完成后,我们使用测试集来评估模型性能,然后输出模型的准确率:

# 进行预测
y_pred = knn.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'模型的准确率为: {accuracy:.2f}')

总结

通过以上步骤,我们成功利用留出法对鸢尾花数据集进行建模,并评估了模型的性能。留出法因其简单性而广受欢迎,但它也有一些局限性,例如对数据的随机划分可能会影响模型的评估结果。

如果数据集较小,推荐使用交叉验证,这样可以更充分地利用数据集,并提供更稳定的评估结果。

扩展阅读

  • 交叉验证:了解如何使用 k-fold 交叉验证技术来提高模型评估的可靠性。
  • 其他赛道:探索其他机器学习模型和更复杂的数据集,通过实践提高机器学习技能。

在机器学习的旅程中,留出法是一个很好的起点,但记住,技术始终在不断发展,了解更多方法会使你在这条路上走得更远。希望这篇文章能够助你一臂之力,激发你对数据科学和机器学习的热情!

举报

相关推荐

0 条评论