前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习笔记——数据集分割

机器学习笔记——数据集分割

作者头像
数据小磨坊
发布于 2018-10-23 02:01:49
发布于 2018-10-23 02:01:49
2K00
代码可运行
举报
文章被收录于专栏:数据小魔方数据小魔方
运行总次数:0
代码可运行

在模型训练之前,要首先划分训练集与测试集,如何对原始数据集进行训练集与测试集的划分?训练集与测试集的比例各占多少?如何保证各自内部标签分布平衡都会影响模型训练的最终效果。

好在R和Python中有现成的数据集分割函数,避免手动写函数导致划分比例不合理、训练集与测试集的样本的结构与总体不均衡的问题。

R语言中caTools包中的sample.split函数可以用来自动将原始数据集分割成训练集和测试集。

方法一——caTools中的sample.split函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library("caTools")
set.seed(123)

data(iris)
table(iris$Species)

    setosa versicolor  virginica 
        50         50         50

split = sample.split(iris$Species,SplitRatio = .8)
train_data = subset(iris,split == TRUE)
test_data  = subset(iris,split == FALSE)

table(train_data$Species)
    setosa versicolor  virginica 
        40         40         40

table(test_data$Species)
    setosa versicolor  virginica 
        10         10         10

划分方法二——createDataPartition函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library("caret")
split1  <- createDataPartition(y=iris$Species,p=0.8,list = FALSE)

train_data <- iris[split1,]
table(train_data$Species)
    setosa versicolor  virginica 
        40         40         40 

test_data  <- iris[-split1,]
table(test_data$Species)
    setosa versicolor  virginica 
        10         10         10

可以看到无论是caTools包中的sample.split函数还是caret包中的createDataPartition函数,都针对分类标签做了混合后的分层随机抽样,这样可以保证训练集与测试集内的各类标签分布比例与样本总体的分布比例严格一致,否则如果仅仅使用sample函数,无法达到分层随机抽样的目的。

Python的sk-learn库中也有现成的数据集分割工具可用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import pandas as pd

iris  = load_iris()
data = iris['data']
iris_data = pd.DataFrame(
         data = data,
         columns = ['sepal_length','sepal_width','petal_length','petal_width']
        )
iris_data["Species"] = iris[ 'target']
iris_data["Species"] = iris_data["Species"].map({0:"setosa",1:"versicolor",2:"virginica"})

iris_data["Species"].value_counts()
versicolor    50
virginica     50
setosa        50
Name: Species, dtype: int64

x,y = iris_data.iloc[:,0:-1],iris_data.iloc[:,-1]
train_data,test_data,train_target,test_target = train_test_split(x,y,test_size = 0.2,stratify = y)

train_target.value_counts()
test_target.value_counts()

这里有一个细节,其中train_test_split函数中有两个特殊的参数:shuffle和stratify。

shuffle参数相当于对原始数据进行混合抽样,相当于扑克牌发牌前的洗牌,保证随机性。

stratify参数则可以保证训练集&测试集中样本标签结构比例与指定的总体中样本标签结构比例一致,特别是在原始数据中样本标签分布不均衡时非常有用,达到分层随机抽样的目的。

而对于训练集与测试集的划分比例上来看,目前没有一个统一的比例标准,在机器学习类的参考资料中,推荐的比例是训练集和测试集的比例保持在1:2~1:4之间为佳。

