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

项目目标:

使用机器学习算法(如 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. 总结

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

相关推荐
极新21 分钟前
极新携手火山引擎,共探AI时代生态共建的破局点与增长引擎
人工智能·火山引擎
是麟渊36 分钟前
【大模型面试每日一题】Day 17:解释MoE(Mixture of Experts)架构如何实现模型稀疏性,并分析其训练难点
人工智能·自然语言处理·面试·职场和发展·架构
Poseidon、1 小时前
2025年5月AI科技领域周报(5.5-5.11):AGI研究进入关键验证期 具身智能开启物理世界交互新范式
人工智能·agi
编程有点难1 小时前
Python训练打卡Day22
开发语言·python·机器学习
天机️灵韵1 小时前
字节开源FlowGram与n8n 技术选型
人工智能·python·开源项目
jixunwulian1 小时前
AI边缘网关_5G/4G边缘计算网关厂家_计讯物联
人工智能·5g·边缘计算
boooo_hhh2 小时前
第28周——InceptionV1实现猴痘识别
python·深度学习·机器学习
腾讯云音视频2 小时前
AI实时对话的通信基础,WebRTC技术综合指南
人工智能·webrtc
暴龙胡乱写博客2 小时前
机器学习 --- 模型选择与调优
人工智能·机器学习
白熊1882 小时前
【计算机视觉】OpenCV实战项目:基于OpenCV与face_recognition的实时人脸识别系统深度解析
人工智能·opencv·计算机视觉