2

何千もの属性 (各列は属性を示します) を含むテキスト ファイルと、各行のラベルを示す列があります。ラベルである最後の列を除いて、すべてのデータは数値です。この列は文字列です。gscatter() などの matlab 分類関数を使用してデータを分類したいと考えています。問題は、matlab でロード ファイル名を使用してデータをロードすると、このエラーが発生することです (「いいえ」はラベルの 1 つです)。

ASCII ファイル C:\Program Files\MATLAB\R2011b\train\train.txt の行番号 1 に不明なテキスト "no" があります。

実際、matlab関数を使用してデータを分類できるようにするために、matlabにデータをロードする方法がわかりません。

4

2 に答える 2

2

読み込みは、数値データのみを含む .mat ファイルおよびテキスト ファイルに対してのみ行われるため、エラーが発生します。

ただし、テキスト ファイルを読み取る関数は多数あります。データ ファイルの形式に応じて、次のいずれかを使用できます。

  • textreadはかなり一般的ですが、形式を指定し、ファイルを開いたり閉じたりする必要があります。
  • csvreadは数値のコンマ区切り値のみを読み取りますが、形式を指定する必要はありません。
  • importdataは非常に一般的で便利です
  • fscanfは textread に似ています

あなたが扱っている属性の数を考えると、私は間違いなくimportdata自分で行きます.

于 2012-06-03T17:02:56.227 に答える
1

ここに例があります

train.txt

1,2,3,4,5,6,no
2,3,4,5,6,7,yes

myLoadScript.m

numAttribs = 6;        %# number of attributes (excluding the label)
frmt = [repmat('%f ',1,numAttribs) '%s'];
fid = fopen('train.txt', 'rt');
C = textscan(fid, frmt, 'Delimiter',',', 'CollectOutput',1);
fclose(fid);

結果:

>> C{1}
ans =
     1     2     3     4     5     6
     2     3     4     5     6     7

>> C{2}
ans = 
    'no'
    'yes'

特定のファイル形式での作業に簡単に適応できるはずです...

于 2012-06-03T19:25:08.250 に答える