Python 如何将数据拆分为训练集、测试集和验证集?

Python 如何将数据拆分为训练集、测试集和验证集?,python,Python,以下是我的代码: 这里是主要功能 trainingSet=[] testSet=[] validationSet=[] loadDataset('iris.data.txt', trainingSet, testSet,validationSet) 这是loadDataset函数 def loadDataset(filename, trainingSet=[] ,testSet=[],validationSet=[]): with open(filename

以下是我的代码: 这里是主要功能

trainingSet=[]
    testSet=[]
    validationSet=[]

    loadDataset('iris.data.txt', trainingSet, testSet,validationSet)
这是loadDataset函数

def loadDataset(filename,  trainingSet=[] ,testSet=[],validationSet=[]):
    with open(filename, 'rb') as csvfile:
        lines = csv.reader(csvfile)
        dataset = list(lines)
        for x in range(len(dataset)-1):
            for y in range(4):
                dataset[x][y] = float(dataset[x][y])
            random.shuffle(dataset)


        trainingSet .append(dataset[:106])
        testSet.append(dataset[106:128])
        validationSet.append(dataset[128:150])            
“loadDataset获取wine数据集csv并将其转换为浮动列表。然后拆分数据。”


我正在尝试将我的数据拆分为70-15-15。但当我打印每个列表的长度时,它给出1

只需使用
.extend
而不是
。append
就可以解决您的问题
.append
将切片
数据集[xxx]
作为单个元素添加到列表中<另一方面,code>.extend将
数据集[xxx]
中的所有元素添加到列表中

但是,如果只调用一次
loadDataSet
,如示例中所示,则无需初始化空数据集,并且可以直接返回范围

主要功能:

trainingSet, testSet, validationSet = loadDataset('iris.data.txt')
def loadDataset(filename):
    with open(filename, 'rb') as csvfile:
        lines = csv.reader(csvfile)
        dataset = list(lines)
        for x in range(len(dataset)-1):
            for y in range(4):
                dataset[x][y] = float(dataset[x][y])
            random.shuffle(dataset)


        trainingSet = dataset[:106]
        testSet = dataset[106:128]
        validationSet = dataset[128:150]
        return trainingSet, testSet, validationSet
loadDataset函数:

trainingSet, testSet, validationSet = loadDataset('iris.data.txt')
def loadDataset(filename):
    with open(filename, 'rb') as csvfile:
        lines = csv.reader(csvfile)
        dataset = list(lines)
        for x in range(len(dataset)-1):
            for y in range(4):
                dataset[x][y] = float(dataset[x][y])
            random.shuffle(dataset)


        trainingSet = dataset[:106]
        testSet = dataset[106:128]
        validationSet = dataset[128:150]
        return trainingSet, testSet, validationSet

只需使用
.extend
而不是
.append
就可以解决您的问题
.append
将切片
数据集[xxx]
作为单个元素添加到列表中<另一方面,code>.extend将
数据集[xxx]
中的所有元素添加到列表中

但是,如果只调用一次
loadDataSet
,如示例中所示,则无需初始化空数据集,并且可以直接返回范围

主要功能:

trainingSet, testSet, validationSet = loadDataset('iris.data.txt')
def loadDataset(filename):
    with open(filename, 'rb') as csvfile:
        lines = csv.reader(csvfile)
        dataset = list(lines)
        for x in range(len(dataset)-1):
            for y in range(4):
                dataset[x][y] = float(dataset[x][y])
            random.shuffle(dataset)


        trainingSet = dataset[:106]
        testSet = dataset[106:128]
        validationSet = dataset[128:150]
        return trainingSet, testSet, validationSet
loadDataset函数:

trainingSet, testSet, validationSet = loadDataset('iris.data.txt')
def loadDataset(filename):
    with open(filename, 'rb') as csvfile:
        lines = csv.reader(csvfile)
        dataset = list(lines)
        for x in range(len(dataset)-1):
            for y in range(4):
                dataset[x][y] = float(dataset[x][y])
            random.shuffle(dataset)


        trainingSet = dataset[:106]
        testSet = dataset[106:128]
        validationSet = dataset[128:150]
        return trainingSet, testSet, validationSet

欢迎来到StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。特别是,对样本数据集进行硬编码,并在加载数据时(通过函数)打印数据。您可能需要
trainingSet.extend(dataset[:106])
。一些
print
语句可以帮助您了解发生了什么。例如<代码>打印培训集和
打印镜头(培训集[0])
。这些print语句适用于Python2.7——如果您使用的是Python3.x,那么您需要额外的参数,例如:
print(trainingSet)
。欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。特别是,对样本数据集进行硬编码,并在加载数据时(通过函数)打印数据。您可能需要
trainingSet.extend(dataset[:106])
。一些
print
语句可以帮助您了解发生了什么。例如<代码>打印培训集和
打印镜头(培训集[0])
。这些print语句适用于Python2.7——如果您使用的是Python3.x,那么您需要额外的参数,例如:
print(trainingSet)