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
明らかに、コードをベクトル化したいことを除いて。と を使用cellfun
しbsxfun
てベクトル化しようとしましたが、次のようなことをすると:
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,