Palmer企鹅数据集和分类样例

一、问题描述

帕尔默企鹅数据集(Palmer Penguins dataset)发布于 2020年,是一个在数据科学和机器学习领域广泛使用的数据集,主要用于数据探索和可视化,以及分类任务。该数据集由克里斯汀·高曼/Kristen Gorman博士和南极洲长期生态研究LTER (Antarctica Long Term Ecological Research) 网络成员南极洲帕尔默科考站(Palmer Station)共同创建。帕尔默企鹅数据集的目标是为Iris数据集的替代提供一个用于数据探索和可视化的强大数据集,帮助学习者更直观地了解分类数据分析。注释:Iris数据集是一个经典的机器学习数据集,主要用于分类任务。它包含了150个样本,每个样本有四个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。这些样本来自三种鸢尾花:山鸢尾(Iris setosa)、变色鸢尾(Iris versicolour)和维吉尼亚鸢尾(Iris virginica)。

就像 Iris数据集 一样,这个数据集里有来自帕尔默群岛 3 个岛屿的 3 种不同种类的企鹅,分别是 Adelie、Chinstrap 和 Gentoo。或许“Gentoo”听起来很耳熟,那是因为 Gentoo Linux 就是以它命名的!此外,这些数据集包含每个物种的 culmen 维度。这里 culmen 是鸟喙的上脊。在简化版企鹅数据中,culmen 长度和深度被重命名为变量 culmen_length_mm 和 culmen_depth_mm。

它是练习解决分类和聚类问题的好帮手。在这里,你可以尝试各种分类算法,如决策树、随机森林、SVM,或把它用于聚类问题并练习使用无监督学习。

二、数据集内容

该数据集本质上是由两个数据集组成的,每个数据集包含 344 只企鹅的数据。

数据结构

帕尔默企鹅数据集通常包含两个版本:penguins-raw.csvpenguins.csv。这两个版本的数据结构有所不同,主要区别在于 penguins.csv 是对 penguins-raw.csv 进行了一定预处理后的版本。

数据字段:penguins.csv

  • species:企鹅的种类,可能的值有AdelieChinstrapGentoo
  • island:企鹅所在岛屿,可能的值有BiscoeDreamTorgersen
  • bill_length_mm:企鹅喙的长度(毫米)。
  • bill_depth_mm:企鹅喙的深度(毫米)。
  • flipper_length_mm:企鹅翅膀的长度(毫米)。
  • body_mass_g:企鹅的体重(克)。
  • sex:企鹅的性别,可能的值有MaleFemale

数据样例:penguins.csv

speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsexyear
AdelieTorgersen39.118.71813750male2007
AdelieTorgersen39.517.41863800female2007
AdelieTorgersen40.3181953250female2007
AdelieTorgersenNANANANANA2007
AdelieTorgersen36.719.31933450female2007
AdelieTorgersen39.320.61903650male2007
AdelieTorgersen38.917.81813625female2007
AdelieTorgersen39.219.61954675male2007

penguins-raw.csv 是原始数据文件,包含未清洗的原始特征和较多的辅助信息。字段较多,且包含缺失值。以下是该文件的字段说明:

  • studyName:研究名称。
  • Sample Number:企鹅的样本编号。
  • Species:企鹅的种类(Adelie、Chinstrap、Gentoo)。
  • Region:企鹅栖息的大致地区,通常是“Anvers”。
  • Island:企鹅栖息的岛屿(Biscoe、Dream、Torgersen)。
  • Stage:企鹅的生命周期阶段(一般是“Adult”)。
  • Individual ID:企鹅的唯一标识符。
  • Clutch Completion:企鹅的产卵状态。
  • Date Egg:产卵日期。
  • Culmen Length (mm):企鹅嘴巴长度(毫米)。
  • Culmen Depth (mm):企鹅嘴巴深度(毫米)。
  • Flipper Length (mm):企鹅鳍的长度(毫米)。
  • Body Mass (g):企鹅体重(克)。
  • Sex:企鹅性别(male、female),存在缺失值。
  • Delta 15 N (o/oo):氮同位素比率。
  • Delta 13 C (o/oo):碳同位素比率。
  • Comments:备注字段,一些记录者的附加说明。

penguins-raw.csv 包含较多生态学和化学信息,如“Delta 15 N”和“Delta 13 C”字段,这些字段对一般的数据科学应用并非必需。此外,字段名较为混乱,有些字段用的是更专业的术语或测量单位。

数据样例:penguins-raw.csv

