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

项目目标:

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

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

相关推荐
lanyancloud_JX23 分钟前
公路工程项目管理软件选型指南
人工智能
柠檬味拥抱24 分钟前
基于Rokid CXR-M和CXR-S SDK构建简易翻译助手
人工智能
用户51914958484525 分钟前
在VS Code IDE中通过LocalStack集成加速无服务器测试
人工智能·aigc
FreeCode32 分钟前
智能体化系统(Agentic System)开发面临的挑战及应对
人工智能·agent
leafff1231 小时前
Stable Diffusion在进行AI 创作时对算力的要求
人工智能·stable diffusion
Juchecar1 小时前
AI大模型商业模式分析
人工智能
leafff1231 小时前
Stable Diffusion进行AIGC创作时的算力优化方案
人工智能·stable diffusion·aigc
FIN66681 小时前
昂瑞微:以射频“芯”火 点亮科技强国之路
前端·人工智能·科技·前端框架·智能
Python智慧行囊1 小时前
图像处理(三)--开运算与闭运算,梯度运算,礼帽与黑帽
人工智能·算法·计算机视觉
亚马逊云开发者1 小时前
Amazon Generative AI Use Cases:“开箱即用的企业级生成式AI应用平台”
人工智能