对鸢尾花进行分类预测-----pycharm

news2024/9/24 1:20:14

项目说明

#项目:  对鸢尾花进行分类预测
#实例数量150个(3类各50个)
#属性数量:4(数值型,数值型,帮助预测的属性和类)
#特征:花萼长度,花萼宽度,花瓣长度,花瓣宽度  单位:厘米
#类别:山鸢尾,变色鸢尾,维吉尼亚鸢尾

导包

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.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeClassifier,export_graphviz

用KNN算法对鸢尾花进行分类

def knn_iris():
    """
    用KNN算法对鸢尾花进行分类
    :return:
    """
    """
        1.获取数据
    """
    iris = load_iris()

    """
        2.数据集划分
    """
    # train_test_split(要分割的数据集【可以是一个或多个数组,每个数组代表一个特征或标签】,测试集的大小,训练集的大小,随机数种子【用于控制数据的随机分割】,是否在分割数据前进行洗牌)
    # 把iris.data和iris.target按照相同的随机种子6进行随机分割,生成训练集和测试集
    x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=6)      # 此处数据集划分不一样对结果影响不一样,划分为6时,准确率约为0.92
    #x_train【训练模型的鸢尾花数据集的特征】,x_test【测试模型的鸢尾花数据集的特征】,y_train【训练集标签】,y_test【测试集标签】
    #X_train 中的数据是来自原始 X 数据集的随机选择的 6 行数据,而 X_test 中的数据则是剩下的 2 行数据。
    # 这种分割方法确保了训练集和测试集的数据是随机且保持了原始数据的分布特性,从而可以用来训练模型和评估模型的泛化能力

    """ 
        3.特征工程:无量纲化(标准化)
    """
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)     #用训练集特征中的平均值和标准差对测试集数据进行标准化
    #print("无量纲化后的x_train:\n",x_train)
    #print("无量纲化后的x_test:\n",x_test)

    """
        4.训练    KNN预估
    """
    estimator = KNeighborsClassifier(n_neighbors=3)
    estimator.fit(x_train,y_train)

    """
        5.模型评估
    """
    #方法1:直接比对真实值和预估值
    y_predict = estimator.predict(x_test)
    print("y_predice:\n",y_predict)
    print("y_test:\n",y_test)
    print("直接比对真实值和预估值是否一样:\n",y_test == y_predict)
    #方法2:计算准确率
    score = estimator.score(x_test,y_test)
    print("准确率为:\n",score)

    return None

if __name__ == "__main__":
	  # 用KNN算法对鸢尾花进行分类
	  knn_iris()

效果:
在这里插入图片描述

KNN算法加入网格搜索交叉验证

def knn_iris_gscs():
    """
    用KNN算法对鸢尾花进行分类,添加网格搜索交叉验证
    :return:
    """
    """
        1.获取数据
    """
    iris = load_iris()

    """
        2.数据集划分
    """
    x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=6)

    """ 
            3.特征工程:无量纲化(标准化)
    """
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)  # 用训练集特征中的平均值和标准差对测试集数据进行标准化
    # print("无量纲化后的x_train:\n", x_train)
    # print("无量纲化后的x_test:\n", x_test)

    """
        4.训练    KNN预估
    """
    estimator = KNeighborsClassifier(n_neighbors=3)

    """
        5.网格搜索交叉验证
    """
    #参数准备
    param_dict = {"n_neighbors":[1,3,5,7,8,11]}
    estimator = GridSearchCV(estimator,param_grid=param_dict,cv=10)
    estimator.fit(x_train,y_train)

    """
        6.模型评估
    """
    # 方法1:直接比对真实值和预估值
    y_predict = estimator.predict(x_test)
    print("y_predice:\n", y_predict)
    print("y_test:\n", y_test)
    print("直接比对真实值和预估值是否一样:\n", y_test == y_predict)
    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)

    print("最佳参数:\n",estimator.best_params_)
    print("最佳结果:\n",estimator.best_score_)
    print("最佳估值器:\n",estimator.best_estimator_)
    print("交叉验证结果:\n",estimator.cv_results_)

    return None
if __name__ == "__main__":
	 # 用KNN算法对鸢尾花进行分类,添加网格搜索和交叉验证
	 knn_iris_gscs()

效果:
在这里插入图片描述

决策树算法对鸢尾花进行分类

def decision_iris():
    """
    用决策树对鸢尾花进行分类
    :return:
    """
    """
        1.获取数据
    """
    iris = load_iris()

    """
        2.划分数据集
    """
    x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=6)

    """
        3.决策树预估器
    """
    estimator = DecisionTreeClassifier(criterion="entropy")  #按entropy信息增益进行分类
    estimator.fit(x_train,y_train)

    """
        4.模型评估
    """
    # 方法1:直接比对真实值和预估值
    y_predict = estimator.predict(x_test)
    print("y_predice:\n", y_predict)
    print("y_test:\n", y_test)
    print("直接比对真实值和预估值是否一样:\n", y_test == y_predict)
    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)

    return None
  if __name__ == "__main__":
   #用决策树对鸢尾花进行分类
   decision_iris()


效果
 决策树算法对鸢尾花进行分类结果

决策树对鸢尾花分类可视化

先保存树的结构到dot文件
在这里插入图片描述
方法def decision_iris()末尾加入代码运行

 #可视化决策树
export_graphviz(estimator,out_file="iris.tree.dot")

在这里插入图片描述

然后可以在线可视化dot文件或者下载可视化工具可视化决策树

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1420916.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#需要学到什么程度才能做MES系统开发工作?

