cygwin

機械学習をやろうとしたらデータクレンジングに明け暮れていた件(2) ~大量のファイルを分割アーカイブする~

技研のまつけんです。

前回の記事では、複数のアーカイブを展開してファイルやフォルダの名前の傾向を調べる過程を紹介しました。今回は、その逆の「多数のファイルを分活してアーカイブする」ためのシェルスクリプトを紹介したいと思います (前回の「まとめ」では違う予告をしましたが、その前に今回の作業をする機会があったので、先に記事にしました)。

自分がデータクレンジングしたものを誰かに渡すことがあります。その際、メールで送るにしてもサーバに置くにしても、再びアーカイブ (+圧縮) すると便利なのですが、数ギガバイトのzipやtgzだと色々と不便です。そこで、分割してアーカイブしたくなります。それを実現するのに、真っ先に思いつく方法は、a、b、cという3つのフォルダがあるのであれば (そして、3つのフォルダ内のデータ量に偏りが無いのであれば)、

のように

  • aで始まるものは、a.tgz
  • bで始まるものは、b.tgz
  • cで始まるものは、c.tgz

としてしまうことでしょう。

続きを読む

機械学習をやろうとしたらデータクレンジングに明け暮れていた件(1) ~フォルダ・ファイル名の傾向と対策~

技術研究所のまつけんです。

今回はデータクレンジングの話です。データクレンジングというのは、データを機械学習に流し込む前に全体的に眺めて、必要なら整形する作業です。KaggleやSIGNATEなどのコンテストではクレンジングされた状態のデータが提供されますが、実際の業務では、必ずしもそうとは限りません。そして、それはデータの中身に限った話ではありません。フォルダやファイルの名前が一定の規則に従ってない場合、それを規則的な名前にするところから始まります (規則的な名前でないとループなどで処理したりするのに不便です)。

機械学習に使う大きなデータをよそから転送する際、たいてい、DVDやアップローダなどで受け取ります。後者の場合はzipなどでアーカイブ (および圧縮) されていることが多いのですが、zipファイルが数十個ある場合もあります。今回の記事では、転送したデータを確認し、フォルダ名、ファイル名などを扱いやすい形に変換する過程について、説明します。データ数が膨大な場合を想定していますので、多くはbashスクリプトにより自動化しています。といっても、UNIX/Linuxをインストールする必要があるわけではありません。今から紹介する手法はcygwin上で行うことを想定しています (スクリプトは全てcygwinのbashで動作確認しています)。

今回は、機械学習用のデータについて、フォルダ構成を確認し、必要に応じて整形する手順を紹介したいと思います。

続きを読む