生成数据集

为了方便用户学习机器学习和数据挖掘的方法,机器学习库scikit-learn的数据集模块sklearn.datasets提供了20个样本生成函数,为分类、聚类、回归、主成分分析等各种机器学习方法生成模拟的样本集。

分类、聚类问题样本生成器

make_blobs()方法

sklearn.datasets.make_blobs(n_samples=100
n_features=2, centers=3, cluster_std=1.0
center_box=(-10.010.0), shuffle=True
random_state=None)

image.png
center_box表示中心由随机数产生时的随机数产生的上下界
random_state表示样本数据的随机数产生方法
sklearn.datasets.make_blobs()函数能够生成指定样本数量、特征数量、类别数量、类别中心、类别样本标准差的分类样本集。

from sklearn.datasets.samples_generator import
make_blobs
X, y = make_blobs(n_samples=100, centers=2,
n_features=2, random_state=0)#centers = [(-5, 0), (5, 2)],指定中心
#可视化
plt.figure(figsize=(6, 4))
plt.scatter(X[:,0],X[:,1],c=y)
plt.title('使用make_blobs生成2类样本')#添加标题
plt.show()

双圆形数据集生成

sklearn.datasets.make_circles(n_samples=100, shuffle=True, noise=None, random_state=None, factor=0.8)

双圆形数据集生成器生成两个同心圆并叠加噪声的二元分类样本集。

n_samples = 500
X, y = datasets.make_circles(n_samples=n_samples, factor=.5,
noise=.05)
print('circles特征集X的形状为',X.shape)
print('circles类标签y的形状为',y.shape)
print('circles特征集X的前5行为:\n',X[0:5,:])
print('circles类标签y的前5个值为:',y[0:5])
#可视化
plt.figure(figsize=(6, 4))
plt.scatter(X[:,0],X[:,1],c=y,label="Class ")
plt.title('使用make_circles生成的样本')#添加标题
plt.show()

image.png

交错半圆形数据集

sklearn.datasets.make_moons(n_samples=100, shuffle=True, noise=None, random_state=None)
X, y = datasets.make_moons(n_samples=n_samples, noise=.05)
print('moons特征集X的形状为',X.shape)
print('moons类标签y的形状为',y.shape)
print('moons特征集X的前5行为:\n',X[0:5,:])
print('moons类标签y的前5个值为:',y[0:5])
#可视化
plt.figure(figsize=(6, 4))
plt.scatter(X[:,0],X[:,1],c=y,label="Class ")
plt.title('使用make_moons生成的样本')#添加标题
plt.show()

image.png

分类样本生成器make_classification()方法

用来生成特征间具有相关性、冗余或者未知噪声的样本,用于数据预处理和主成分分析等模型的训练。

sklearn.datasets.make_classification(n_samples=100, n_features=20, n_informative=2, n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=2, weights=None, flip_y=0.01, class_sep=1.0, hypercube=True, shift=0.0, scale=1.0, shuffle=True, random_state=None)

image.png
用以生成指定样本数量、类别数量、特征数量、冗余特征数量等指标的样本。

from sklearn import datasets
#使用make_classification生成分类样本,
#在样本中引入相关的,冗余的和未知的噪音
X, y = datasets.make_classification(n_samples=100, n_features=10,
n_informative=6, n_redundant=2,
n_classes=3,random_state=42)
print('分类特征集X的形状为',X.shape)
print('类标签y的形状为',y.shape)
print('分类特征集X的前5行为:\n',X[0:5,:])
print('类标签y的前5个值为:',y[0:5])

回归问题样本生成器make_regression()方法

sklearn.datasets.make_regression(n_samples=100, n_features=100, n_informative=10, n_targets=1, bias=0.0, effective_rank=None, tail_strength=0.5, noise=0.0, shuffle=True, coef=False, random_state=None)

image.png
bias表示偏置指标

X, y = datasets.make_regression(n_samples=100, n_features=4, 
random_state=0, noise=4.0,
bias=100.0)
print('特征集X的形状为',X.shape)
print('y的形状为',y.shape)
print('特征集X的前5行为:\n',X[0:5,:])
print('y的前5个值为:',y[0:5])

访问数据集

访问内部数据集

scikit-learn的datasets模块自带了一些数据集,包括鸢尾花数据集、波士顿房价数据集、红酒数据集、糖尿病数据集、乳腺癌数据集等。用户可以使用形如datasets.load_dataset_name()的命令加载数据集,用于分类、聚类、回归等问题的练习。由于事先不知道数据集的内容,可以通过打印该数据集的对象名字来观察数据集的全部内容,查看其data,target,feature_names等内容,属性,以及数据集的介绍等。

#例5-11 加载scikit-learn自带数据集iris
from sklearn import
datasetsiris = datasets.load_iris()
#print('iris的内容为:\n',iris)
#print('iris.data的内容为:\n',iris.data)
print('iris.data的形状为:',iris.data.shape)
print('iris.target的内容为:\n',iris.target)
print('iris.target的形状为:',iris.target.shape)print('iris.target的鸢尾花名称为:\n',iris.target_names)

image.jpg