机器学习实战:鸢尾花分类
机器学习实战:鸢尾花分类
·
项目目标
使用经典的鸢尾花数据集(Iris Dataset),通过支持向量机(SVM)算法训练一个分类模型,能够根据花瓣和萼片的测量数据预测鸢尾花的种类。
环境准备
Python
# 需要安装的库(在终端运行)
pip install numpy pandas matplotlib scikit-learn
完整代码实现
# 1. 导入必要的库
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
import joblib # 用于模型保存
# 2. 加载数据集
iris = datasets.load_iris()
X = iris.data # 特征数据(萼片长宽,花瓣长宽)
y = iris.target # 目标值(0: Setosa, 1: Versicolour, 2: Virginica)
# 3. 数据预处理
# 标准化特征值(使数据均值为0,方差为1)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 4. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X_scaled, y, test_size=0.3, random_state=42)
# 5. 创建并训练模型
model = SVC(kernel='linear', C=1.0) # 使用线性核的SVM
model.fit(X_train, y_train)
# 6. 预测测试集
y_pred = model.predict(X_test)
# 7. 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2%}")
# 8. 保存模型和标准化器(可选)
joblib.dump(model, 'iris_classifier.pkl')
joblib.dump(scaler, 'iris_scaler.pkl')
分步骤解析
1. 数据准备
- 使用Scikit-learn内置的鸢尾花数据集
- 包含150个样本,4个特征(单位:厘米):
- 萼片长度
- 萼片宽度
- 花瓣长度
- 花瓣宽度
- 目标类别(3种鸢尾花):
- 0: Setosa
- 1: Versicolour
- 2: Virginica
2. 数据预处理
- 标准化:将特征数据缩放到均值为0,方差为1的分布,消除不同量纲的影响
- 数据集划分:70%训练集,30%测试集
3. 模型选择与训练
- 使用支持向量机(SVM)分类器
- 选择线性核函数(适合线性可分数据)
- 正则化参数C=1.0(平衡间隔大小和分类正确率)
4. 模型评估
- 使用准确率(Accuracy)作为评估指标
- 典型结果应达到95%以上的准确率
5. 模型部署(可选)
- 使用joblib保存训练好的模型和标准化器
- 后续可以通过加载模型进行新数据预测
扩展应用示例
加载保存的模型进行预测:
# 加载模型和标准化器
loaded_model = joblib.load('iris_classifier.pkl')
loaded_scaler = joblib.load('iris_scaler.pkl')
# 新数据示例(需要是二维数组)
new_data = [[5.1, 3.5, 1.4, 0.2]] # 萼片长宽,花瓣长宽
# 预处理新数据
new_data_scaled = loaded_scaler.transform(new_data)
# 进行预测
prediction = loaded_model.predict(new_data_scaled)
print(f"预测类别: {iris.target_names[prediction]}")
项目扩展方向
- 尝试其他分类算法(如KNN、决策树、随机森林等)
- 添加数据可视化(使用Matplotlib展示特征分布)
- 实现超参数调优(使用GridSearchCV)
- 添加交叉验证功能
- 部署为简单的Web应用(使用Flask框架)
这个项目涵盖了机器学习的基本流程:数据加载 → 预处理 → 模型训练 → 评估 → 部署,非常适合机器学习入门实践。可以通过更换数据集(如手写数字识别、房价预测等)应用于其他分类/回归任务。
关注博主,有些文章只有粉丝可见!
更多推荐



所有评论(0)