import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.metrics import classification_report,confusion_matrix # 混淆矩阵和准确率,召回率,F1评分
from sklearn.model_selection import train_test_split # 分割
from sklearn.preprocessing import StandardScaler # 梯度下降法收敛数据
from sklearn.neighbors import KNeighborsClassifier # knn分类器
# 装载数据集
url="iris.csv"
names =['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']
dataset=pd.read_csv(url, names=names)
# pandas的纵向切割,将数据集分割成属性(X)和标签(Y)
X=dataset.iloc[:,:-1].values
y=dataset.iloc[:,4].values
# 划分数据集和测试集,70%训练,30%测试
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.30)
# 梯度下降法缩放数据
scaler=StandardScaler()
scaler.fit(X_train)
X_train=scaler.transform(X_train)
X_test=scaler.transform(X_test)
# 训练模型
classifier=KNeighborsClassifier(n_neighbors=6) # k取6效果感觉比书上取5效果更好
classifier.fit(X_train,y_train)
# 在测试集上进行预测
y_pred=classifier.predict(X_test)
# 混淆矩阵 准确率 召回率 F1评分 评估模型优劣
print(confusion_matrix(y_test,y_pred))
print(classification_report(y_test,y_pred))
# 计算k取1到40模型的分类误差率
error=[]
for i in range(1,40):
knn=KNeighborsClassifier(n_neighbors=i)
knn.fit(X_train,y_train)
pred_i=knn.predict(X_test)
error.append(np.mean(pred_i != y_test))
# 绘图
plt.figure(figsize=(12,6))
plt.plot(range(1,40),error,color='red',linestyle='dashed',marker='o',markerfacecolor='blue',markersize=10)
plt.title('Error Rate K Value')
plt.xlabel('K Value')
plt.ylabel('Mean Error')
plt.show()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
在机器学习领域中,“鸢尾花”是指一个经典的多类分类问题的数据集,称为“Iris dataset”或“安德森鸢尾花卉数据集”。该数据集最早由英国统计学家兼生物学家罗纳德·费雪(Ronald Fisher)于1936年收集并整理发表,包含了150个样本观测值,对应三种不同类型的鸢尾花(Setosa、Versicolor、Virginica),每种类型各50个样本。 每个样本有四个特征: 萼片长度(Sepal Length) 萼片宽度(Sepal Width) 花瓣长度(Petal Length) 花瓣宽度(Petal Width) 这些特征都是连续数值型变量,而目标变量则是鸢尾花所属的类别。鸢尾花数据集常被用作新手入门机器学习算法时的第一个实践项目,因为它数据量适中且易于理解,同时适用于多种监督学习算法,如逻辑回归、K近邻(KNN)、支持向量机(SVM)、决策树以及各种集成方法等。
资源推荐
资源详情
资源评论
收起资源包目录
基于鸢尾花数据集的sklearn KNN分类.zip (6个子文件)
content
dating_2.csv 38KB
FlowersClassify_2.py 768B
iris交叉验证.py 784B
iris.csv 5KB
FlowersClassify.py 2KB
dating.csv 34KB
共 6 条
- 1
资源评论
生瓜蛋子
- 粉丝: 3562
- 资源: 2900
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功