划分训练、测试集和数据观察

作者: 陨星落云 | 来源:发表于2019-05-07 12:26 被阅读1次

训练集与测试集

一般在进行模型的测试时,我们会将数据分为训练集和测试集。在给定的样本空间中,拿出大部分样本作为训练集来训练模型,剩余的小部分样本使用刚建立的模型进行预测。

  • 训练集与测试集

train_test_split 函数利用伪随机数生成器将数据集打乱。默认情况下0.75为训练集,0.25测试集。

  • sklearn.model_selection.train_test_split

  • 划分数据集其参数有:

    arrays :允许的输入是列表,数字阵列

    test_size :float,int或None(默认为无),如果浮点数应在0.0和1.0之间,并且表示要包括在测试拆分中的数据集的比例。如果int,表示测试样本的绝对数

    train_size :float,int或None(默认为无),如果浮点数应在0.0到1.0之间,表示数据集包含在列车拆分中的比例。如果int,表示列车样本的绝对数

    random_state :int或RandomState,用于随机抽样的伪随机数发生器状态,参数 random_state 默认设置为 None,这意为着每次打散都是不同的。

from sklearn.model_selection import train_test_split
from sklearn import datasets

iris = datasets.load_iris()
print(iris.data.shape,iris.target.shape[0])
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.3,random_state=12)
print(X_train.shape,y_train.shape[0])
print(X_test.shape,y_test.shape[0])
(150, 4) 150
(105, 4) 105
(45, 4) 45

观察数据

在构建机器学习模型之前,通常最好检查一下数据,看看如果不用机器学习能不能轻松完成任务,或者需要的信息有没有包含在数据中。
此外,检查数据也是发现异常值和特殊值的好方法。举个例子,可能有些鸢尾花的测量单位是英寸而不是厘米。在现实世界中,经常会遇到不一致的数据和意料之外的测量数据。检查数据的最佳方法之一就是将其可视化。一种可视化方法是绘制散点图(scatter plot)。数据散点图将一个特征作为 x 轴,另一个特征作为 y 轴,将每一个数据点绘制为图上的一个点。不幸的是,计算机屏幕只有两个维度,所以我们一次只能绘制两个特征(也可能是3 个)。用这种方法难以对多于 3 个特征的数据集作图。解决这个问题的一种方法是绘制散点图矩阵(pair plot),从而可以两两查看所有的特征。如果特征数不多的话,比如我们这里有 4 个,这种方法是很合理的。但是你应该记住,散点图矩阵无法同时显示所有特征之间的关系,所以这种可视化方法可能无法展示数据的某些有趣内容。

  • pandas.plotting.scatter_matrix()
    参数:
    frame : DataFrame
    alpha : float,可选 应用的透明度
    figsize :( float,float),可选 以英寸为单位的元组(宽度,高度)
    ax : Matplotlib轴对象,可选
    grid : bool,可选 将此设置为True将显示网格
    diagonal : {'hist','kde'} 在'kde'和'hist'之间选择对角线中的核密度估计或直方图
    marker : str,可选 Matplotlib标记类型,默认为'o'
    hist_kwds : 其他绘图关键字参数 要传递给hist函数
    density_kwds : 其他绘图关键字参数 要传递给核密度估计图
    range_padding : float,可选 图像在x轴,y轴原点附近留白,值越大,留白越多,默认值为0.05
    kwds : 其他绘图关键字参数 要传递给分散函数

数据点的颜色与鸢尾花的品种相对应。为了绘制这张图,我们首先将 NumPy 数组转换成 pandas DataFrame。pandas 有一个绘制散点图矩阵的函数,叫作 scatter_matrix。矩阵的对角线是每个特征的直方图

import pandas as pd
import mglearn 
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载iris数据
iris = load_iris()
# 将数据分为训练集和测试集
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=12)
# 利用X_train中的数据创建DataFrame
# 利用iris_dataset.feature_names中的字符串对数据列进行标记 
iris_dataframe = pd.DataFrame(X_train,columns=iris.feature_names)
# 利用DataFrame创建散点图矩阵,按y_train着色
grr = pd.plotting.scatter_matrix(iris_dataframe,c=y_train,figsize=(15,15),marker='o',
                        hist_kwds={'bins':20},s=60,alpha=0.8,cmap=mglearn.cm3)
iris.png

从图中可以看出,利用花瓣和花萼的测量数据基本可以将三个类别区分开。这说明机器学习模型很可能可以学会区分它们。

参考资料:
Python机器学习基础教程
Pandas官方文档

相关文章

  • 机器学习模型总结 之 模型评估

    模型评估 训练集和测试集划分 留出法:直接将数据划分为两个互斥的,注意保持在训练集和测试集要保证数据分布和原始数据...

  • sklearn数据集的获取与划分

    划分数据集 获取sklearn本地的数据集 描述iris数据集 从网络获取数据集 网络获取 划分训练集和测试集 数...

  • 2018-04-25 第五周

    本周任务:按照标准的数据集划分,即训练集:2 测试集:1的比例划分数据,测试模型效果。 首先,划分...

  • day02-xgboost和lightgbm简单实现

    xgboost 导入鸢尾花数据 数据展示 pandas格式 结果: pandas格式 结果: 划分训练集和测试集 ...

  • sklearn学习 — 数据集

    sklearn数据集 1. 数据集的划分 训练集 : (占数据集比重高) 用于训练,构建模型 测试集 : 在模型...

  • sklearn的train_test_split

    train_test_split函数用于将矩阵随机划分为训练子集和测试子集,并返回划分好的训练集测试集样本和训练集...

  • 划分训练、测试集和数据观察

    训练集与测试集 一般在进行模型的测试时,我们会将数据分为训练集和测试集。在给定的样本空间中,拿出大部分样本作为训练...

  • CS231N学习记录

    数据集:训练集+验证集+测试集 交叉验证:当训练数据太小时,为了更好地利用数据,那么将训练数据集划分成n份,其中n...

  • 吴恩达深度学习笔记(63)-如何进行训练/开发/测试集划分

    训练/开发/测试集划分(Train/dev/test distributions) 设立训练集,开发集和测试集的方...

  • 关于ML数据集的划分(关于验证集)

    ML中数据集大致有两种划分: 1、训练集、测试集 2、训练集、验证集、测试集 问题是监督机器学习的训练集包含标签,...

网友评论

    本文标题:划分训练、测试集和数据观察

    本文链接:https://www.haomeiwen.com/subject/tsreoqtx.html