【100天精通Python】Day75:Python机器学习-第一个机器学习小项目_鸾尾花分类项目(上)

目录

1 机器学习中的Helloworld _鸾尾花分类项目

2 导入项目所需类库和鸾尾花数据集

2.1 导入类库

2.2 scikit-learn 库介绍 

(1)主要特点:

(2)常见的子模块:

3 导入鸾尾花数据集

3.1 概述数据

3.2 数据维度

3.3 查看数据自身

3.4 统计描述数据

3.5 数据分类分布

4 数据可视化

4.1 单变量图表

4.2 多变量图表


1 机器学习中的Helloworld _鸾尾花分类项目

         鸢尾花分类是机器学习领域中的一个经典示例,也是一个适用于入门级学习者的 "Hello World" 项目。这个项目使用鸢尾花数据集,其中包含了三个不同种类的鸢尾花:Setosa、Versicolor 和 Virginica。这三个亚属分别属于鸢尾属(Iris)中的不同物种。

2 导入项目所需类库和鸾尾花数据集

2.1 导入类库

# 导入鸢尾花数据集
from sklearn import datasets

# 导入数据处理和分割工具
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, confusion_matrix

# 导入可视化工具
import matplotlib.pyplot as plt
import seaborn as sns

这段代码导入了以下类库和模块:

  • datasets:从 scikit-learn 中导入数据集。
  • train_test_split:用于将数据集分割成训练集和测试集的模块。
  • StandardScaler:用于数据标准化的模块,对特征进行缩放。
  • KNeighborsClassifier:K近邻分类器,用于鸢尾花分类任务。
  • accuracy_scoreclassification_reportconfusion_matrix:用于评估分类器性能的模块。
  • matplotlib.pyplotseaborn:用于可视化数据和评估结果的模块。

请确保在运行这段代码之前已经安装了这些库,可以使用以下命令安装:

pip install scikit-learn matplotlib seaborn

导入这些类库后,你就可以在鸢尾花分类项目中使用它们进行数据处理、建模和评估。

2.2 scikit-learn 库介绍 

   scikit-learn 是一个用于机器学习的 Python 库,提供了丰富的工具和模型,用于数据挖掘和数据分析。它建立在 NumPy、SciPy 和 Matplotlib 基础之上,是机器学习领域中最受欢迎的库之一。

(1)主要特点:

  1. 简单而高效: scikit-learn 提供了简单且一致的接口,易于学习和使用。它支持多种机器学习任务,包括分类、回归、聚类、降维等。

  2. 丰富的文档: 该库具有详细的文档,包括用户指南、教程和示例,使用户能够更好地理解和使用不同的算法和工具。

  3. 广泛的算法: scikit-learn 包含了许多经典和先进的机器学习算法,如支持向量机(SVM)、随机森林、K均值聚类等。

  4. 数据预处理: 提供了丰富的数据预处理工具,包括数据标准化、特征选择、缺失值处理等。

  5. 模型评估: 支持模型性能评估的工具,包括交叉验证、网格搜索调参、性能度量等。

  6. 可扩展性: 允许用户通过创建自定义转换器和评估器来扩展功能,也支持集成其他库。

(2)常见的子模块:

  • datasets 模块: 包含一些常用的数据集,如鸢尾花数据集、手写数字数据集等。

  • model_selection 模块: 提供了用于交叉验证、超参数调优等的工具。

  • preprocessing 模块: 包含数据预处理的工具,如标准化、缩放、编码等。

  • metrics 模块: 包含模型评估的指标,如准确率、精确度、召回率等。

  • ensemble 模块: 包含集成学习方法,如随机森林、梯度提升树等。

  • neighbors 模块: 包含近邻算法,如 K 近邻分类器。

  • svm 模块: 包含支持向量机算法。

  • cluster 模块: 包含聚类算法,如 K 均值聚类、层次聚类等。

  • decomposition 模块: 包含降维算法,如主成分分析(PCA)等。

3 导入鸾尾花数据集

3.1 概述数据

        鸢尾花数据集是由统计学家和生物学家Ronald A. Fisher于1936年创建的,用于展示多变量统计方法。该数据集包含了三个不同种类的鸢尾花(Setosa、Versicolor 和 Virginica)的测量数据。

导入数据集

from sklearn import datasets

# 导入鸢尾花数据集
iris = datasets.load_iris()

# 获取特征数据
X = iris.data

