机器学习小项目之鸢尾花分类

项目目标:

使用机器学习算法(如 K-近邻算法)来对鸢尾花数据集进行分类。

1. 准备工作

首先,我们需要安装一些常用的机器学习库,如 scikit-learnpandas

复制代码
pip install scikit-learn pandas matplotlib

2. 导入必要的库

复制代码
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

3. 加载数据集

scikit-learn 提供了内置的鸢尾花数据集,我们可以直接导入。

复制代码
from sklearn.datasets import load_iris

# 加载鸢尾花数据集
iris = load_iris()

# 转换为DataFrame便于查看
data = pd.DataFrame(data=iris.data, columns=iris.feature_names)
data['species'] = iris.target

print(data.head())

4. 数据预处理

在这一步,我们将数据拆分为特征(X)和标签(y),并进行训练集和测试集的划分。

复制代码
X = iris.data  # 特征数据
y = iris.target  # 目标标签

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

5. 特征缩放

KNN算法对数据的尺度很敏感,所以我们需要对特征进行标准化。

复制代码
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

6. 训练模型

现在我们可以使用 K-近邻算法来训练模型了。

复制代码
# 使用 KNN 算法
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train_scaled, y_train)

7. 预测与评估

训练完成后,我们可以用测试集进行预测,并评估模型的准确率。

复制代码
# 进行预测
y_pred = knn.predict(X_test_scaled)

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

8. 可视化

我们可以通过可视化来进一步理解模型的表现。

复制代码
# 显示预测结果
plt.scatter(y_test, y_pred, color='blue')
plt.plot([0, 2], [0, 2], 'r--')
plt.xlabel('真实值')
plt.ylabel('预测值')
plt.title('KNN预测结果')
plt.show()

9. 完整代码示例

复制代码
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 标准化特征数据
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 训练 KNN 模型
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train_scaled, y_train)

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

# 评估模型的准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的准确率: {accuracy:.2f}")

# 可视化预测结果
plt.scatter(y_test, y_pred, color='blue')
plt.plot([0, 2], [0, 2], 'r--')
plt.xlabel('真实值')
plt.ylabel('预测值')
plt.title('KNN预测结果')
plt.show()

10. 总结

这个小项目展示了机器学习中的基础步骤:数据加载、预处理、模型训练、评估以及可视化。你可以通过调整模型的参数,尝试其他算法(如决策树、支持向量机等),或者进行更复杂的数据集分析来进一步深入学习机器学习。

相关推荐
望十五江洋23 分钟前
泊松分布的参数可加性
线性代数·机器学习·概率论
小雨青年35 分钟前
Cursor 项目实战:AI播客策划助手(二)—— 多轮交互打磨播客文案的技术实现与实践
前端·人工智能·状态模式·交互
西西弗Sisyphus40 分钟前
线性代数 - 初等矩阵
人工智能·线性代数·机器学习
weixin_4296302644 分钟前
第6章 支持向量机
算法·机器学习·支持向量机
王哈哈^_^1 小时前
【数据集】【YOLO】【目标检测】共享单车数据集,共享单车识别数据集 3596 张,YOLO自行车识别算法实战训推教程。
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
仙人掌_lz1 小时前
Multi-Agent的编排模式总结/ Parlant和LangGraph差异对比
人工智能·ai·llm·原型模式·rag·智能体
背包客研究1 小时前
如何在机器学习中使用特征提取对表格数据进行处理
人工智能·机器学习
门框研究员1 小时前
AI基础设施的临界点:算力、资本与政策的三重博弈
人工智能
罗西的思考2 小时前
【Agent】 ACE(Agentic Context Engineering)源码阅读笔记 ---(2)--- 训练
人工智能
AKAMAI2 小时前
AI推理硬件选型指南:CPU 与 GPU 的抉择
人工智能·云原生·云计算