文章目录
sklearn.datasets
提供了大量的数据集功能,主要分为两类:
- 加载数据集:大量现成的自带数据集,放在其安装目录下(如
Iris
,diabetes
等)。sklearn
也提供了可以直接抓取特定目标的程序,例如获得mldata.org
数据集等可下载数据集。 - 生成数据集:很多时候,我们可能需要用到一些随机数据,
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_circle
、make_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()
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()