# 获取目标标签
y = iris.target

你可以在 UCI Machine Learning Repository 网站上找到鸢尾花数据集的信息和下载链接:Iris Data Seticon-default.png?t=N7T8https://archive.ics.uci.edu/ml/datasets/iris然后,你可以下载数据集并使用适当的工具进行导入和处理。

3.2 数据维度

查看数据维度

from sklearn import datasets
import pandas as pd

# 导入鸢尾花数据集
iris = datasets.load_iris()

# 获取特征数据
X = iris.data

# 获取目标标签
y = iris.target

# 创建数据框
df = pd.DataFrame(data=X, columns=iris.feature_names)
df['target'] = y

# 查看数据集的维度
print(f"数据集维度:{df.shape}")

 

数据集的特征包括:

  • 萼片长度(Sepal Length)
  • 萼片宽度(Sepal Width)
  • 花瓣长度(Petal Length)
  • 花瓣宽度(Petal Width)

每个特征都以厘米为单位进行测量。

3.3 查看数据自身

首先,让我们看一下数据集的一些样本和它们的标签:

from sklearn import datasets
import pandas as pd

iris = datasets.load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['target'] = iris.target

# 打印数据集的前几行
print(df.head())

输出: 

3.4 统计描述数据

我们可以使用 pandas 库的 describe() 方法获取关于数据的统计描述信息:

from sklearn import datasets
import pandas as pd

iris = datasets.load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['target'] = iris.target

# 打印数据集的前几行
print(df.head())
# 统计描述
print(df.describe())

输出: 

3.5 数据分类分布

查看鸢尾花数据集中每个类别的分布:

from sklearn import datasets
import pandas as pd

import matplotlib.pyplot as plt
import seaborn as sns

iris = datasets.load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['target'] = iris.target

# # 打印数据集的前几行
# print(df.head())
# # 统计描述
# print(df.describe())

# 绘制数据集中每个类别的计数分布
sns.countplot(x='target', data=df)
plt.title('Class Distribution in Iris Dataset')
plt.show()

 

以上步骤可以让你更好地了解鸢尾花数据集,包括特征的维度、样本的分布情况等。这些信息对于进行机器学习任务之前的数据探索和理解非常重要。

4 数据可视化

        通过对数据集的审查,对数据有一个基本的了解。接下来将通过图标来进一步查看数据特征的分布情况和数据不同特征之间的相互关系。

        使用单变量图表可以更好地理解每一个特征属性。

        多变量图表用于理解不同特征属性之间的关系。

4.1 单变量图表

from sklearn import datasets
import pandas as pd

# 导入鸢尾花数据集
iris = datasets.load_iris()

# 获取特征数据
X = iris.data

# 获取目标标签
y = iris.target

# 创建数据框
df = pd.DataFrame(data=X, columns=iris.feature_names)
df['target'] = y

# 查看数据集的维度
print(f"数据集维度:{df.shape}")

import matplotlib.pyplot as plt
import seaborn as sns

# 设置图形样式
sns.set(style="whitegrid")

# 创建单变量图表
plt.figure(figsize=(12, 6))

# 绘制花萼长度的直方图
plt.subplot(2, 2, 1)
sns.histplot(df['sepal length (cm)'], kde=True, color='skyblue')
plt.title('Distribution of Sepal Length')

# 绘制花萼宽度的直方图
plt.subplot(2, 2, 2)
sns.histplot(df['sepal width (cm)'], kde=True, color='salmon')
plt.title('Distribution of Sepal Width')

# 绘制花瓣长度的直方图
plt.subplot(2, 2, 3)
sns.histplot(df['petal length (cm)'], kde=True, color='green')
plt.title('Distribution of Petal Length')

# 绘制花瓣宽度的直方图
plt.subplot(2, 2, 4)
sns.histplot(df['petal width (cm)'], kde=True, color='orange')
plt.title('Distribution of Petal Width')

plt.tight_layout()
plt.show()


4.2 多变量图表

from sklearn import datasets
import pandas as pd

# 导入鸢尾花数据集
iris = datasets.load_iris()

# 获取特征数据
X = iris.data

# 获取目标标签
y = iris.target

# 创建数据框
df = pd.DataFrame(data=X, columns=iris.feature_names)
df['target'] = y

# 查看数据集的维度
print(f"数据集维度:{df.shape}")

import matplotlib.pyplot as plt
import seaborn as sns



