sklearn学习之用matplotlib绘制鸢尾花(Iris)数据集的两个特征:花萼的长度和宽度
2023-12-31 04:56:08
直接上代码
sklearn Iris 数据集是机器学习和数据科学中经常使用的一个标准数据集,用于分类任务
from sklearn import datasets
# 加载 Iris 数据集
iris = datasets.load_iris()
# 查看数据集中的特征名称
print("特征名称:", iris.feature_names)
# 查看数据集中的目标类别(鸢尾花的种类)
print("目标类别:", iris.target_names)
# 查看数据集中的前 5 个样本
print("前 5 个样本:\n", iris.data[:5])
# 查看这 5 个样本对应的类别标签
print("对应的类别标签:", iris.target[:5])
描制
# 导入所需的库和模块
from collections import Counter, defaultdict # 用于计数和默认字典
import matplotlib # 绘图库
import matplotlib.pyplot as plt # 绘图库的pyplot模块,用于绘图
import numpy as np # 用于数值计算的库
from sklearn import datasets # 从scikit-learn库中导入数据集模块
# 加载鸢尾花数据集
iris_datas = datasets.load_iris() # 加载数据集,并存储在iris_datas变量中 Iris 数据集是机器学习和数据科学中经常使用的一个标准数据集,用于分类任务
# 设置matplotlib的字体和符号,以便正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei'] # 设置字体为SimHei,用于正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 设置正常显示负号
# 设置点的不同形状,不同形状默认颜色不同,也可自定义
style_list = ['o', '^', 's']
# 从数据集中提取特征和标签
data = iris_datas.data # 提取特征数据
labels = iris_datas.target_names # 提取标签名称
# 使用defaultdict创建一个字典,用于按标签分类存储数据
cc = defaultdict(list)
for i, d in enumerate(data):
cc[labels[int(i/50)]].append(d) # 将每个数据点根据其标签添加到相应的列表中
# 创建空列表,用于存储绘制的图形和类别名称
p_list = [] # 存储绘制的图形
c_list = [] # 存储类别名称
# 循环遍历,分别绘制花萼和花瓣的长度和宽度关系图
for each in [0, 2]: # each为0时绘制花萼,为2时绘制花瓣
for i, (c, ds) in enumerate(cc.items()): # 遍历每个类别及其对应的数据点
draw_data = np.array(ds) # 将数据转换为numpy数组,方便后续处理
# 绘制散点图,x轴为长度,y轴为宽度,形状根据类别设置
p = plt.plot(draw_data[:, each], draw_data[:, each+1], style_list[i])
p_list.append(p) # 将绘制的图形添加到列表中
c_list.append(c) # 将类别名称添加到列表中
# 设置图例,标题和坐标轴标签
plt.legend(map(lambda x: x[0], p_list), c_list) # 设置图例,显示类别名称和对应的图形
plt.title('鸢尾花花瓣的长度和宽度') if each else plt.title('鸢尾花花萼的长度和宽度') # 设置标题
plt.xlabel('花瓣的长度(cm)') if each else plt.xlabel('花萼的长度(cm)') # 设置x轴标签
plt.ylabel('花瓣的宽度(cm)') if each else plt.ylabel('花萼的宽度(cm)') # 设置y轴标签
plt.show() # 显示图形
文章来源:https://blog.csdn.net/hzether/article/details/135237020
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!