一般来说,数据集分为两大部分
一般来说,测试数据的量要比训练数据的量小很多。测试数据量:训练数据量大概为25%:75%。测试数据都是一些没有使用过的新数据。
对于个人来说,数据集的采集通常需要花费大量的精力和时间。但是,包括sklearn, kaggle这些,都给提供了很多数据集。
我们以sklearn为例,在sklearn中,数据集划分的api如下:
# 数据集划分 API
sklearn.model_selection.train_test_split
而数据集获取的接口如下:
#数据集API,以及相关方法
sklearn.datasets #加载获取流行数据集
datasets.load_*() #获取小规模数据集,数据包含在datasets里
datasets.fetch_*(data_home=None)
"""
获取大规模数据集,需要从网络上下载,函
数的第一个参数是data_home,表示数据集
下载的目录,默认是 ~/scikit_learn_data/
"""
load* ,fetch* 返回的数据类型:datasets.base.Bunch(字典格式)
data:特征数据数组,是 [n_samples * n_features] 的二维 numpy.ndarray 数组
target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
DESCR:数据描述
feature_names:特征名,新闻数据,手写数字、回归数据集没有
target_names:标签名,回归数据集没有
举几个例子:
(1). sklearn分类数据集
这里值介绍几个,有个大致的概念即可
from sklearn.datasets import load_iris
li = load_iris()
print("feature value:", li.data)
print("target value",li.target)
print(li.DESCR)
(2) sklearn 回归数据集
sklearn.model_selection.train_test_split(*arrays, **options)
"""
x:数据集的特征值
y:数据集的标签值
test_size:测试集的大小,一般为float
random_state:随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
返回值: 训练集特征值,测试集特征值,训练标签,测试标签(默认随机取)
"""
举例:
from sklearn.datasets import load_iris,fetch_20newsgroups
from sklearn.model_selection import train_test_split
li = load_iris()
# 训练集 train x_train, y_train;测试集 x_test, y_test
x_train, x_test, y_train, y_test = train_test_split(li.data, li.target, test_size=0.25)
print("训练集特征值和目标值:", x_train, y_train)
print("测试集特征值和目标值:", x_test, y_test)
sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
"""
subset: 'train'或者'test','all',可选,选择要加载的数据集.
all:训练集的“训练”,
test:测试集的“测试”,
all:两者的“全部”
"""
datasets.clear_data_home(data_home=None) #清除目录下的数据