# 设置图形样式
sns.set(style="whitegrid")

# 创建多变量图表
plt.figure(figsize=(12, 6))

# 绘制花萼长度和宽度的散点图
plt.subplot(1, 2, 1)
sns.scatterplot(x='sepal length (cm)', y='sepal width (cm)', hue='target', data=df, palette='viridis')
plt.title('Scatter Plot of Sepal Length vs. Sepal Width')

# 绘制花瓣长度和宽度的散点图
plt.subplot(1, 2, 2)
sns.scatterplot(x='petal length (cm)', y='petal width (cm)', hue='target', data=df, palette='viridis')
plt.title('Scatter Plot of Petal Length vs. Petal Width')

plt.tight_layout()
plt.show()

        这些代码使用了 seaborn 库,通过直方图展示了花萼和花瓣的长度和宽度的分布情况,并使用散点图展示了花萼长度和宽度以及花瓣长度和宽度之间的关系。这些可视化图表可以帮助你更好地了解数据集的特征和类别之间的差异。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

matlab 最小二乘拟合空间直线(方法二)

目录 一、算法原理1、算法过程2、参考文献二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理

IT外包服务内容有哪些?

在信息技术迅猛发展的今天,越来越多的企业为了提高效率、降低成本以及更专注于核心业务,选择将信息技术工作外包给专业的IT服务公司。IT外包包含很多不同的服务,以下是对主要服务内容的简要概述。 1. 网络建设与维护 网络是现代企业信息系统…

jquery实现省市区三级联动

一、技术&#xff1a; 前端采用的是jsp页面 后端采用springmvcmybatismysql8 效果图 二、cascadeSelect.jsp页面 <% page contentType"text/html;charsetUTF-8" language"java" %> <%String path request.getContextPath();String basePath …

每日一练2023.12.5—— 一帮一【PTA】

题目链接&#xff1a; L1-030 一帮一 题目要求&#xff1a; “一帮一学习小组”是中小学中常见的学习组织方式&#xff0c;老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作&#xff0c;即在得到全班学生的排名后&…

西安安泰——ATA-1220E宽带放大器

ATA-1220E宽带放大器简介 ATA-1220E是一款可放大交直流信号的差分通道宽带放大器。其最大输出电压 60Vp-p(30Vp)&#xff0c;最大输出电流1Ap&#xff08;>50Hz&#xff09;。电压增益数控可调&#xff0c;一键保存设置&#xff0c;提供了方便简洁的操作选择&#xff0c;可…

华为无线配置模板 一

华为无线配置模板 一 拓扑图1.配置SwitchA和AC&#xff0c;使AP与AC之间能够传输CAPWAP报文2.配置AC作为DHCP服务器&#xff0c;为STA和AP分配IP地址3.配置AP上线4.配置WLAN业务参数5.验证配置结果 拓扑图 采用如下的思路配置小型网络的WLAN基本业务&#xff1a;1.配置AP、AC、…

阿里云账号注册完成实名认证免费领取云服务器4台

注册阿里云&#xff0c;免费领云服务器&#xff0c;每月280元额度&#xff0c;3个月试用时长&#xff0c;可快速搭建网站/小程序&#xff0c;部署开发环境&#xff0c;开发多种企业应用&#xff0c;共3步骤即可免费领取阿里云服务器&#xff0c;阿里云服务器网aliyunfuwuqi.com…

一键抠图1:Python实现人像抠图 (Portrait Matting)

一键抠图1&#xff1a;Python实现人像抠图 (Portrait Matting) 目录 一键抠图1&#xff1a;Python实现人像抠图 (Portrait Matting) 1. 项目介绍 2. 抠图算法 3. Matting数据集 4. MODNet模型 (1) 项目安装 (2) 数据集说明 (3) MODNet模型 5. Demo测试效果 6. 源码下载…

Windows循环检测,直到网络通/断后执行指定命令

前言 前几天&#xff0c;一个朋友让我帮他做个脚本或者批处理&#xff0c;要实现的功能很简单&#xff1a;开机时检测网络是否联通&#xff0c;如果联通了就执行一个指定的程序&#xff0c;然后脚本就可以退出了。 批处理的解决方法 手动操作时&#xff0c;我们通常使用ping…

(2)(2.4) TerraRanger Tower/Tower EVO(360度)

