使用scikit-learn中的KNN包实现对鸢尾花数据集的预测

1. 导入必要的库

首先,需要导入所需的库:

python 复制代码
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report
复制代码

2. 加载鸢尾花数据集

scikit-learn提供了方便的函数来加载鸢尾花数据集:

python 复制代码
# 加载鸢尾花数据集
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.2, random_state=42)

3. 数据预处理

对数据进行标准化处理,以提高KNN算法的性能:

python 复制代码
# 标准化数据
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

4. 训练KNN模型

使用KNeighborsClassifier来训练KNN模型:

python 复制代码
# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

5. 进行预测并评估模型

使用测试集进行预测,并评估模型的性能:

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

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')

# 打印分类报告
print(classification_report(y_test, y_pred, target_names=iris.target_names))

6. 使用自定义数据集

如果有一个自定义的数据集,可以按照以下步骤进行操作。假设有一个CSV文件custom_dataset.csv,其中包含特征和标签。

python 复制代码
# 加载自定义数据集
custom_data = pd.read_csv('custom_dataset.csv')

# 假设特征列为前n-1列,标签列为最后一列
X_custom = custom_data.iloc[:, :-1].values
y_custom = custom_data.iloc[:, -1].values

# 将数据集分为训练集和测试集
X_custom_train, X_custom_test, y_custom_train, y_custom_test = train_test_split(X_custom, y_custom, test_size=0.2, random_state=42)

# 标准化数据
scaler_custom = StandardScaler()
X_custom_train = scaler_custom.fit_transform(X_custom_train)
X_custom_test = scaler_custom.transform(X_custom_test)

# 创建KNN分类器并训练
knn_custom = KNeighborsClassifier(n_neighbors=3)
knn_custom.fit(X_custom_train, y_custom_train)

# 进行预测
y_custom_pred = knn_custom.predict(X_custom_test)

# 计算准确率
accuracy_custom = accuracy_score(y_custom_test, y_custom_pred)
print(f'Custom Dataset Accuracy: {accuracy_custom:.2f}')

# 如果有标签名称,可以打印分类报告
# print(classification_report(y_custom_test, y_custom_pred, target_names=[...]))
相关推荐
宝贝儿好33 分钟前
【强化学习实战】第十一章:Gymnasium库的介绍和使用(1)、出租车游戏代码详解(Sarsa & Q learning)
人工智能·python·深度学习·算法·游戏·机器学习
绝世这天下3 小时前
【在 DGX Spark 上运行 vLLM-Omni 用于 Qwen3-TTS(语音设计,语音克隆)】
人工智能
陈大鱼头3 小时前
[译]费尽心思来保障 OpenClaw ?那跟直接用 GPT 有什么区别?
人工智能
Fleshy数模4 小时前
玩转OpenCV:视频椒盐噪声处理与图像形态学操作实战
人工智能·opencv·音视频
幂律智能4 小时前
Agent × 流程引擎融合架构:从静态流程到智能流程编排
人工智能·架构·agent
无垠的广袤4 小时前
ChatECNU 大语言模型与 PicoClaw 部署
人工智能·语言模型·自然语言处理·嵌入式·树莓派
爱淋雨的男人4 小时前
自动驾驶感知相关算法
人工智能·算法·自动驾驶
互联网科技看点4 小时前
AI算力爆发叠加数据资产风口,铂拉锐科技布局去中心化数字生态
人工智能·科技·去中心化
如若1234 小时前
flash-attn 安装失败?从报错到成功的完整排雷指南(CUDA 12.8 + PyTorch 2.7)
人工智能·pytorch·python
七牛云行业应用4 小时前
GPT-5.4能力前瞻:解析原生电脑操控(Computer Use)原理与Agent架构构建
人工智能·chatgpt·大语言模型·ai agent·mcp协议