我正在开展一个机器学习项目,我有一个以zip形式存储的10,000个培训文件。我想在zip文件中的每个文件上训练我的模型,我听说如果你多次训练整个数据集,最好随机化训练数据的顺序。这个项目是用Java完成的。
所以我想知道是否有可能在Java中以随机顺序迭代ZipFile
中的条目?以下是我提到的API:https://docs.oracle.com/javase/7/docs/api/java/util/zip/ZipFile.html
答案 0 :(得分:2)
使用zipFile.entries()
迭代zip文件,并将zip条目添加到ArrayList<ZipEntry>
。
通过调用Collections.shuffle(list)
随机化该列表。
您现在可以简单地迭代随机列表并调用zipFile.getInputStream(zipEntry)
。
答案 1 :(得分:1)
您可以使用以下内容作为起点:
ZipFile f = new ZipFile("path_to_file");
Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) f.entries();
List<ZipEntry> entryList = new ArrayList<ZipEntry>();
while(entries.hasMoreElements()){
ZipEntry enrty = entries.nextElement();
entryList.add(enrty);
}
Collections.shuffle(entryList);
for(ZipEntry e:entryList){
System.out.println(e.getName());
}