【DA】sklearn的数据集


sklearn.datasets提供了大量的数据集功能,主要分为两类:

  1. 加载数据集:大量现成的自带数据集,放在其安装目录下(如Iris,diabetes等)。sklearn也提供了可以直接抓取特定目标的程序,例如获得mldata.org数据集等可下载数据集
  2. 生成数据集:很多时候,我们可能需要用到一些随机数据,sklearn也提供了可以生成随机数据集的功能,用以监督式学习和非监督式学习之用(在生成过程中,控制数据集的样本、分布规律等数据特征)

1 加载数据集

1.1 自带数据集:sklearn.datasets.load_<name>

自带的小的数据集sklearn.datasets.load_<name>

数据集的信息关键字

  • DESCR:数据集的描述信息
  • data:内部数据(即:X)
  • feature_names:数据字段名
  • target:数据标签(即:y)
  • target_names:标签字段名(回归数据集无此项)

使用模板

# 导入库
from sklearn.datasets import load_iris
iris = load_iris()

# 定义X和y
X, y = iris.data, iris.target

# 查看数据的维度
X.shape
y.shape            # ((150, 4), (150,))


# 查看特征名
iris.feature_names # ['sepal length (cm)',
                    #  'sepal width (cm)',
                    #  'petal length (cm)',
                    #  'petal width (cm)']

# 查看标签名
iris.target_names # array(['setosa', 'versicolor', 'virginica'], dtype='<U10')

#导入boston房价数据集
from sklearn.datasets import load_boston 

#return_X_y:表示是否返回target(即价格(目标变量)),默认为False,只返回data(即属性)
data,target = load_boston(return_X_y=True)

print(data.shape)
print(target.shape)

其他例子:

from sklearn.datasets import load_digits
digits = load_digits()

1.2 可下载数据集:sklearn.datasets.fetch_<name>

可下载数据集sklearn.datasets.fetch_<name>

  • fetch_20newsgroups:用于文本分类、文本挖据和信息检索研究的国际标准数据集之一。数据集收集了大约20,000左右的新闻组文档,均匀分为20个不同主题的新闻组集合。返回一个可以被文本特征提取器
  • fetch_20newsgroups_vectorized:这是上面这个文本数据的向量化后的数据,返回一个已提取特征的文本序列,即不需要使用特征提取器
  • fetch_california_housing:加利福尼亚的房价数据,总计20640个样本,每个样本8个属性表示,以及房价作为target,所有属性值均为number,详情可调用fetch_california_housing()[‘DESCR’]了解每个属性的具体含义;
  • fetch_covtype:森林植被类型,总计581012个样本,每个样本由54个维度表示(12个属性,其中2个分别是onehot4维和onehot40维),以及target表示植被类型1-7,所有属性值均为number,详情可调用fetch_covtype()['DESCR']了解每个属性的具体含义
  • fetch_kddcup99:KDD竞赛在1999年举行时采用的数据集,KDD99数据集仍然是网络入侵检测领域的事实Benckmark,为基于计算智能的网络入侵检测研究奠定基础,包含41项特征
  • fetch_lfw_pairs:该任务称为人脸验证:给定一对两张图片,二分类器必须预测这两个图片是否来自同一个人。
  • fetch_lfw_people:打好标签的人脸数据集
  • fetch_mldata:从 http://mldata.org 中下载数据集
  • fetch_olivetti_faces:Olivetti 脸部图片数据集
  • fetch_rcv1:路透社新闻语聊数据集
  • fetch_species_distributions:物种分布数据集

这类数据需要在线下载,有点慢

数据集的信息关键字

  • DESCR:数据集的描述信息
  • data:内部数据(即:X)
  • feature_names:数据字段名
  • target:数据标签(即:y)
  • target_names:标签字段名(回归数据集无此项)

使用模板

