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

项目目标:

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

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

相关推荐
西格电力科技11 小时前
分布式光伏 “四可” 装置:“发电孤岛” 到 “电网友好” 的关键跨越
分布式·科技·机器学习·能源
kk哥889912 小时前
从数据分析到深度学习!Anaconda3 2025 全流程开发平台,安装步骤
人工智能
陈天伟教授13 小时前
基于学习的人工智能(3)机器学习基本框架
人工智能·学习·机器学习·知识图谱
搞科研的小刘选手14 小时前
【厦门大学主办】第六届计算机科学与管理科技国际学术会议(ICCSMT 2025)
人工智能·科技·计算机网络·计算机·云计算·学术会议
fanstuck14 小时前
深入解析 PyPTO Operator:以 DeepSeek‑V3.2‑Exp 模型为例的实战指南
人工智能·语言模型·aigc·gpu算力
萤丰信息14 小时前
智慧园区能源革命:从“耗电黑洞”到零碳样本的蜕变
java·大数据·人工智能·科技·安全·能源·智慧园区
世洋Blog14 小时前
更好的利用ChatGPT进行项目的开发
人工智能·unity·chatgpt
serve the people18 小时前
机器学习(ML)和人工智能(AI)技术在WAF安防中的应用
人工智能·机器学习
0***K89218 小时前
前端机器学习
人工智能·机器学习