Sklearn入门之datasets的基本用法

Sklearn全称:Scipy-toolkit Learn是 一个基于scipy实现的的开源机器学习库。它提供了大量的算法和工具,用于数据挖掘和数据分析,包括分类、回归、聚类等多种任务。本文我将带你了解并入门Sklearn下的datasets在机器学习中的基本用法。

获取方式

复制代码
pip install scikit-learn

模块结构

在Python中,要想熟练地使用一个库来完成各种任务,那么我们必须得对这个库内各个模块的结构比较熟悉才可以,观察Scikit-learn源代码中的第一级模块,我们不难画出这样的一个树状图用来描述其结构:

在这其中,datasets为内置数据集,剩下的2-13基本包含了整个机器学习中所有比较经典的算法,后边七个模块是我们在进行机器学习任务时常用的工具。

后续,我将分别为大家介绍这20个模块的基本用法,本文我们着重来了解datasets这个模块的基本用法。

datasets

datasets是sklearn中用来加载预置数据集的模块,其内部主要有以下数据集:

所有数据集

数据集名称​ ​导入方式​ ​样本数×特征数​ ​描述​
​​load_iris​​ from sklearn.datasets import load_iris 150×4 鸢尾花数据集,包含3类鸢尾花的4个特征(花萼/花瓣长宽)
​​load_digits​​ from sklearn.datasets import load_digits 1797×64 手写数字(0-9)的8x8像素图像,共10类
​​load_wine​​ from sklearn.datasets import load_wine 178×13 葡萄酒化学分析数据,3类意大利不同品种葡萄酒
​​load_breast_cancer​​ from sklearn.datasets import load_breast_cancer 569×30 乳腺癌诊断数据,2类(恶性/良性),特征为细胞核的30项测量值
​​load_diabetes​​ from sklearn.datasets import load_diabetes 442×10 糖尿病进展指标,10个生理特征(年龄、BMI等),目标为定量病情进展
​​fetch_california_housing​​ from sklearn.datasets import fetch_california_housing 20640×8 加州房价数据,包含收入、房龄等特征,目标为房屋中位数价格(回归问题)
​​fetch_olivetti_faces​​ from sklearn.datasets import fetch_olivetti_faces 400×4096 40人的人脸图像(每人10张),64x64像素,用于人脸识别
​​fetch_20newsgroups​​ from sklearn.datasets import fetch_20newsgroups 文本数据(约18k篇) 20个新闻组的文本分类数据,需文本向量化处理
​​make_classification​​ from sklearn.datasets import make_classification 可自定义(默认100×20) 生成合成分类数据,可控制样本数、特征数、类别数等
​​make_regression​​ from sklearn.datasets import make_regression 可自定义(默认100×100) 生成合成回归数据,可控制噪声、特征重要性等
​​make_blobs​​ from sklearn.datasets import make_blobs 可自定义(默认100×2) 生成各向同性高斯分布的聚类数据,适用于聚类算法测试
​​make_moons​​ from sklearn.datasets import make_moons 可自定义(默认100×2) 生成半月形非线性可分数据,用于测试分类算法
​​make_circles​​ from sklearn.datasets import make_circles 可自定义(默认100×2) 生成同心圆非线性可分数据,用于测试分类算法

示例

python 复制代码
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#加载iris数据集
iris=load_iris()
X=iris.data#特征 (150, 4)
y=iris.target#三种花的类别(0,1,2)
feature_names=iris.feature_names
target_names=iris.target_names
#绘制花萼长度与宽度,其为data下的第0与第1特征
#y==0,y==1,y==2分别表示三中不同类别的花
plt.figure(figsize=(8, 6))
plt.scatter(X[y==0,0], X[y==0,1], color='red', label=target_names[0])
plt.scatter(X[y==1,0], X[y==1,1], color='blue',label=target_names[1])
plt.scatter(X[y==2,0], X[y==2,1], color='green',label=target_names[2])
plt.xlabel(feature_names[0]) #花萼长度
plt.ylabel(feature_names[1]) # 花萼宽度
plt.title("鸢尾花数据集:花萼长度VS花萼宽度")
plt.legend()
plt.show()

结果

数据集加载方法

