1

私のmacosは私のtrainデータセットファイルディレクトリの下に.DS_Storeを生成し、load_filesはそれをロードして次のような例外を発生させます

UnicodeDecodeError:'utf8'コーデックは位置1116のバイト0xffをデコードできません

.DS_Storeファイルを削除する以外にフィルタリングする方法を知りたいですか?

4

3 に答える 3

3

ドキュメントを見ると、直接フィルタリングする方法はないようですload_files(つまり、カテゴリをホワイトリストに登録することはできますが、カテゴリ内のファイルをホワイトリストに登録したり、どちらのレベルでもブラックリストに登録したりすることはできません)。

scikit-learnプロジェクトに機能リクエストを提出することを検討することをお勧めします。または、隠しファイル(プラットフォームに合わせて適切に定義されていますが、名前がで始まるファイルを含める必要があるOS Xおよびその他のPOSIXシステム.)が読み込まれるのはバグと見なし、バグレポートを提出することもできます。

一方、load_content設定できるフラグがあります。

load_content:ブール値、オプション(デフォルト= True)

さまざまなファイルのコンテンツをロードするかどうか。trueの場合、テキスト情報を含む'data'属性が返されるデータ構造に存在します。そうでない場合、filenames属性はファイルへのパスを示します。

を渡すFalseと、ファイル名が検索されます。ファイル名は、必要に応じてフィルタリングして(たとえば、filenames = (filename for filename in ret.filenames if not filename.startswith('.')))、手動でロードできます。

これは、特定のツールで利用できる最良のソリューションのようです。

一方、load_files実際にどれほど単純であるかを考えると(特に、またはなどの追加機能を使用しない場合categoriesshuffle、単に使用せずに、os.walkまたは単にを使用する方が簡単な場合がありos.listdirます。この場合、ファイルが任意の深さではなく、正確に2レベルの深さであるとすると、後者の方がおそらく単純です。

def getfilenames(category):
    return [filename for filename in os.listdir(category)
            if not filename.endswith('.')]
categoryfiles = [getcategory(os.path.join(rootpath, category)
                 for category in os.listdir(rootpath)]
于 2013-01-01T07:19:11.713 に答える
0

無視するファイルのリストを受け入れる追加のパラメーター「ignore_files」を受け入れるように、sklearn load_filesを変更しました。sklearn の代わりに、この load_files の定義を使用できます。無視する必要があるファイルをフィルタリングしているだけなので、load_files と同じ結果が返されます。

利用方法 :

load_files(dir_path,ignore_files=".DS_Store")

要旨のソース

于 2015-07-28T09:30:49.057 に答える
0

ソースを一目見ただけで、ファイルload_filesを削除するしか選択肢がないことがわかります。.DS_Store

documents = [join(folder_path, d)
    for d in sorted(listdir(folder_path))]

.DS_Store (汚染について真剣に考えたい場合は、深刻なカーネル拡張機能があります:https://github.com/binaryage/asepsis)。

于 2013-01-01T07:22:26.377 に答える