【升华】机器学习鸢尾花分类完整代码示例
一、鸢尾花数据集简介
鸢尾花数据集(Iris dataset)是机器学习领域中最著名的数据集之一,由英国统计学家和生物学家Ronald Fisher于1936年整理发布。该数据集包含了150个样本,每个样本有四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及一个标签,指示该样本属于三种鸢尾花中的哪一种(Setosa、Versicolor、Virginica)。
鸢尾花
二、决策树算法概述
决策树是一种监督学习算法,可用于分类和回归任务。它通过递归地将数据集划分成多个子集,直到每个子集中的样本都属于同一类别为止。决策树的每个内部节点表示一个特征上的测试,每个分支代表一个测试输出,而每个叶子节点则表示一个类别。
在scikit-learn中,决策树算法有两个主要实现:DecisionTreeClassifier
用于分类任务,DecisionTreeRegressor
用于回归任务。本文将专注于分类任务。
鸢尾花分类任务是一个经典的机器学习问题,通常用于演示和测试分类算法的性能。该任务的目标是根据鸢尾花的特征将其分为三个不同的品种,即山鸢尾(Setosa)、变色鸢尾(Versicolor)和维吉尼亚鸢尾(Virginica)。这个任务是一个多类别分类问题,其中每个样本都属于三个可能的类别之一。
三、模型构建
数据集准备
import pandas as pd
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 读取数据
df = pd.read_csv('iris.csv') # 假设数据集保存在当前目录下的iris.csv文件中# 数据预处理
x = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
X = df[x]
y = df['classification']
X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2, random_state=1) # 划分训练集和测试集# 训练模型
model = SVC(gamma='auto')
model.fit(X_train, Y_train) # 训练模型
predictions = model.predict(X_test) # 预测测试集结果# 评估模型
accuracy = accuracy_score(Y_test, predictions) # 计算准确率
print(f'模型准确率为: {accuracy:.2f}') # 输出准确率