sklearn所有的load_数据集名称 函数的返回值为一个字典**(不指定return_Xy=True时)**,这个字典内部包含的所有属性为:

python 复制代码
['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module']

以load_iris()函数的返回值为例, 其中data是大小为指定形状的ndarray类型数据, feature_names是data中的所有特征名称构成 的列表,feature_names的长度即为data.shape[1]的值也就是data对应的列数,target为数据集的目标变量( 监督学习中的标签或输出值,在iris数据集中为三种类型的花的名称**)** 也是ndarray的类型

| ​​键(Key)​​ | ​​数据类型​​ | ​​含义​​ |
| data | numpy.ndarray (150×4) | 特征数据矩阵,每行代表一个样本,每列代表一个特征(花萼/花瓣的长度和宽度)。 |
| target | numpy.ndarray (150,) | 目标标签(类别),整数编码: 0=setosa, 1=versicolor, 2=virginica。 |
| frame | pandas.DataFrame | 包含 datatarget 的DataFrame(需 as_frame=True 时返回)。 |
| target_names | numpy.ndarray (3,) | 目标类别名称,对应 target 的标签: ['setosa', 'versicolor', 'virginica'] |
| feature_names | list (4,) | 特征名称列表: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] |
| DESCR | str | 数据集的完整描述(字符串),包含来源、特征解释等信息。 |

filename str 数据文件的路径(通常用于本地存储的数据集)。

我们在使用时可以通过以下几种方式来获取

通过索引获取

python 复制代码
from sklearn.datasets import load_iris
'''iris为包含['data', 'target','target_names', 'feature_names]等健的一个字典'''
iris=load_iris()
data=iris['data']
print(data)

通过属性获取

python 复制代码
from sklearn.datasets import load_iris
'''iris为包含['data', 'target','target_names', 'feature_names]等健的一个字典'''
iris=load_iris()
print(iris.data)

二者得到的结果是一致的。当然,为了方便我们还可以只返回data与target,需要指定return_Xy=True,此时返回值为tuple类型包含data与target

只获取data与target

当我们将return_X_y指定为True时,函数返回值为data与target构成的tuple

python 复制代码
from sklearn.datasets import load_iris
X,y=load_iris(return_X_y=True)#X为data,y为target
print(X)

获取Dataframe格式数据

当我们将as_frame指定为True时,函数的返回值仍然为字典,要想获取dataframe格式的数据需要通过索引的方式来获取,即'frame'。

python 复制代码
from sklearn.datasets import load_iris
import pandas as pd
iris=load_iris(as_frame=True)
df=iris['frame']

总结

以上便是Sklearn入门之datasets的基本用法的所有内容,如果本文对你有用,免费的三连来一波,感谢各位大佬支持。后续,我还将继续介绍sklearn中其他模块的使用方法。

相关推荐
CodeJourney.8 分钟前
从PPT到DeepSeek开启信息可视化的全新之旅
数据库·人工智能·算法·excel·流程图
水w2 小时前
【Python爬虫】简单案例介绍1
开发语言·爬虫·python
琢磨先生David2 小时前
Java 在人工智能领域的突围:从企业级架构到边缘计算的技术革新
java·人工智能·架构
kuaile09063 小时前
DeepSeek 与开源:肥沃土壤孕育 AI 硕果
人工智能·ai·gitee·开源·deepseek
飞火流星020274 小时前
BERT、T5、ViT 和 GPT-3 架构概述及代表性应用
人工智能·gpt-3·bert·t5·vit·人工智能模型架构
程序小K4 小时前
自然语言处理Hugging Face Transformers
人工智能·自然语言处理
恒拓高科WorkPlus4 小时前
BeeWorks:打造安全可控的企业内网即时通讯平台
大数据·人工智能·安全
FreakStudio4 小时前
一文速通 Python 并行计算:07 Python 多线程编程-线程池的使用和多线程的性能评估
python·单片机·嵌入式·多线程·面向对象·并行计算·电子diy
newxtc5 小时前
【指纹浏览器系列-chromium编译】
人工智能·安全
轻闲一号机5 小时前
【机器学习】机器学习笔记
人工智能·笔记·机器学习