使用方法与自带数据集一致,只是多了下载过程(示例:fetch_20newsgroups

# 数据集data
x,y=news.data,news.target

# y形状,x是文本信息处理前没有shape
y.feature_names # (18846,)

# 查看字段名
news.target_names   # ['alt.atheism',
                    #  'comp.graphics',
                    #  'comp.os.ms-windows.misc',
                    #  'comp.sys.ibm.pc.hardware',
                    #  'comp.sys.mac.hardware',
                    #  'comp.windows.x',
                    #  'misc.forsale',
                    #  'rec.autos',
                    #  'rec.motorcycles',
                    #  'rec.sport.baseball',
                    #  'rec.sport.hockey',
                    #  'sci.crypt',
                    #  'sci.electronics',
                    #  'sci.med',
                    #  'sci.space',
                    #  'soc.religion.christian',
                    #  'talk.politics.guns',
                    #  'talk.politics.mideast',
                    #  'talk.politics.misc',
                    #  'talk.religion.misc']

news没有数据字段名feature_names,所以有没有上述关键字属性分数据集,不同数据集情况不同

2 生成数据集

可以用来分类、回归、聚类、流形学习、因子分解等:这些函数产生样本特征向量矩阵以及对应的类别标签集合

  • make_blobs:多类单标签数据集,为每个类分配一个或多个正态分布的点集
  • make_classification:多类单标签数据集,为每个类分配一个或多个正态分布的点集,提供了为数据添加噪声的方式,包括维度相关性,无效特征以及冗余特征等
  • make_gaussian_quantiles:将一个单高斯分布的点集划分为两个数量均等的点集,作为两类
  • make_hastie_10_2:产生一个相似的二元分类数据集,有10个维度
  • make_circlemake_moons:产生二维二元分类数据集来测试某些算法的性能,可以为数据集添加噪声,可以为二元分类器产生一些球形判决界面的数据

2.1 make_blobs

make_blobs:多类单标签数据集,为每个类分配一个或多个正态分布的点集

import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs

X, y = make_blobs(centers=4,n_features=5,n_samples=100,random_state=42)
plt.title('make_blobsfunction example')
plt.scatter(X[:,0],X[:,1],marker='o',c=y)
plt.show()

2MDU2MjE5,size_16,color_FFFFFF,t_70)

2.2 make_classification

make_classification:多类单标签数据集,为每个类分配一个或多个正态分布的点集,提供了为数据添加噪声的方式,包括维度相关性,无效特征以及冗余特征等

import matplotlib.pyplot as plt
from sklearn.datasets import make_classification

X, y = make_classification(n_classes=3,n_informative=3,n_samples=100,random_state=42)
plt.title('make_classification function example')
plt.scatter(X[:,0],X[:,1],marker='o',c=y)
plt.show()

在这里插入图片描述

2.3 make_gaussian_quantiles

make_gaussian_quantiles:将一个单高斯分布的点集划分为两个数量均等的点集,作为两类

import matplotlib.pyplot as plt
from sklearn.datasets import make_gaussian_quantiles

X, y = make_gaussian_quantiles(n_classes=3,n_samples=100,random_state=42)
plt.title('make_gaussian_quantiles function example')
plt.scatter(X[:,0],X[:,1],marker='o',c=y)
plt.show()

在这里插入图片描述

2.4 make_hastie_10_2

make_hastie_10_2:产生一个相似的二元分类数据集,有10个维度

import matplotlib.pyplot as plt
from sklearn.datasets import make_hastie_10_2

X, y = make_hastie_10_2(n_samples=100,random_state=42)
plt.title('make_hastie_10_2 function example')
plt.scatter(X[:,0],X[:,1],marker='o',c=y)
plt.show()

在这里插入图片描述

import pandas as pd
df=pd.DataFrame(X)
df['target']=y
df

在这里插入图片描述

2.5 make_circle & make_moons

make_circle :产生同心圆型的二维二元分类 (标签为 0, 1) 数据集来测试某些算法的性能,可以为数据集添加噪声,可以为二元分类器产生一些球形判决界面的数据。

import matplotlib.pyplot as plt
from sklearn.datasets import make_circles

# 不加入噪声
X, y = make_circles(n_samples=100, random_state=42)
plt.title('make_moons function example')
plt.scatter(X[:,0],X[:,1],marker='o',c=y)
plt.show()

在这里插入图片描述

# 加入噪声
X, y = make_circles(n_samples=100, noise=0.15, random_state=42)
plt.title('make_circles function example')
plt.scatter(X[:,0],X[:,1],marker='o',c=y)
plt.show()

在这里插入图片描述

make_moons:产生二维二元分类数据集来测试某些算法的性能,可以为数据集添加噪声,可以为二元分类器产生一些球形判决界面的数据

import matplotlib.pyplot as plt
from sklearn.datasets import make_moons

X, y = make_moons(n_samples=100, noise=0.15, random_state=42)
plt.title('make_moons function example')
plt.scatter(X[:,0],X[:,1],marker='o',c=y)
plt.show()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36056219/article/details/114989559