1

X調査回答者の人口統計情報を含む大規模なデータ セット があります。データは大部分がカテゴリ別であるため、各行にXは、1 人の回答者の性別、人種、興味など、一連の文字列値の特徴が含まれています。の各列Xは、単一の応答カテゴリです。このデータ セットを MATLAB/Octave の大きなセル配列に読み込みました (両方でテスト)。データセット内の各サンプルと他のすべてのサンプル間の Jaccard 距離を測定したいと思います。基本的に私がやりたいことはこれです:

dist = zeros(size(X,1));    % Initialize my distance matrix
for ii = 1:size(X,1)
    for jj = ii:size(X,1)   % Only need the upper triangle since dist is symmetric
        % Find the Jaccard distance between the ii-th and jj-th respondent
        dist(ii,jj) = 1 - numel(intersect(X(ii,:), X(jj,:))) / numel(union(X(ii,:), X(jj,:)));
    end
end

明らかに、コードをベクトル化したいことを除いて。と を使用cellfunbsxfunてベクトル化しようとしましたが、次のようなことをすると:

res = cellfun('intersect', X, X, 'UniformOutput', false);

と同じサイズのセル配列を取得しますX。ここで、(i,j) 要素は と同等intersect(X(i,j), X(i,j))です。基本的に (ij) セル内の一意の文字。これは私を助けません。私がしようとすると:

res = bsxfun('intersect', X, X);

任意のセルが取る一意の値をすべて含む (と思う) 1 つの長いセル配列を取得しXます。これも私を助けません。

この議論の冒頭でコードをベクトル化できるソリューションが欲しいです。そうする方が簡単なら、X任意の行から最小 (または最大) の Jaccard 距離を持つのサブセットを見つけるコードは、Xまさに私が必要としているものです。

前もって感謝します!

編集:の上三角のみを計算するようにループ コードを変更しましたdist。それでも時間がかかりすぎます。ベクトル化されていないという事実は、哲学的なレベルで私を悩ませています。

編集:X入力によって与えられるの最初の要素は次のX(1,:)とおりです。

ans =
{
  [1,1] = Non - U.S. Citizen
  [1,2] = Denied
  [1,3] = M
  [1,4] = CHINA
  [1,5] = Full Time
  [1,6] = D-Asian American or Pacific Islander
  [1,7] = 
  [1,8] = 
  [1,9] = MSME
  [1,10] = 
}

これは、実際の調査結果を待っている間、アルゴリズムを開発するためのデータをテストしているだけですが、調査結果は同様の形式になります。

編集:からの追加データですXが、CSV 形式は次のとおりです。

Non - U.S. Citizen,Denied,M,INDIA,Full Time,E-Other,,,MSME,
Non - U.S. Citizen,Denied,F,INDIA,Full Time,D-Asian American or Pacific Islander,,,MSME,DESIGN
Non - U.S. Citizen,Denied,M,INDIA,Full Time,E-Other,,,MS,
Non - U.S. Citizen,Denied,M,IRAN,Full Time,B-Caucasian American Non-Hispanic,,,PhD,NANO
Non - U.S. Citizen,Left Without Degree,M,JORDAN,Full Time,E-Other,,,,
Non - U.S. Citizen,Denied,F,IRAN,Full Time,E-Other,,,PhD,BIOENG
,Not Attending,M,,Full Time,,,,PhD,
Non - U.S. Citizen,Not Attending,F,IRAN,Full Time,I-International Student,,,PhD,
Non - U.S. Citizen,Denied,M,BANGLADESH,Full Time,E-Other,,,PhD,NANO
Non - U.S. Citizen,Denied,M,BANGLADESH,Full Time,E-Other,,,MS,
4

1 に答える 1