필터 지우기
필터 지우기

unable to optimise the following using linprog

조회 수: 1 (최근 30일)
Malloju Dinesh
Malloju Dinesh 2022년 2월 9일
댓글: Abolfazl Chaman Motlagh 2022년 2월 9일
I am trying to implement equation 9(in the image attached below) in linprog .. the v vector has (w,r): w is the weights vector which i have to find so that r is min. . i am trying to generate weights vector from this optmisation to be used in KNN(k-nearest neighbors) algorithm. I have evaluated the A and b matrices from the data set ...
1)The size of my data set is 100*4(4 is the number of features which is D)
2)size of f , v vector is (D+1) which is 5
3)size of A(10000*5), b(10000*1).I have evaluated A and b matrices from the data set.So i have A and b.
4)The vector to be optmised is v which is represented as(w,r).w is weights vector(size 4) which i have to find so that r
is minimum.
5)r is the maximum of r1,r2. r1:maximum of intraclass1 distance. r2: maximum of intraclass2 distance.
The each observation of data set belongs to two classes (1 or 2).
6)distance is the mahalanobis weighted distance between two observations.
Let me know step by step approach on how to solve it .Thanks . if any further information is required let me know ..thanks

채택된 답변

Abolfazl Chaman Motlagh
Abolfazl Chaman Motlagh 2022년 2월 9일
HI. here's how you should do it:
First i create a sample database for my self to use as parameters: (i use 100 points in 4D feature space with 3 label, change every part for your problem)
N = 100; % number of points
D = 4; % Dimension of feature space
Class_count = 3; % number of Classes
%% Create random dataset for parametrization
X = rand(N,D); % Position of Points in feature space
Y = randi([1 Class_count],N,1); % Label of Points
Now let us create Matrix of Coefficients A, right-hand-side vector B and Cost weights f.
f = [zeros(1,D) 1];
A = zeros(N^2,D+1);
b = zeros(N^2,1);
for i=1:N
for j=1:N
I = (i-1)*N + j;
if Y(i)==Y(j)
A(I,:) = [((X(i,:)-X(j,:)).^2) -1];
b(I) = 0;
else
A(I,:) = [-((X(i,:)-X(j,:)).^2) 0];
b(I) = -1;
end
end
end
lb = zeros(D+1,1); % lower bound
Now time to use linprog:
Solution = linprog(f,A,b,[],[],lb,[]) % no equality constraint and no upper bound
Optimal solution found.
Solution = 5×1
60.0201 85.0521 34.1626 70.6886 151.5027
W = Solution(1:D)
W = 4×1
60.0201 85.0521 34.1626 70.6886
  댓글 수: 2
Malloju Dinesh
Malloju Dinesh 2022년 2월 9일
Wow.. you made it very very easy ... Thanks a lot ... it made my work a lot easy ..
Abolfazl Chaman Motlagh
Abolfazl Chaman Motlagh 2022년 2월 9일
Happy to help.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by