studyNameSpeciesRegionIslandIndividual IDDate EggSexComments
PAL0708Adelie Penguin (Pygoscelis adeliae)AnversTorgersenN1A12007/11/11MALENot enough blood for isotopes.
PAL0708Adelie Penguin (Pygoscelis adeliae)AnversTorgersenN1A22007/11/11FEMALENA
PAL0708Adelie Penguin (Pygoscelis adeliae)AnversTorgersenN2A12007/11/16FEMALENA
PAL0708Adelie Penguin (Pygoscelis adeliae)AnversTorgersenN2A22007/11/16NAAdult not sampled.
PAL0708Adelie Penguin (Pygoscelis adeliae)AnversTorgersenN3A12007/11/16FEMALENA
PAL0708Adelie Penguin (Pygoscelis adeliae)AnversTorgersenN3A22007/11/16MALENA
PAL0708Adelie Penguin (Pygoscelis adeliae)AnversTorgersenN4A12007/11/15FEMALENest never observed with full clutch.
PAL0708Adelie Penguin (Pygoscelis adeliae)AnversTorgersenN4A22007/11/15MALENest never observed with full clutch.
PAL0708Adelie Penguin (Pygoscelis adeliae)AnversTorgersenN5A12007/11/9NANo blood sample obtained.

数据集使用许可协议

开源协议:Creative Commons Zero (CC0) v1.0 Universal 是一种版权声明工具,它允许创作者放弃其作品在全球范围内的所有版权及相关权利,从而将这些作品贡献到公共领域。

三、数据分析和分类样例

安装

在工程目录下执行:

pip install palmerpenguins

源码example.ipynb

import pandas as pd
import seaborn as sns 
from palmerpenguins import load_penguins
sns.set_style('whitegrid')
penguins = load_penguins()
penguins.head()

  species     island  bill_length_mm  ...  body_mass_g     sex  year
0  Adelie  Torgersen            39.1  ...       3750.0    male  2007
1  Adelie  Torgersen            39.5  ...       3800.0  female  2007
2  Adelie  Torgersen            40.3  ...       3250.0  female  2007
3  Adelie  Torgersen             NaN  ...          NaN     NaN  2007
4  Adelie  Torgersen            36.7  ...       3450.0  female  2007
[5 rows x 8 columns]
g = sns.boxplot(x = 'island',
            y ='body_mass_g',
            hue = 'species',
            data = penguins,
            palette=['#FF8C00','#159090','#A034F0'],
            linewidth=0.3)
g.set_xlabel('Island')
g.set_ylabel('Body Mass')

X轴为企鹅所在岛屿,Y轴为企鹅的体重(克)的箱形图分析:

g = sns.lmplot(x="flipper_length_mm",
               y="body_mass_g",
               hue="species",
               height=7,
               data=penguins,
               palette=['#FF8C00','#159090','#A034F0'])
g.set_xlabels('Flipper Length')
g.set_ylabels('Body Mass')

代码使用 Seaborn 库中的函数lmplot 绘制回归数据的双变量分布图,X轴为企鹅鳍的长度-毫米,对企鹅种类进行分组,Y轴为企鹅的体重。它结合了散点图和线性回归拟合线,可以直观地展示两个变量之间的关系,并且可以对数据进行分组或分层的可视化。

以下这段代码使用了scikit-learn库来实现一个简单的机器学习流程,包括数据分割、处理缺失值、模型训练和评估。使用train_test_split函数将数据集分割为训练集和测试集。这里,测试集的大小被设置为100个样本,随机种子设置为0以确保结果的可重复性。使用make_pipeline函数创建一个管道,该管道首先应用IterativeImputer来处理缺失值,然后使用DecisionTreeClassifier进行分类。fit方法用于在训练数据上训练模型。使用训练好的模型对测试数据进行预测,然后计算混淆矩阵来评估模型的性能。labels参数指定了混淆矩阵中类别的顺序。

from sklearn.model_selection import train_test_split
from sklearn.pipeline import FeatureUnion, make_pipeline
from sklearn.metrics import confusion_matrix
### To deal with missing values
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
from sklearn.tree import DecisionTreeClassifier
X,y = load_penguins(return_X_y = True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=100,random_state=0)

imp = IterativeImputer(max_iter=10, random_state=0)
clf = make_pipeline(imp, DecisionTreeClassifier())
clf = clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
confusion_matrix(y_test,y_pred,labels=['Adelie','Chinstrap','Gentoo'])

运行

这段代码执行的结果是一个3×3的混淆矩阵,表示模型在测试集上的性能。混淆矩阵的对角线元素表示正确分类的样本数,而非对角线元素表示错误分类的样本数。具体来说,这个混淆矩阵的含义如下:

  • 第一行表示Adelie企鹅的分类结果:
    • 正确分类为Adelie的有48只。
    • 错误分类为Chinstrap的有0只。
    • 错误分类为Gentoo的有0只。
  • 第二行表示Chinstrap企鹅的分类结果:
    • 错误分类为Adelie的有1只。
    • 正确分类为Chinstrap的有19只。
    • 错误分类为Gentoo的有0只。
  • 第三行表示Gentoo企鹅的分类结果:
    • 错误分类为Adelie的有0只。
    • 错误分类为Chinstrap的有0只。
    • 正确分类为Gentoo的有32只。
array([[48,  0,  0],
       [ 1, 19,  0],
       [ 0,  0, 32]], dtype=int64)

开源协议

MIT License
Copyright (c) 2020 Muhammad Chenariyan Nakhaee 

四、获取案例套件

需要登录后才允许下载文件包。登录

发表评论