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

时间:2017-11-09 18:38:56

标签: python

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

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.

1 个答案:

答案 0 :(得分:0)

只需使用.extend代替.append即可解决您的问题。 .append将切片dataset[xxx]作为单个元素添加到列表中。另一方面,.extend会将dataset[xxx]中的所有元素添加到列表中。

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

主要功能:

trainingSet, testSet, validationSet = loadDataset('iris.data.txt')

loadDataset函数:

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