0

多くの数値を含む疎行列 .txt ファイルがありますが、ほとんどは 0 です。この .txt ファイルのサンプルを次に示します。

0 0 0.271178 0 0 0 0.538776 0 -0.631228 0 0 -0.501485 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.438643 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.498918 0 0 0 0 0 0 0 0.475561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.370479 0 -0.300765 0 -1.10987 0 0 0.163637 0 0 0 0 0 0 0 0 0 0 0.304006 0 0.181697 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.261758 0 0 0 0.153415 0.17412 0 -0.129725 0 0.17598 0 0 0 0 0 0 0 0 6 0 0 5 0.5 -0.211302 0 0 0 0 0 0 0.213277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0698458 0 0 0 0.661972 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.376654 0 0 -0.604655 0 0 0 0 0 0 0 0 0.301025 0 0 -0.431324 0 0 -0.139445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.404718 0.610013 -0.286108 0 0.46045 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.193543 0 0 0 0 0 0 0.315063 0 0 -0.285598 0 0 0.206607 0139445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.404718 0.610013 -0.286108 0 0.46045 0 0 0 0 0 -0.193543 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 7 0 8 2 8139445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.404718 0.610013 -0.286108 0 0.46045 0 0 0 0 0 -0.193543 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 7 0 8 2 8

私がしなければならないことは、このファイルを調べて、データをWEKA の 認識可能なファイル形式である .arff に変換できるようにすることです。これにより、データ セットに対してデータ マイニング アルゴリズムを実行できるようになります。誰もこれを行う方法を知っていますか? 私の問題に似た StackOverflow でいくつかの同様の質問を見つけましたが、それらは AWK 言語のスクリプトを使用しており、以前に .awk プログラムを使用したことがないため、それらのプログラムを正しく実行できませんでした。これらの投稿へのリンクは次のとおりです: 1 2

4

2 に答える 2

1

ARFF ファイル形式とリンクした質問を確認しました。

awk プログラムをシェル スクリプト内に簡単に埋め込むことができるので、次のようにします。

#!/bin/sh
file=$1
awk '
    BEGIN {print "@RELATION something\n"} 
    {
        data = sep = ""
        for (i=1; i<=NF; i++) {
            if ($i != 0) {
                printf "@ATTRIBUTE a_%d NUMERIC\n", i
                data = data sep $i
                sep = ","
            }
        print ""
        print "@DATA"
        print data
    }
' "$file"

次を使用してスクリプトを呼び出しbash script.sh data_fileます。

@RELATION something

@ATTRIBUTE a_3 NUMERIC
@ATTRIBUTE a_7 NUMERIC
@ATTRIBUTE a_9 NUMERIC
@ATTRIBUTE a_12 NUMERIC
@ATTRIBUTE a_33 NUMERIC
@ATTRIBUTE a_39 NUMERIC
@ATTRIBUTE a_52 NUMERIC
@ATTRIBUTE a_58 NUMERIC
@ATTRIBUTE a_70 NUMERIC
@ATTRIBUTE a_72 NUMERIC
@ATTRIBUTE a_74 NUMERIC
@ATTRIBUTE a_77 NUMERIC
@ATTRIBUTE a_84 NUMERIC
@ATTRIBUTE a_86 NUMERIC
@ATTRIBUTE a_124 NUMERIC
@ATTRIBUTE a_128 NUMERIC
@ATTRIBUTE a_129 NUMERIC
@ATTRIBUTE a_131 NUMERIC
@ATTRIBUTE a_133 NUMERIC
@ATTRIBUTE a_141 NUMERIC
@ATTRIBUTE a_144 NUMERIC
@ATTRIBUTE a_152 NUMERIC
@ATTRIBUTE a_185 NUMERIC
@ATTRIBUTE a_189 NUMERIC
@ATTRIBUTE a_207 NUMERIC
@ATTRIBUTE a_210 NUMERIC
@ATTRIBUTE a_216 NUMERIC
@ATTRIBUTE a_219 NUMERIC
@ATTRIBUTE a_222 NUMERIC
@ATTRIBUTE a_238 NUMERIC
@ATTRIBUTE a_239 NUMERIC
@ATTRIBUTE a_240 NUMERIC
@ATTRIBUTE a_242 NUMERIC
@ATTRIBUTE a_249 NUMERIC
@ATTRIBUTE a_257 NUMERIC
@ATTRIBUTE a_260 NUMERIC
@ATTRIBUTE a_263 NUMERIC

@DATA
0.271178,0.538776,-0.631228,-0.501485,0.438643,0.287754,-0.498918,0.475561,0.370479,-0.300765,-1.10987,0.163637,0.304006,0.181697,-0.261758,0.153415,0.17412,-0.129725,0.17598,0.56053,-0.211302,0.213277,0.0698458,0.661972,0.376654,-0.604655,0.301025,-0.431324,-0.139445,0.404718,0.610013,-0.286108,0.46045,-0.193543,0.315063,-0.285598,0.206607

ただし、それを出力したい場合はお知らせください。

于 2014-04-16T15:57:24.090 に答える
0

すばらしいスクリプトGlennですが、インデックスがなく、属性名に入れられていません。何かのようなもの:

@attribute a_0 numeric
@attribute a_1 numeric
@attribute a_2 numeric
@attribute a_3 numeric
...

@data
{3 0.271178,...}

これは、属性位置情報の欠落を避けるために必要なスパース ARFF 形式です。私の推奨事項は、密な形式 (CSV のみ) を使用し、WEKA フィルターを使用することですNonSparseToSparse

于 2014-04-20T22:09:45.220 に答える