文章目录 前言 1 安装传感器并连接 2 通过地面站进行配置 3 参数说明 前言 TeraRanger Tower 可用于在 Loiter 和 AltHold 模式下进行目标规避。传感器的最大可用距离约为 4.5m。 TeraRanger Tower EVO 可用于在 Loiter 和 AltHold 模式下进行目标规避。传感器的最大可用…

电子编曲软件FL Studio2024汉化中文免费版下载

电子编曲需要什么软件&#xff1f;市面上的宿主软件都可以完成电子编曲的工作&#xff0c;主要适用电子音乐风格编曲的宿主软件有FL Studio、Ableton Live等。电子编曲需要什么基础&#xff1f;需要对于电子音乐足够熟悉、掌握基础乐理知识以及宿主软件的使用方法。 就我个人的…

TinyMPC - CMU (卡耐基梅隆大学)开源的机器人 MPC 控制器

系列文章目录 CasADi - 最优控制开源 Python/MATLAB 库 文章目录 系列文章目录前言一、机器人硬件对比1.1 Teensy 上的微控制器基准测试1.2 机器人硬件1.3 BibTeX 二、求解器三、功能&#xff08;预期&#xff09;3.1 高效3.2 鲁棒3.3 可嵌入式3.4 最小依赖性3.5 高效热启动3.…

Geoserver发布2000坐标系遇到的问题总结

在Geoserver上发布2000坐标系的服务时&#xff0c;要想正常发布服务&#xff0c;不仅仅是要涉及2000坐标系&#xff0c;还需要在发布的时候选择对坐标系。具体问题描述如下&#xff1a; 1.问题描述&#xff1a; 在发布好2000坐标系的服务后&#xff0c;在超图的平台加载服务时&…

回溯算法:复原IP地址 子集 子集II

93.复原IP地址 思路&#xff1a; 与分割回文串相似&#xff0c;复原ip地址是将给定字符串分割成点分十进制的四段&#xff0c;切割问题就可以使用回溯搜索法把所有可能性搜出来。回溯三部曲&#xff1a; 递归参数&#xff1a;除了传入的需要分割的字符串&#xff0c;仍然需要…

每天五分钟计算机视觉:VGG网络相对于AlexNet网络有哪些不同?

本文重点 在前面的课程中&#xff0c;我们已经学习了VGG网络模型&#xff0c;也学习了AlexNet网络模型&#xff0c;AlexNet模型先于VGG网络模型产生&#xff0c;所以VGG在一定程度上要优于AlexNet模型&#xff0c;二者来看一下&#xff0c;二者究竟有什么不同&#xff1f; 深度…

数据湖和中央数据仓库的设计

设计数据湖或中央数据仓库是许多大型组织的主要职能&#xff0c;这些组织每天处理数百万笔交易&#xff0c;并对这些交易进行进一步的报告、预测或机器学习项目分析。 为了将所有来自源系统&#xff08;我们称之为“上游”&#xff09;到其他业务应用&#xff08;所谓“下游”&…

基于ssm vue技术的品牌银饰售卖平台源码和论文737

摘 要 本论文主要是针对品牌银饰售卖而开发进行概述&#xff0c;主要包括对研究的背景和研究现状&#xff0c;以及研究目的等的阐述&#xff0c;也对该系统的各种功能要求&#xff0c;对系统结构&#xff0c;数据库的设计等进行讨论。随着科技与技术的发展&#xff0c;利用计…

【Intel/Altera】 全系列FPGA最新汇总说明,持续更新中

前言 2023年11月14日英特尔 FPGA中国技术日&#xff0c;Intel刚发布了新的FPGA系列&#xff0c;官网信息太多&#xff0c;我这里结合以前的信息&#xff0c;简单汇总更新一下&#xff0c;方便大家快速了解Intel/Altera FPGA家族。 目录 前言 Altera和Intel 型号汇总 1. Agi…

Pycharm的字体缩放设置

法1 法2 放大操作 increase 缩小操作 decrease 保存操作&#xff0c;点击OK结束

数学建模-基于机器学习的家政行业整体素质提升因素分析

基于机器学习的家政行业整体素质提升因素分析 整体求解过程概述(摘要) 家政服务业即为家庭提供多种类服务的专门行业&#xff0c;在第三产业中占有重要地位。但近年来&#xff0c;由于人工智能家居产业的发展与客户对家政从业者的要求水平不断提高&#xff0c;家政行业仍面对较…