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

2023-12-06 10:01

本文主要是介绍【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 pdiris = 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 pdiris = 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 pdimport matplotlib.pyplot as plt
import seaborn as snsiris = 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 库,通过直方图展示了花萼和花瓣的长度和宽度的分布情况,并使用散点图展示了花萼长度和宽度以及花瓣长度和宽度之间的关系。这些可视化图表可以帮助你更好地了解数据集的特征和类别之间的差异。 

这篇关于【100天精通Python】Day75:Python机器学习-第一个机器学习小项目_鸾尾花分类项目(上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/461434

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。