一,sklearn数据集介绍
1,api
- sklearn.datasets
- 加载获取流行数据集
- datasets.load_*()
- 获取小规模数据集,数据包含在datasets里
- datasets.fetch_*(data_home=None)
- 获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/
2,返回类型
- load 和 fetch 返回的数据类型datasets.base.Bunch(字典格式)
- data:特征数据数组,是 [n_samples * n_features] 的二维 numpy.ndarray 数组
- target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
- DESCR:数据描述
- feature_names:特征名,新闻数据,手写数字、回归数据集没有
- target_names:标签名
3,分类、回归数据集实例
from sklearn.datasets import load_iris,load_boston,fetch_20newsgroups
# 1,分类数据集
# lr = load_iris()
# print("特征值",lr.data)
# print("目标值",lr.target)
# print(lr.feature_names)
# print(lr.target_names)
# print(lr.DESCR)
# 2,回归数据集
# lb = load_boston()
# print("特征值",lb.data)
# print("目标值",lb.target)
# print(lb.feature_names)
# 3,数据量比较大的数据集
# subset: 'train'或者'test','all',可选,选择要加载的数据集.训练集的“训练”,
# 测试集的“测试”,两者的“全部”
news = fetch_20newsgroups(subset='all')
print("特征值",news.data)
print("目标值",news.target)
---------------------------------------------------------------
Downloading 20news dataset. This may take a few minutes.
Downloading dataset from https://ndownloader.figshare.com/files/5975967 (14 MB)
二, 数据集的划分
1,数据集的划分
机器学习一般的数据集会划分为两个部分:
- 训练数据:用于训练,构建模型
- 测试数据:在模型检验时使用,用于评估模型是否有效
划分比例:
- 训练集:70% 80% 75%
- 测试集:30% 20% 30%
2,API
- sklearn.model_selection.train_test_split(arrays, *options)
- x 数据集的特征值
- y 数据集的标签值
- test_size 测试集的大小,一般为float
- random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
- return ,测试集特征训练集特征值值,训练标签,测试标签(默认随机取)
3,实例
from sklearn.datasets import load_iris,load_boston,fetch_20newsgroups
from sklearn.model_selection import train_test_split
# 1,分类数据集
lr = load_iris()
# print("特征值",lr.data)
# print("目标值",lr.target)
# print(lr.feature_names)
# print(lr.target_names)
# print(lr.DESCR)
# 2,回归数据集
# lb = load_boston()
# print("特征值",lb.data)
# print("目标值",lb.target)
# print(lb.feature_names)
# 3,数据量比较大的数据集
# news = fetch_20newsgroups(subset='all')
# print("特征值",news.data)
# print("目标值",news.target)
# 4,进行数据集的训练集和测试集划分
# 返回值有4个部分接受
# x,y特征值、目标值,train、test训练集和测试集
# x_train,x_test,y_train,y_test
x_train,x_test,y_train,y_test = train_test_split(lr.data,lr.target,test_size=0.3)
print("训练集的特征值和目标值:",x_train,y_train)
print("测试机的特征值和目标值:",x_test,y_test)