【发布时间】:2018-09-07 18:54:28
【问题描述】:
我的机器学习项目的第一部分是将庞大的数据集分成 3 部分,然后将它们用作训练数据集和测试数据集。该数据集包含 1000 万行,如下所示:
上图是我的数据集的截图。我不想更改列或行的顺序,所以随机在这里不起作用。如您所见,它们是由制表符分隔的 6 列,包含 1000 万行。我想将这些行分成 3 个单独的部分,其中前 3333333.333 行是我的 dataset1,然后第二个 3333333.333 行是 dataset2,其余的是 dataset3。所以3个不同的文本文件,组件(列)的顺序没有改变。 我正在使用 Spyder3,并在您的帮助下编写了以下代码:
f = open ( 'pr_data.txt' , 'r') """Reading File"""
l = [ map(float,line.strip().split()) for line in f ]
no_samples = len(l)
data1 = l[0:int(no_samples/3)][:]
data2 = l[int(no_samples/3):int(no_samples*2/3)][:]
data3 = l[int(no_samples*2/3):no_samples][:]
file = open('data1.txt','w')
for row in data1:
file.writelines(["%s\t" % item for item in row])
file.writelines("\n")
file.close()
file = open('data2.txt','w')
for row in data2:
file.writelines(["%s\t" % item for item in row])
file.writelines("\n")
file.close()
file = open('data3.txt','w')
for row in data3:
file.writelines(["%s\t" % item for item in row])
file.writelines("\n")
file.close()
通过上面的代码,在同一个目录下创建了3个文本文件,但问题是:数字的精度发生了变化。例如,0 和 1 更改为 0.0 和 1.0。此外,其中一些不在同一列中。请看data1第一行的截图,如下:
请告诉我我的代码有多正确?
【问题讨论】:
-
你想如何分割文件?随机拆分?
-
另外,使用with时不需要关闭文件。
-
感谢您的回答。不,不是随机的。正如您在我的数据集的屏幕截图中看到的那样,它们是由选项卡分隔的 6 列,包含 1000 万行。我想将这些行分成 3 个单独的部分,其中前 3333333.333 行是我的 dataset1,然后第二个 3333333.333 行是 dataset2,其余的是 dataset3。所以 3 个不同的文本文件,组件(列)的顺序没有改变。
-
别忘了缩进
with...之后的行 -
请查看编辑后的问题,并将data1的截图与原始数据集的截图进行比较。
标签: python python-3.x machine-learning dataset