倘若使用验证集,则建议保持6:2:2左右的训练集、验证集及测试集比例。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小魔方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习笔记——特征标准化
数据标准化是为了消除不同指标量纲的影响,方便指标之间的可比性,量纲差异会影响某些模型中距离计算的结果。
数据小磨坊
2018/10/23
7130
分类模型的评价方法
机器学习中对于分类模型常用混淆矩阵来进行效果评价,混淆矩阵中存在多个评价指标,这些评价指标可以从不同角度来评价分类结果的优劣,以下内容通过简单的理论概述和案例展示来详细解释分类模型中混淆矩阵的评价指标及其用途。
数据小磨坊
2018/12/12
1.4K0
分类模型的评价方法
机器学习笔记——哑变量处理
在机器学习的特征处理环节,免不了需要用到类别型特征,这类特征进入模型的方式与一般数值型变量有所不同。
数据小磨坊
2018/10/23
3.2K0
机器学习笔记——哑变量处理
实验一:鸢尾花数据集分类「建议收藏」
利用机器学习算法构建模型,根据鸢尾花的花萼和花瓣大小,区分鸢尾花的品种。实现一个基础的三分类问题。
全栈程序员站长
2022/08/02
8.2K0
实验一:鸢尾花数据集分类「建议收藏」
机器学习笔记之KNN分类
KNN模型的核心思想很简单,即近朱者赤、近墨者黑,它通过将每一个测试集样本点与训练集中每一个样本之间测算欧氏距离,然后取欧氏距离最近的K个点(k是可以人为划定的近邻取舍个数,K的确定会影响算法结果),并统计这K个训练集样本点所属类别频数,将其中频数最高的所属类别化为该测试样本点的预测类别。
数据小磨坊
2018/07/25
9180
机器学习笔记之KNN分类
机器学习实战第1天:鸢尾花分类任务
鸢尾花分类任务是一个经典的机器学习问题,通常用于演示和测试分类算法的性能。该任务的目标是根据鸢尾花的特征将其分为三个不同的品种,即山鸢尾(Setosa)、变色鸢尾(Versicolor)和维吉尼亚鸢尾(Virginica)。这个任务是一个多类别分类问题,其中每个样本都属于三个可能的类别之一。
Nowl
2024/01/18
1.8K0
机器学习实战第1天:鸢尾花分类任务
caret包进行机器学习
使用createDataPartition创建一系列测试/训练分区。输入为预测结果的一列,和用于训练的数据集比例,一般用四分之三来训练,四分之一来测试,即p = 0.75。
生信编程日常
2020/07/22
1.2K0
从Iris数据集开始---机器学习入门
代码多来自《Introduction to Machine Learning with Python》. 该文集主要是自己的一个阅读笔记以及一些小思考,小总结。 #前言 在开始进行模型训练之前,
用户1631856
2018/04/12
2.1K0
从Iris数据集开始---机器学习入门
分别用逻辑回归和决策树实现鸢尾花数据集分类
学习了决策树和逻辑回归的理论知识,决定亲自上手尝试一下。最终导出决策树的决策过程的图片和pdf。逻辑回归部分参考的是用逻辑回归实现鸢尾花数据集分类,感谢原作者xiaoyangerr 注意:要导出为pdf先必须安装graphviz(这是一个软件)并且安装pydotplus这个包,把它的graphviz加入系统的环境变量path,否则会报错 决策树 from sklearn.datasets import load_iris from sklearn import tree from sklearn.mo
Aidol
2020/07/23
1.5K0
分别用逻辑回归和决策树实现鸢尾花数据集分类
Python基础(十三) | 机器学习sklearn库详解与应用
可见,花瓣的长度和宽度有非常好的相关性。而花萼的长宽效果不好,因此考虑对他们丢弃。
timerring
2022/10/27
7090
(数据科学学习手札17)线性判别分析的原理简介&Python与R实现
之前数篇博客我们比较了几种具有代表性的聚类算法,但现实工作中,最多的问题是分类与定性预测,即通过基于已标注类型的数据的各显著特征值,通过大量样本训练出的模型,来对新出现的样本进行分类,这也是机器学习中最多的问题,而本文便要介绍分类算法中比较古老的线性判别分析: 线性判别 最早提出合理的判别分析法者是R.A.Fisher(1936),Fisher提出将线性判别函数用于花卉分类上,将花卉的各种特征利用线性组合方法变成单变量值,即将高维数据利用线性判别函数进行线性变化投影到一条直线上,再利用单值比较方法来对新样本
Feffery
2018/04/17
1.9K0
(数据科学学习手札17)线性判别分析的原理简介&Python与R实现
预测三分类变量模型的ROC介绍
我们对Logistics回归很熟悉,预测变量y为二分类变量,然后对预测结果进行评估,会用到2*2 Matrix,计算灵敏度、特异度等及ROC曲线,判断模型预测准确性。
Jamesjin63
2022/11/03
1.2K0
预测三分类变量模型的ROC介绍
机器学习-决策树的优化
今天我们会使用真实的数据来建一棵决策树,编写代码,将其可视化,这样您即可明白决策树是如何在幕后工作的。这里我们使用sklearn中自带的数据集Iris flower data set,该数据集由来自三种鸢尾 ( Iris setosa , Iris virginica和Iris versicolor )中的每一种的50个样品组成。从每个样品测量四个特征 :萼片和花瓣的长度和宽度,以厘米为单位。基于这四个特征的组合,Fisher开发了一种线性判别模型,以区分物种。
XXXX-user
2019/08/29
6050
机器学习-决策树的优化
【机器学习基础】获取机器学习和深度学习的练习数据
初学者学习机器学习和深度学习的时候,经常会找不到练习的数据,本文提供了获取数据的一些方法。
黄博的机器学习圈子
2020/10/29
6230
【机器学习基础】(三):理解逻辑回归及二分类、多分类代码实践
我们把连续的预测值进行人工定义,边界的一边定义为1,另一边定义为0。这样我们就把回归问题转换成了分类问题。
黄博的机器学习圈子
2021/02/08
4.4K0
R 集成算法③ 随机森林
按这种算法得到的随机森林中的每一棵都是很弱的,但是大家组合起来就很厉害了。我觉得可以这样比喻随机森林算法:每一棵决策树就是一个精通于某一个窄领域的专家,这样在随机森林中就有了很多个精通不同领域的专家,对一个新的问题(新的输入数据),可以用不同的角度去看待它,最终由各个专家,投票得到结果。
用户1359560
2018/08/27
1.2K0
R 集成算法③ 随机森林
基于鸢尾花数据集的逻辑回归分类实践
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:
小小程序员
2023/12/25
5630
基于鸢尾花数据集的逻辑回归分类实践
python机器学习实现鸢尾花的分类
鸢尾花(学名:Iris tectorum Maxim)属百合目、鸢尾科,可供观赏,花香气淡雅,可以调制香水,其根状茎可作中药,全年可采,具有消炎作用。
用户6719124
2019/11/17
6.3K0
R分类算法-KNN算法
本文介绍了K近邻分类算法,包括其原理、实现和应用场景。同时,还介绍了KNN算法在Iris数据集上的应用,并通过实例演示了如何通过调整K值来进行模型的调优。
Erin
2018/01/09
1.7K0
机器学习如何为业务赋能?
Python 是一种胶水语言,可以粘很多家伙,例如:Python + 网站开发、Python + 自动化测试、Python + 自动化运维、Python + AI、Python + 数据分析 ... ...
一猿小讲
2019/08/16
4880
机器学习如何为业务赋能?
相关推荐
机器学习笔记——特征标准化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验