2. 数据分割

数据分割用于将数据集分为训练集和测试集,确保模型训练和性能评估的准确性。关键在于保持数据随机性以避免模式化,并保证足够大的训练集以提高模型稳定性。本文介绍了Python中使用sklearn库和手动循环分割数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 为什么是数据分割

通过把数据集 (Dataset) 中的数据内容分割成训练集 (Train Set) 和测试集 (Test Set),用训练集来训练模型,再通过测试集来测试模型的性能,如果测试通过,才会考虑投放在实际应用中。


2. 数据分割的注意事项

2.1. 保证数据的随机性

如果数据分割是按照一定的规律进行的话,那么训练出来的模型也会被“模式化”,一旦遇到特殊值,就会判断出错。

2.2. 保证训练集的大小

训练的数量越大,模型的准确率一般会更高。如果训练集太小,模型就“不稳定”,在测试中遇到特殊值,就容易得到错误的结果。


3. Python实现方法

Github代码:https://github.com/JasonDean-1/MachineLearningDemo/blob/master/DataPreprocessing/1.DataSplit.py

3.1. 调用sklearn的包

# -*- coding: utf-8 -*-

"""
Package Version(s):
    sklearn: 0.18
"""

from sklearn.datasets import load_digits

# load in datasets
datasets = load_digits()
# Print out the datashape.
print "The length of dataset is: ", datasets.data.shape
# Ans = (1797L, 64L)

from sklearn.cross_validation import train_test_split
# Split the data
x_train, x_test, y_train, y_test = train_test_split( datasets.data, datasets.target, test_size = 0.25, random_state = 42 )
# Print out the datashape.
print "The length of train set is: ", y_train.shape
# Ans = (1347L,)
print "The length of test set is: ", y_test.shape
# Ans = (450L,)


----------
Output:
# The length of dataset is: (1797L, 64L)
# The length of train set is: Ans = (1347L,)
# The length of test set is: Ans = (450L,)



3.2. 通过循环来分割数据

# -*- coding: utf-8 -*-

"""
Package Version(s):
    sklearn: 0.18
"""

from sklearn.datasets import load_digits

# load in datasets
datasets = load_digits()
# Print out the datashape.
print "The length of dataset is: ", datasets.data.shape
# Ans = (1797L, 64L)
x_train = []
x_test = []
y_train = []
y_test = []

# Split the data
x_test = [datasets.data[i] for i in range(len(datasets.data)) if i%4 == 0]
x_train = [datasets.data[i] for i in range(len(datasets.data)) if i%4 != 0]
y_test = [datasets.target[i] for i in range(len(datasets.data)) if i%4 == 0]
y_train = [datasets.target[i] for i in range(len(datasets.data)) if i%4 != 0]

# Print out the datashape.
print "The length of train set is: ", len( y_train )
# Ans = 1347
print "The length of test set is: ", len( y_test )
# Ans = 450


----------
Output:
# The length of dataset is: (1797L, 64L)
# The length of train set is: Ans = 1347
# The length of test set is: Ans = 450
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值