生成数据集
为了方便用户学习机器学习和数据挖掘的方法,机器学习库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.0, 10.0), shuffle=True, random_state=None)
|
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)
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()
|
交错半圆形数据集
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()
|
分类样本生成器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)
|
用以生成指定样本数量、类别数量、特征数量、冗余特征数量等指标的样本。
from sklearn import datasets
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)
|
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等内容,属性,以及数据集的介绍等。
from sklearn import datasetsiris = datasets.load_iris()
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)
|