12x202 のマトリックス (202 の機能を持つ 12 のインスタンス) があります。各 12 インスタンス間のマハラノビス距離を計算したいのですが、列の数はインスタンス (行) の数よりも大きくすることはできないようです。(12x11 行列の距離を計算するのに問題はありませんでしたが、11 個を超えるフィーチャがあると、linkage(X,'ward','mahalanobis');
またはmahal(X,X);
またはを使用して MATLAB でエラーが発生しますpdist2(X,X,'mahalanobis');
)
matlab - m< の行列 (mxn) のマハラノビス距離
12x202 のマトリックス (202 の機能を持つ 12 のインスタンス) があります。各 12 インスタンス間のマハラノビス距離を計算したいのですが、列の数はインスタンス (行) の数よりも大きくすることはできないようです。(12x11 行列の距離を計算するのに問題はありませんでしたが、11 個を超えるフィーチャがあると、linkage(X,'ward','mahalanobis')
もう少し簡単な解決策を次に示します。
Javascript コントローラー
$scope.carouselNext = function() {
$('#carousel-main').carousel('next');
}
$scope.carouselPrev = function() {
$('#carousel-main').carousel('prev');
}
HTML ビュー
<div id="carousel-main" class="carousel slide" data-ride="carousel">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="#carousel-main" data-slide-to="0" class="active"></li>
<li data-target="#carousel-main" data-slide-to="1"></li>
<!-- add indicators for any slides added -->
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<div id="slide1" class="item active" ng-swipe-right="carouselPrev()" ng-swipe-left="carouselNext()">
<!-- img or content here -->
</div>
<div id="slide2" class="item" ng-swipe-right="carouselPrev()" ng-swipe-left="carouselNext()">
<!-- img or content here -->
</div>
<!-- add more slides as needed -->
</div>
</div>
4
1 に答える
0
mahal 関数のmatlab ドキュメントを見ると、次のように書かれています。
X と Y は同じ数の列を持つ必要がありますが、異なる数の行を持つことができます。X は、列よりも多くの行を持たなければなりません。
私は統計が苦手なので、なぜこの条件が重要なのかはわかりませんが、効率的な理由と、12 のメジャーでは数が少なすぎるため、より多くのメジャーを使用することを検討してください。
あなたができることは、マハラボニス距離を自分で計算することです。同じドキュメントで式を取得するのは簡単です。また、マハラバノア距離のより良い計算がある例を示します。
マハラノビス距離は二次距離とも呼ばれます。これは、オブジェクトの 2 つのグループの分離を測定します。平均 と を持つ 2 つのグループがあるとします。マハラノビス距離は次の式で与えられます。
同じグループではなく、別のグループでも同様です。
いずれにせよ、これを使用できます:
function MD = my_MahalanobisDistance(X, Y)
[nX, mX] = size(X);
[nY, mY] = size(Y);
n = nX + nY;
if(mX ~= mY)
disp('Columns in X must be same as in Y')
else
xDiff = mean(X) - mean(Y);
cX = my_covariance(X);
cY = my_covariance(Y);
pC = nX/n*cX + nY/n*cY;
MD = sqrt(xDiff * inv(pC) * xDiff');
end
そして共分散について:
function C = my_covariance(X)
[n,m] = size(X);
Xc = X -repmat(mean(X),n,1);
C = Xc'* Xc/n;
これがお役に立てば幸いです
于 2016-08-25T08:17:58.880 に答える
12x202 のマトリックス (202 の機能を持つ 12 のインスタンス) があります。各 12 インスタンス間のマハラノビス距離を計算したいのですが、列の数はインスタンス (行) の数よりも大きくすることはできないようです。(12x11 行列の距離を計算するのに問題はありませんでしたが、11 個を超えるフィーチャがあると、linkage(X,'ward','mahalanobis')
もう少し簡単な解決策を次に示します。
Javascript コントローラー
$scope.carouselNext = function() {
$('#carousel-main').carousel('next');
}
$scope.carouselPrev = function() {
$('#carousel-main').carousel('prev');
}
HTML ビュー
<div id="carousel-main" class="carousel slide" data-ride="carousel">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="#carousel-main" data-slide-to="0" class="active"></li>
<li data-target="#carousel-main" data-slide-to="1"></li>
<!-- add indicators for any slides added -->
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<div id="slide1" class="item active" ng-swipe-right="carouselPrev()" ng-swipe-left="carouselNext()">
<!-- img or content here -->
</div>
<div id="slide2" class="item" ng-swipe-right="carouselPrev()" ng-swipe-left="carouselNext()">
<!-- img or content here -->
</div>
<!-- add more slides as needed -->
</div>
</div>
1 に答える
mahal 関数のmatlab ドキュメントを見ると、次のように書かれています。
X と Y は同じ数の列を持つ必要がありますが、異なる数の行を持つことができます。X は、列よりも多くの行を持たなければなりません。
私は統計が苦手なので、なぜこの条件が重要なのかはわかりませんが、効率的な理由と、12 のメジャーでは数が少なすぎるため、より多くのメジャーを使用することを検討してください。
あなたができることは、マハラボニス距離を自分で計算することです。同じドキュメントで式を取得するのは簡単です。また、マハラバノア距離のより良い計算がある例を示します。
マハラノビス距離は二次距離とも呼ばれます。これは、オブジェクトの 2 つのグループの分離を測定します。平均 と を持つ 2 つのグループがあるとします。マハラノビス距離は次の式で与えられます。
同じグループではなく、別のグループでも同様です。
いずれにせよ、これを使用できます:
function MD = my_MahalanobisDistance(X, Y)
[nX, mX] = size(X);
[nY, mY] = size(Y);
n = nX + nY;
if(mX ~= mY)
disp('Columns in X must be same as in Y')
else
xDiff = mean(X) - mean(Y);
cX = my_covariance(X);
cY = my_covariance(Y);
pC = nX/n*cX + nY/n*cY;
MD = sqrt(xDiff * inv(pC) * xDiff');
end
そして共分散について:
function C = my_covariance(X)
[n,m] = size(X);
Xc = X -repmat(mean(X),n,1);
C = Xc'* Xc/n;
これがお役に立てば幸いです