C#需要学到什么程度才能做MES系统开发工作? 在开始前我分享下我的经历,刚入行时遇到一个好公司和师父,给了我机会,两年时间从3k薪资涨到18k的, 我师父给了一些C#学习方法和资料,让我不断提升自己&#xff…

读书人必须知道的9个搜书引擎

各位小伙伴大家好,众所周知,现在找资源的难度要比以前高的多,各种网站封的封删的删,但大家对书籍资源的需求却越来越大。那今天我镜像哥就决定整一期电子书资源狠活儿。 这些资源都是我辛苦收集,并逐一验证筛选出来的的…

1分钟内生成美妙歌曲:Suno AI的音乐魔法

1分钟内生成美妙歌曲:Suno AI的音乐魔法 Suno AI是一款人工智能工具,让创作者能够生成超现实的音乐、语音和音效,可以根据用户的指令生成音乐、语音和其他音频内容。它可以帮助创作者快速生成高质量的音乐作品,并且可以根据不同的…

全国网络安全行业职业技能大赛WP

word_sercet 文档被加密 查看图片的属性 在备注可以看到解压密码 解密成功 在选项里面把隐藏的文本显示出来 可以看到ffag easy_encode 得到一个bmp二维码 使用qr research 得到的密文直接放瑞士军刀 base32解码base64解码hex解码 dir_pcap 直接搜索flag 发现flag…

【lesson2】定长内存池的实现

文章目录 介绍定长内存池的设计定长内存池的实现需要成员变量需要的成员函数定长内存池结构定长内存池Delete(释放空间)的实现定长内存池New(申请空间)的实现 定长内存池的实现完整版 介绍 作为程序员(C/C)我们知道申请内存使用的…

C++ Qt开发:运用QJSON模块解析数据

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QJson组件的实现对JSON文本的灵活解析…

vue 使用echarts-gl实现3d旋转地图

之前也有使用过echarts开发项目中涉及到的地图功能,当时使用geo来实现地图轮廓,看上去有种3d的感觉。最近闲来无事看了一份可视化大屏的UI设计图,感觉3d旋转地图挺好玩的,今天就来尝试实现下。 首先安装下echarts和echarts-gl依赖…

WebGL开发艺术和创意项目

WebGL提供了强大的图形渲染能力,可以用于开发各种艺术和创意项目。以下是一些使用WebGL开发艺术和创意项目的示例,希望对大家有所帮助。 1.交互式艺术品: 利用WebGL,可以创建具有交互性的艺术品。用户可以与艺术品进行互动、探索和…

正则表达式 文本三剑客

一 正则表达式: 由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用…

openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错

文章目录 openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错210.1 谓词下推引起的查询报错210.1.1 问题现象210.1.2 原因分析210.1.3 处理办法 openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错 210.…

这些好用小众的知识库软件,快收藏起来

现代企业和团队日益重视知识管理,寻找能提供精准、高效、简便的知识库应用变得尤其重要。而今天,将带给大家三款小众却倍受好评的知识库软件,如果你是寻找有效的信息管理工具的话,那么以下就是你不能错过的秘密武器了,…

由于系统注册表文件丢失或损坏,因此Windows无法加载,如何解决?

问题描述:windows黑屏未能启动,提示由于系统注册表文件丢失或损坏,因此windows无法加载,错误代码:0xc000014c。出现这种问题的原因大多是因为电脑在使用过程中硬件松动,导致出现这种问题。 解决办法: 1. 如…

尝试搭建域

使用window 7 作为dmz 主机 server_2008 作为 预控 前提两台主机都在同一个LAN 下(设置一个LAN 区域),同样防火墙关闭状态 首先搞定server 2008 中的域 1. 在计算机属性中选择更改设置中将主机名修改一下: 2. 在server 2008 中…

Java 面向对象进阶 01(黑马)

static案例代码: 代码: public class Student {private String gender;private String name;private int age;public static String teacherName ;public Student() {}public Student(String gender, String name, int age) {this.gender gender;this.…

四、ES集群安全策略设置 X-pack

本文主要是结合ES集群搭建时使用,并且适用于ES7.x以上版本 背景及安全策略方案对比 ES 7.x以下版本默认几乎没有任何安全策略,如果集群IP、端口被暴露,在可访问的情况下任何用户都可以对索引进行管理以及数据的增删改查等,基于此需…

故障脚本的重要作用:预防、诊断与恢复

故障脚本是在信息技术和计算机领域中广泛使用的一种自动化工具,它们的主要目的是预测、诊断和修复系统或软件中的故障。这些脚本在现代技术环境中扮演着至关重要的角色,本文将介绍故障脚本的主要作用。 一、预防性作用 监控和预警 故障脚本可以用于监控系…

互联网加竞赛 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…

idea创建golang项目

目录 1、设置环境 2、创建项目 3、设置项目配置 4、初始化项目 5、安装本项目的外部依赖包 6、运行项目 7、访问页面查看结果 1、设置环境 1 启用 Go Modules 功能go env -w GO111MODULEon 2. 阿里云go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct上述命…

string的基本概念及常用接口

string的基本概念 本质: string时C风格的字符串,而string本质上是一个类。 string和char*的区别: char*是一个字符指针。而string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。 特…

通过docker构建基于LNMP的WordPress项目

计划通过自定义网络模式,创建一个172.18.0.0/16网段 nginx:172.18.0.2:80 php:172.18.0.3:9000 mysql:172.18.0.4:3306 创建nginx的镜像 准备好nginx的安装包 准备nginx的网页目录和wordpress网站目录以及nginx.conf文件 编…