PDA

View Full Version : همپوشان



sama.66
دوشنبه 30 تیر 1393, 15:20 عصر
سلام
چجوری میتونم یک پلاک (پلاک خودرو که به صورت مستطیله) روبه 3مربع همپوشان تقسیم کنم

sama.66
دوشنبه 30 تیر 1393, 19:19 عصر
میشه راهنمایی کنید ممنون میشم 121371

sama.66
دوشنبه 30 تیر 1393, 21:52 عصر
لطفا یکی راهنمایی کنه!!!!!!!!!:ناراحت::ناراحت:
میخوام ازیک پلاک مستطیل شکل ،3تامربع همپوشان درست کنم طبق شکلی که فرستادم،بعدهیستوگرام 59نقطه ای و241نقطه ای بگیره،یعنی 3تامربع که هرکدام59+241نقطه داره

rahnema1
دوشنبه 30 تیر 1393, 21:55 عصر
اگه pelak تصویر پلاک باشه و مربعها هم با m1,m2,m3 مشخص بشه

tool=size(pelak,2);
arz=size(pelak,1);
m1=pelak(:,1:arz);
m2=pelak(:,tool/2-arz/2:tool/2+arz/2);
m3=pelak(:,tool-arz:tool);

sama.66
دوشنبه 30 تیر 1393, 22:38 عصر
الان این کدنمایشش به این صورته
یه سری اعداد مشخص نیست وبه صورت شکلی که فرستادم براتون نیست

rahnema1
دوشنبه 30 تیر 1393, 22:40 عصر
با این حساب باید مستطیل همپوشان درست کنیم درسته؟

sama.66
دوشنبه 30 تیر 1393, 22:45 عصر
بله باید همپوشان باشه

rahnema1
دوشنبه 30 تیر 1393, 22:49 عصر
tool=size(pelak,2);
arz=size(pelak,1);
m1=pelak(:,1:tool/2.5);
m2=pelak(:,tool/2-tool/2.5/2:tool/2+tool/2.5/2);
m3=pelak(:,tool-tool/2.5:tool);

sama.66
دوشنبه 30 تیر 1393, 23:07 عصر
مرسی ،منظورازهیستوگرام 59نقطه ای و241 نقطه ای چیه ؟؟که باید واسه هرمربع یه هیستوگرام 59+241نقطه ای بگیرم و ذخیره کنم تو یه فایل

rahnema1
دوشنبه 30 تیر 1393, 23:14 عصر
توی بحث lbp یکی از گزینه ها u2 بود که اگر با 8 همرا باشه تعداد خانه های هسیتوگرامش 59 تا میشه و اگه با 16 همراه باشه تعداد خانه هیستوگرام 243 میشه

getmapping(8,'u2');
getmapping(16,'u2');

sama.66
دوشنبه 30 تیر 1393, 23:46 عصر
میشه این لطفم بکنید میخوام هیستوگرام هر مربع رو بگیرم(مربع های مساوی) یعنی 3تامربع که هرکدام 59+241نتقطه داره،یعنی یک پلاک دارای (59+241)*3 داده باشه

rahnema1
سه شنبه 31 تیر 1393, 08:49 صبح
میشه این لطفم بکنید میخوام هیستوگرام هر مربع رو بگیرم(مربع های مساوی) یعنی 3تامربع که هرکدام 59+241نتقطه داره،یعنی یک پلاک دارای (59+241)*3 داده باشه

دستورالعمل lbp که داخل فایلش بود این جوره

map1=getmapping(8,'u2');
map2=getmapping(16,'u2');
SP=[-1 -1; -1 0; -1 1; 0 -1; -0 1; 1 -1; 1 0; 1 1];
H11=LBP(m1,SP,map1,'h');
H12=LBP(m1,SP,map2,'h');
H21=LBP(m2,SP,map1,'h');
H22=LBP(m2,SP,map2,'h');
H31=LBP(m3,SP,map1,'h');
H32=LBP(m3,SP,map2,'h');
H=[H11,H12;H21,H22;H31,H32];

sama.66
سه شنبه 31 تیر 1393, 13:23 عصر
این برنامه کامل اجرانمیشه ،میشه به صورت کلی کداروبذارید اینجاببینم مشکلم چیه

rahnema1
سه شنبه 31 تیر 1393, 13:46 عصر
این برنامه کامل اجرانمیشه ،میشه به صورت کلی کداروبذارید اینجاببینم مشکلم چیه

اون m ها را که از پلاک به دست آوردیم

sama.66
سه شنبه 31 تیر 1393, 13:51 عصر
بله mبدست اومد این کدهم واسه هیستوگرامشه ولی اجرانمیشه

rahnema1
سه شنبه 31 تیر 1393, 13:53 عصر
بله mبدست اومد این کدهم واسه هیستوگرامشه ولی اجرانمیشه

کجا خطا می ده؟

sama.66
سه شنبه 31 تیر 1393, 13:58 عصر
توی workspacفقط H11 رومیخونه بقیه ارورمیده

rahnema1
سه شنبه 31 تیر 1393, 14:03 عصر
لطفا دقیقا بگید چه خطاییه یا یه عکس از صفحه بگیرید بذارید تا بدونم چه خطاییه

sama.66
سه شنبه 31 تیر 1393, 14:07 عصر
Error in Untitled (line 21)
H12=LBP(m1,SP,map2,'h');

rahnema1
سه شنبه 31 تیر 1393, 14:14 عصر
Error in Untitled (line 21)
H12=LBP(m1,SP,map2,'h');

اصلاح شد

H11=LBP(m1,1,8,map1,'h');
H12=LBP(m1,2,16,map2,'h');
H21=LBP(m2,1,8,map1,'h');
H22=LBP(m2,2,16,map2,'h');
H31=LBP(m3,1,8,map1,'h');
H32=LBP(m3,2,16,map2,'h');

sama.66
سه شنبه 31 تیر 1393, 14:27 عصر
مرسی،Hبه اینصورت نشون داده میشه121407

sama.66
سه شنبه 31 تیر 1393, 15:19 عصر
:تشویق::تشویق::تشویق:

sama.66
سه شنبه 31 تیر 1393, 16:29 عصر
اگه بخوام (241+59) lbp روی کل مستطیل اجرابشه به این صورت میشه؟؟
tool=size(pelak,2);

arz=size(pelak,1);

map1=getmapping(8,'u2');
map2=getmapping(16,'u2');
SP=[-1 -1; -1 0; -1 1; 0 -1; -0 1; 1 -1; 1 0; 1 1];

H11=LBP(m1,1,8,map1,'h');
H12=LBP(m1,2,16,map2,'h');

rahnema1
سه شنبه 31 تیر 1393, 18:10 عصر
مرسی،Hبه اینصورت نشون داده میشه

فکر کنم باید این دستور اجرا بشه:
plot(H')

rahnema1
سه شنبه 31 تیر 1393, 18:13 عصر
اگه بخوام (241+59) lbp روی کل مستطیل اجرابشه به این صورت میشه؟؟


map1=getmapping(8,'u2');
map2=getmapping(16,'u2');
H11=LBP(pelak,1,8,map1,'h');
H12=LBP(pelak,2,16,map2,'h');
H=[H11,H12];

sama.66
سه شنبه 31 تیر 1393, 18:34 عصر
نیازی هست که حتما کد size بنویسم سایزشوبرگردونه؟؟؟

rahnema1
سه شنبه 31 تیر 1393, 18:52 عصر
نیازی هست که حتما کد size بنویسم سایزشوبرگردونه؟؟؟

نه دیگه چون نیازی به همپوشان نداریم

sama.66
سه شنبه 31 تیر 1393, 19:11 عصر
مرسی خیلی لطف دارید که وقتتون رو دراختیارمون میذارید واقعا ممنونم
یه سوال دیگه هم دارم،چطوری میتونم مجموع این lbpهارو(3مربع+یک مستطیل) تو یک برنامه داشته باشم ( (241+59)*3 + 59+241 )؟باید Hهارو باهم جمع کنم؟؟؟

rahnema1
سه شنبه 31 تیر 1393, 19:17 عصر
مثلا اسم اون که 3*59+243 هست H1 باشه و اون دومی هم H2 باشه دستور ترکیب دو تا ماتریس این جوریه
H3=[H1;H2];

sama.66
سه شنبه 31 تیر 1393, 21:29 عصر
هیستوگرامی که تو مقاله گرفته شده به این شکله121416

sama.66
سه شنبه 31 تیر 1393, 21:31 عصر
ولی واسه برنامه ما به این شکل درمیادبایدداده های مختلف داشته باشه مشکل ازکجاست؟؟121417

rahnema1
سه شنبه 31 تیر 1393, 22:04 عصر
بالاخره معلوم نشد شما چیکار می خواهید بکنید
اون مقاله اومده بافت lbpرا برای کل تصویر به دست آورده( با شعاع 1و 8 نقطه نمونه) سپس اون تصویر lbp شده را به 9 قسمت همپوش تقسیم کرده و برای هر قسمت هیستوگرام به دست آورده و نهایتا هیستوگرامها را به هم چسبونده. بعد اومده یک هیستوگرام با شعاع 2و 8 نقطه نمونه برای کل تصویر و یک هیستوگرام دیگه با شعاع 2و16 نقطه نمونه برای کل تصویر به دست آورده و نهایتا این سه تا را به هم چسبونده

sama.66
سه شنبه 31 تیر 1393, 22:28 عصر
درسته ولی من میخوام بدونم چرا هیستوگرام ما اینقدداده هاش کمه؟؟به نظرنمیاداستاندارد باشه

rahnema1
چهارشنبه 01 مرداد 1393, 11:03 صبح
درسته ولی من میخوام بدونم چرا هیستوگرام ما اینقدداده هاش کمه؟؟به نظرنمیاداستاندارد باشه

فکر نکنم کم باشه. اگه هیستو گرامهای مختلف را به هم پیوند بزنیم زیاد میشه :)

sama.66
چهارشنبه 01 مرداد 1393, 11:38 صبح
کدامون که درسته ولی به استادم نشون دادم میگه هیستوگرامش به این شکل نباید باشه121443

rahnema1
چهارشنبه 01 مرداد 1393, 11:50 صبح
کدامون که درسته ولی به استادم نشون دادم میگه هیستوگرامش به این شکل نباید باشه121443

من که گفتم این دستور را بزنید

plot(H')

sama.66
پنج شنبه 02 مرداد 1393, 17:28 عصر
سلام
من متوجه شدم که برنامه رو باید دقیقا مثل برنامه ی توی اون مقاله بنویسم با این تفاوت که به جای 9قسمت همپوش به سه قسمت همپوش تقسیم کنم،ولی این برنامه که با کمک شمانوشتیم یه کمی متفاوته،میشه راهنماییم کنین

sama.66
پنج شنبه 02 مرداد 1393, 18:57 عصر
درحقیقت کدهاروداریم با کمک شمانوشتیم ولی چون باید طبق مقاله پیش برم یکمی سردرگم شدم

rahnema1
پنج شنبه 02 مرداد 1393, 20:37 عصر
این جور باید بشه

tool=size(pelak,2);
arz=size(pelak,1);
map1=getmapping(8,'u2');
map2=getmapping(16,'u2');

Ilbp=LBP(pelak,1,8,map1,'i');
m1=Ilbp(:,1:tool/2.5);
m2=Ilbp(:,tool/2-tool/2.5/2:tool/2+tool/2.5/2);
m3=Ilbp(:,tool-tool/2.5:tool);

bins1 = map1.num;
H1=hist(m1(:), 0:(bins-1));
H2=hist(m2(:), 0:(bins-1));
H3=hist(m3(:), 0:(bins-1));
H4=LBP(pelak,2, 8,map1,'h');
H5=LBP(pelak,2, 16,map2,'h');
H=[H1, H2, H3, H4, H5];
plot(H);

sama.66
پنج شنبه 02 مرداد 1393, 21:28 عصر
این ارور رو میده
Index exceeds matrix dimensions.

Error in Untitled (line 15)
m3=Ilbp(:,tool-tool/2.5:tool);

rahnema1
پنج شنبه 02 مرداد 1393, 22:14 عصر
اصلاح شد

tool=size(pelak,2);
arz=size(pelak,1);
map1=getmapping(8,'u2');
map2=getmapping(16,'u2');

Ilbp=LBP(pelak,1,8,map1,'i');
tool=size(Ilbp,2);
arz=size(Ilbp,1);
m1=Ilbp(:,1:round(tool*3/7));
m2=Ilbp(:,round(tool*2/7)+1:round(tool*5/7));
m3=Ilbp(:,round(tool*4/7)+1:tool);

bins = map1.num;
H1=hist(m1(:), 0:(bins-1));
H2=hist(m2(:), 0:(bins-1));
H3=hist(m3(:), 0:(bins-1));
H4=LBP(pelak,2, 8,map1,'h');
H5=LBP(pelak,2, 16,map2,'h');
H=[H1, H2, H3, H4, H5];
plot(H);

sama.66
جمعه 03 مرداد 1393, 15:42 عصر
ممنونم از شما

sama.66
جمعه 03 مرداد 1393, 17:18 عصر
قبلا باراهنماییتون کدی نوشتیم که خروجی تو یه فایلی ذخیره میشد،برای اینکه بتونم تواین برنامه هم خروجی رو به صورت رشته سیو کنم کدش به این صورت میشه؟؟

image_files=dir(fullfile(cd,'\*.jpg'));
mkdir('lbp');
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples



file_name=image_files(Q).name;
file=strcat(current_directory,'\',file_name);



filesave=strcat(current_directory,'\lbp\hist-',file_name);
dlmwrite('myfile.txt',filesave,H);
end

rahnema1
جمعه 03 مرداد 1393, 17:30 عصر
فکر کنم این جور میشه

image_files=dir(fullfile(cd,'\*.jpg'));
mkdir('lbp');
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples



file_name=image_files(Q).name;
file=strcat(current_directory,'\',file_name);



filesave=strcat(current_directory,'\lbp\hist-',file_name,'.txt');
dlmwrite(filesave,H);
end


فقط یک نکته اینکه map1 و map2 را تنها یک بار در اول برنامه حساب کنید کافیه ( دیگه نمی خواد مرتبا اونها را حساب کنید)

sama.66
جمعه 03 مرداد 1393, 18:34 عصر
1:این کدروکه مینویسم ارور میده
c=imread('file');
2:منظورتون کدgetmapping که یه بار بنویسم؟؟؟

rahnema1
جمعه 03 مرداد 1393, 18:41 عصر
1:این کدروکه مینویسم ارور میده
c=imread('file');
2:منظورتون کدgetmapping که یه بار بنویسم؟؟؟

اگه بتونید کد ها را داخل تگ HTML نذارید داخل یه تگ دیگه مثل VB بذارید بهتر نشون داده میشه

file را داخل ' ' قرار ندهید
منظورم map1=getmapping هست

sama.66
جمعه 03 مرداد 1393, 18:49 عصر
بله چشم.
بازم ارور داد
Undefined function or variable 'file'.

Error in Untitled15 (line 17)
c=imread(file);

rahnema1
جمعه 03 مرداد 1393, 18:53 عصر
دقت کنید داخل فولدر مورد نظر فایلها با پسوند jpg باشند نه JPG در غیر این صورت کد را تغییر بدید
این جور اجرا می کنید و خطا میده؟

image_files=dir(fullfile(cd,'\*.jpg'));
mkdir('lbp');
current_directory=cd;
dimension=size(image_files);
number_of_samples=dimension(1);
for Q=1:number_of_samples



file_name=image_files(Q).name;
file=strcat(current_directory,'\',file_name);

c=imread(file);

filesave=strcat(current_directory,'\lbp\hist-',file_name,'.txt');
dlmwrite(filesave,H);
end

sama.66
جمعه 03 مرداد 1393, 19:00 عصر
ارورش رفع شدو همه هیستوگرامهای نهایی سیو میشه تو فولدر،امافقط یکیشو نمایش میده،میخوام همشونو نمایش بده

rahnema1
جمعه 03 مرداد 1393, 19:04 عصر
قبل از هر دستور plot یه دستور figure بنویسید تا پلات ها در پنجره های جدید ایجاد بشن

sama.66
جمعه 10 مرداد 1393, 19:04 عصر
سلام
میشه درمورد کلاسیفایر svmراهنماییم کنید؟؟چطوری میتونم داده هامو اموزش بدم؟؟

sama.66
شنبه 11 مرداد 1393, 01:23 صبح
lotfan mishe komakam konid????????

rahnema1
شنبه 11 مرداد 1393, 11:36 صبح
شما ابتدا باید یه برنامه svm را گیر بیارید و داده ها را مانند سایر روشها در اون آموزش بدید

sama.66
شنبه 11 مرداد 1393, 11:43 صبح
توی تولباکس متلب نداره؟؟

rahnema1
شنبه 11 مرداد 1393, 12:05 عصر
فکر نکنم تولباکس داشته باشه

sama.66
شنبه 11 مرداد 1393, 14:23 عصر
من این برنامه رو پیداکردم چجوری باید ازش استفاده کنم
function [D, a_star] = SVM(train_features, train_targets, params, region)

% Classify using (a very simple implementation of) the support vector machine algorithm
%
% Inputs:
% features- Train features
% targets - Train targets
% params - [kernel, kernel parameter, solver type, Slack]
% Kernel can be one of: Gauss, RBF (Same as Gauss), Poly, Sigmoid, or Linear
% The kernel parameters are:
% RBF kernel - Gaussian width (One parameter)
% Poly kernel - Polynomial degree
% Sigmoid - The slope and constant of the sigmoid (in the format [1 2], with no separating commas)
% Linear - None needed
% Solver type can be one of: Perceptron, Quadprog
% region - Decision region vector: [-x x -y y number_of_points]
%
% Outputs
% D - Decision sufrace
% a - SVM coeficients
%
% Note: The number of support vectors found will usually be larger than is actually
% needed because both solvers are approximate.

[Dim, Nf] = size(train_features);
Dim = Dim + 1;
train_features(Dim,:) = ones(1,Nf);
z = 2*(train_targets>0) - 1;

%Get kernel parameters
[kernel, ker_param, solver, slack] = process_params(params);

%Transform the input features
y = zeros(Nf);
switch kernel,
case {'Gauss','RBF'},
for i = 1:Nf,
y(:,i) = exp(-sum((train_features-train_features(:,i)*ones(1,Nf)).^2)'/(2*ker_param^2));
end
case {'Poly', 'Linear'}
if strcmp(kernel, 'Linear')
ker_param = 1;
end

for i = 1:Nf,
y(:,i) = (train_features'*train_features(:,i) + 1).^ker_param;
end
case 'Sigmoid'
if (length(ker_param) ~= 2)
error('This kernel needs two parameters to operate!')
end

for i = 1:Nf,
y(:,i) = tanh(train_features'*train_features(:,i)*ker_param (1)+ker_param(2));
end
otherwise
error('Unknown kernel. Can be Gauss, Linear, Poly, or Sigmoid.')
end

%Find the SVM coefficients
switch solver
case 'Quadprog'
%Quadratic programming
if ~isfinite(slack)
alpha_star = quadprog((z'*z).*(y'*y), -ones(1, Nf), [], [], z, 0, 0)';
else
alpha_star = quadprog((z'*z).*(y'*y), -ones(1, Nf), [], [], z, 0, 0, slack)';
end
a_star = (alpha_star.*z)*y';

%Find the bias
in = find((alpha_star > 0) & (alpha_star < slack));
if isempty(in),
bias = 0;
else
B = z(in) - a_star * y(:,in);
bias = mean(B(in));
end

case 'Perceptron'
max_iter = 1e5;
iter = 0;
rate = 0.01;
xi = ones(1,Nf)/Nf*slack;

if ~isfinite(slack),
slack = 0;
end

%Find a start point
processed_y = [y; ones(1,Nf)] .* (ones(Nf+1,1)*z);
a_star = mean(processed_y')';

while ((sum(sign(a_star'*processed_y+xi)~=1)>0) & (iter < max_iter))
iter = iter + 1;
if (iter/5000 == floor(iter/5000)),
disp(['Working on iteration number ' num2str(iter)])
end

%Find the worse classified sample (That farthest from the border)
dist = a_star'*processed_y+xi;
[m, indice] = min(dist);
a_star = a_star + rate*processed_y(:,indice);

%Calculate the new slack vector
xi(indice) = xi(indice) + rate;
xi = xi / sum(xi) * slack;
end

if (iter == max_iter),
disp(['Maximum iteration (' num2str(max_iter) ') reached']);
else
disp(['Converged after ' num2str(iter) ' iterations.'])
end

bias = 0;
a_star = a_star(1:Nf)';

case 'Lagrangian'
%Lagrangian SVM (See Mangasarian & Musicant, Lagrangian Support Vector Machines)
tol = 1e-5;
max_iter = 1e5;
nu = 1/Nf;
iter = 0;

D = diag(z);
alpha = 1.9/nu;

e = ones(Nf,1);
I = speye(Nf);
Q = I/nu + D*y'*D;
P = inv(Q);
u = P*e;
oldu = u + 1;

while ((iter<max_iter) & (sum(sum((oldu-u).^2)) > tol)),
iter = iter + 1;
if (iter/5000 == floor(iter/5000)),
disp(['Working on iteration number ' num2str(iter)])
end
oldu = u;
f = Q*u-1-alpha*u;
u = P*(1+(abs(f)+f)/2);
end

a_star = y*D*u(1:Nf);
bias = -e'*D*u;

otherwise
error('Unknown solver. Can be either Quadprog or Perceptron')
end

%Find support verctors
sv = find(abs(a_star) > 1e-10);
Nsv = length(sv);
if isempty(sv),
error('No support vectors found');
else
disp(['Found ' num2str(Nsv) ' support vectors'])
end

%Margin
b = 1/sqrt(sum(a_star.^2));
disp(['The margin is ' num2str(b)])

%Now build the decision region
N = region(5);
xx = linspace (region(1),region(2),N);
yy = linspace (region(3),region(4),N);
D = zeros(N);

for j = 1:N,
y = zeros(N,1);
for i = 1:Nsv,
data = [xx(j)*ones(1,N); yy; ones(1,N)];

switch kernel,
case {'Gauss','RBF'},
y = y + a_star(i) * exp(-sum((data-train_features(:,sv(i))*ones(1,N)).^2)'/(2*ker_param^2));
case {'Poly', 'Linear'}
y = y + a_star(i) * (data'*train_features(:,sv(i))+1).^ker_param;
case 'Sigmoid'
y = y + a_star(i) * tanh(data'*train_features(:,sv(i))*ker_param(1)+ke r_param(2));
end
end
D(:,j) = (y + bias);
end


D = D>0;

rahnema1
شنبه 11 مرداد 1393, 14:32 عصر
توی ابتدای فایل نحوه استفاده را نوشته بسته به داده شما داره
بهتره در مورد svm مطالعه کنید تا بدونید چه ورودی هایی را باید بدید
حالا بگردید شاید از این راحت تر هم باشه که فقط داده ها رابهش بدید و خروجی بگیرید چون تو اینجا پارامترهای پیش فرض نداره حتما باید بدونید چی می خواهید بهش بدید

sama.66
شنبه 11 مرداد 1393, 16:49 عصر
توی همون کدهایی که فرستاده بودم این فایل برای کلاسیفایربودازاین میتونم استفاده کنم؟؟
function [final_accu,PreLabel] = NNClassifier(Samples_Train,Samples_Test,Labels_Tra in,Labels_Test)

Train_Model = Samples_Train;
Test_Model = Samples_Test;
numTest = size(Test_Model,2);
numTrain = size(Train_Model,2);

current_test = [];
current_comp = [];
PreLabel = [];
current_value = 0;
min_value = 99999;
class_index = 1;

for index2 = 1:numTest
current_test = Test_Model(:,index2);
for index3 = 1:numTrain
current_comp = Train_Model(:,index3);

current_value = sum(abs(current_test - current_comp));
if(current_value<min_value)
min_value = current_value;
class_index = Labels_Train(1,index3);
end
end

PreLabel = [PreLabel,class_index];
min_value = 99999;
class_index = 1;
end

Comp_Label = PreLabel - Labels_Test;
Comp_Label = Comp_Label;
accu_count = 0;
for index3 = 1:size(Comp_Label,2)
if(Comp_Label(1,index3)==0)
accu_count = accu_count+1;
end
end

final_accu = (accu_count/double(size(Comp_Label,2)))*100;

rahnema1
شنبه 11 مرداد 1393, 17:59 عصر
دقیقا چی کار می خواهید بکنید؟

sama.66
شنبه 11 مرداد 1393, 18:35 عصر
یه سری تصاویر داشتم ،ازشون lbp گرفتم hلان میخوام ایناروبه یک svm بدم

rahnema1
شنبه 11 مرداد 1393, 18:39 عصر
حالا svm میخواد چیکار کنه؟

sama.66
شنبه 11 مرداد 1393, 20:43 عصر
که به عنوان یه ویژگی ازش استفاده کنم
svmتومطلب دستورداره ولی نمیدونم چجوری استفاده کنم لطفا راهنماییم کنید
svmtrainبرای اموزش

و svmclassifyبرای ازمایش

rahnema1
شنبه 11 مرداد 1393, 22:36 عصر
که به عنوان یه ویژگی ازش استفاده کنم(دو دسته داده دارم پلاک و غیر پلاک وقتی svm بتونه با دقت بالا جداشون کنه یعنی توی تصویر هم میتونه این کار رو بکنه.,یعنی اگر یک پنجره رو توی تصویر بلغزونم svm می تونه پیداش کنه و آشکارش کنه)
svmتومطلب دستورداره ولی نمیدونم چجوری استفاده کنم لطفا راهنماییم کنید
svmtrainبرای اموزش

و svmclassifyبرای ازمایش

توی هلپش فکر کنم توضیح داده حالا من متلب ندارم و از octave استفاده می کنم که چنین دستوری نداره شاید دوستان دیگه بتونند توضیح بیشتری بدهند شما خودتون یه کم جلو ببرید هر جا اشکال داشتید بگید

sama.66
یک شنبه 12 مرداد 1393, 19:33 عصر
helpe matlabo k mikhunam yekami gij misham kasi hast betune komakam kone?????

rahnema1
یک شنبه 12 مرداد 1393, 22:11 عصر
helpe matlabo k mikhunam yekami gij misham kasi hast betune komakam kone?????

ببینید الان توی اینترنت این صفحه هلپ svclassify هست (فکر کنم هلپ متلب هم همین طوره )آخر صفحه را نگاه کنید یک نمونه کد برای اجرا گذاشته شده همون را اجرا کنید
بعد داده های خودتون را مطابق همین بذارید داخل کد
اشکال کجاشت؟

http://www.mathworks.com/help/stats/​svmclassify.html

sama.66
دوشنبه 13 مرداد 1393, 13:58 عصر
manzuretun in code?

load fisheriris
xdata = meas(51:end,3:4);
group = species(51:end);
svmStruct = svmtrain(xdata,group,'ShowPlot',true);
dadamo k mizaram tuye workspace vali chejuri ouno mikhune?

rahnema1
دوشنبه 13 مرداد 1393, 14:16 عصر
manzuretun in code?

load fisheriris
xdata = meas(51:end,3:4);
group = species(51:end);
svmStruct = svmtrain(xdata,group,'ShowPlot',true);
dadamo k mizaram tuye workspace vali chejuri ouno mikhune?

شما تعدادی هیستوگرام برای پلاکها داریدمثلا 50 تا هر کدوم به ابعاد یک در 512
حالا تمام اینها را بچسبونید به هم تا یک ماتریس 50 در 512 ایجاد بشه
و برای غیر پلاکها هم مثلا 30 تا هیستوگرام غیر پلاک دارید اونها را هم به انتهای اون قبلی اضافه کنید تا نهایتا یک ماتریس 80 در 512 ایجاد بشه
که این در دستور svmtrain تشکیل پارامتر xdataرا میده
بعد باید یک ماتریس به ابعاد 80 در یک ایجاد کنید که 50 تا عضو اول اون یک و مابقی صفر باشن و اسم ماتریس را هم بذارید group
بعد مانند کدی که گذاشتید اجرا کنید به همین راحتی

sama.66
دوشنبه 13 مرداد 1393, 15:22 عصر
(درکل 660 تا پلاک و 1200تا غیرپلاک دارم،ابعاد یک در479هستن)
من میخوام مثلا دوتادرمیان دوتا غیرپلاک و یکی پلاک روبدم بهsvm،
یعنی باید هردفعه دوتاغیرپلاک و یکی پلاک رو بهم بچسبونم؟؟( که ابعادش میشه 3در479)بعدیک ماتریس به ابعاد3در479ایجادکنم که 2تاغیرپلاک روصفربزارم اون یه دونه پلاک رو هم یک بزارم،به این شکل درسته؟؟؟

rahnema1
دوشنبه 13 مرداد 1393, 16:44 عصر
(درکل 660 تا پلاک و 1200تا غیرپلاک دارم،ابعاد یک در479هستن)
من میخوام مثلا دوتادرمیان دوتا غیرپلاک و یکی پلاک روبدم بهsvm،
یعنی باید هردفعه دوتاغیرپلاک و یکی پلاک رو بهم بچسبونم؟؟( که ابعادش میشه 3در479)بعدیک ماتریس به ابعاد3در479ایجادکنم که 2تاغیرپلاک روصفربزارم اون یه دونه پلاک رو هم یک بزارم،به این شکل درسته؟؟؟

شما باید ابتدا از پلاک و غیر پلاک هر کدومشون دو سوم اونها را واسه آموزش و یک سوم را برای آزمایش جدا کنید یعنی 440 پلاک به همراه 800 غیر پلاک ( جمعا 1240) را برای آموزش و مابقی (220 پلاک و 400 غیر پلاک جمعا 620 ) را برای آزمایش نگه دارید
اینکه دو در میون باشن ترتیبشون مهم نیست همون بهتره که مثلا ماتریس که 1240 در 479 هست، تعداد 440 تای اولی پلاک و مابقی غیر پلاک باشن یعنی لازم نیست یک در میون بذارید چون وارد برنامه که میشه اصلا ربطی به ترتیب نداره
بنابراین شما در ابتدا یک اتریس 1240 در 479 به نام xdata برای svmtrain ایجاد می کنید سپس یک ماتریس 1240 در یک به نام group ایجاد می کنید که 440 تای اولی یک باشه و بقیه صفر باشه
سپس با svmclassify داده هایی که برای آزمایش نگه داشته بودید را طبقه بندی می کنید و کارآیی روش را به دست می آورید

sama.66
دوشنبه 13 مرداد 1393, 20:13 عصر
اتصال مثلا 2تا ماتریس به این شکله؟


C=cat(1,A,B)

چجوری ایناروبهم بچسبونم

rahnema1
دوشنبه 13 مرداد 1393, 21:35 عصر
اتصال مثلا 2تا ماتریس به این شکله؟


C=cat(1,A,B)

چجوری ایناروبهم بچسبونم

این داده ها کجا هستند توی فایلند یا جای دیگه؟

sama.66
دوشنبه 13 مرداد 1393, 22:20 عصر
نه منظورم اینه E=cat(1,A,B)

نمیدونم چرا به اون شکل نمایش داده شد

rahnema1
سه شنبه 14 مرداد 1393, 07:44 صبح
نه منظورم اینه E=cat(1,A,B)

نمیدونم چرا به اون شکل نمایش داده شد

مثلا شما یه ماتریس a,b دارید می خواهید به هم بچسبونید
که اگه بخواهید ستون به ستون باشه میشه c اگه بخواهید سطر به سطر باشه میشه d

a=[1 2 3];
b=[4 5 6];
c=[a b];
d=[a; b];

یه مثال دیگه من یک ماتریس خالی به ابعاد 10 در سه میسازم و می خوام سطرهای اون را با ماتریس های یک در سه پر کنم
توجه: دستور rand یه سری عدد تصادفی میسازه که برای این مثال به کار بردم

a= zeros(10,3);

for i=1:10
b=rand(1,3);
a(i,:)=b;
end

sama.66
سه شنبه 14 مرداد 1393, 15:30 عصر
خب 1240تارو چجوری بهم بچسبونم متوجه نمیشم

rahnema1
سه شنبه 14 مرداد 1393, 15:59 عصر
خب 1240تارو چجوری بهم بچسبونم متوجه نمیشم

من هم دارم همین میگم این داده ها کجا هستند؟ توی workspace یا توی فایل ذخیره شدن؟

sama.66
سه شنبه 14 مرداد 1393, 19:34 عصر
من توی فایل دارم این داده هارو،نمیدونم باید بیارم توی workspace یا نه؟؟؟؟؟؟

rahnema1
سه شنبه 14 مرداد 1393, 20:02 عصر
من فرض کردم دو تا فولدر هست به نام pelak و nonpelak و پسوند فایلها هم txt هست
اطلاعات هر کدوم را می ریزه داخل دو تا ماتریس
حالا کاری که شما می کنید اینکه که به همون ترتیبی که گفتم داده ها را از این ماتریس ها استخراج کرده و در ماتریس xdata میذارید اگه به مشکل برخوردید اطلاع بدید

cd pelak;
fil=dir('*.txt');
for i=1:numel(fil)
pelakdata(i,:)=dlmread(fil(i).name);
end

cd nonpelak;
fil=dir('*.txt');
for i=1:numel(fil)
nonpelakdata(i,:)=dlmread(fil(i).name);
end

sama.66
سه شنبه 14 مرداد 1393, 21:04 عصر
فقط اولی رو میخونه

Error using cd
Cannot CD to nonpelak (Name is nonexistent or not a directory).

Error in Untitled (line 9)
cd nonpelak;

rahnema1
سه شنبه 14 مرداد 1393, 21:52 عصر
این را بذارید

cd ..
cd nonpelak;

sama.66
سه شنبه 14 مرداد 1393, 22:05 عصر
قبلا تو یه فایلی به همون ترتیبی که فرمودید برای ازمایش و یه فایلم برای اموزش جدا کردم،ولی الان چجوری باید ازتوی ماتریس واسه اموزش و ازمایش جداکنم؟

rahnema1
سه شنبه 14 مرداد 1393, 22:11 عصر
قبلا تو یه فایلی به همون ترتیبی که فرمودید برای ازمایش و یه فایلم برای اموزش جدا کردم،ولی الان چجوری باید ازتوی ماتریس واسه اموزش و ازمایش جداکنم؟

خیلی خوب. حالا بگید فایل آموزش شامل چیه و فایل آزمایش شامل چیه ( منظورم تعداد سطر و ستون وها هست)
استخراج سطرها و ستون یک ماتریس دیگه از اساسی ترین دستورهای متلب هست که حتما باید یاد بگیرید

sama.66
سه شنبه 14 مرداد 1393, 22:57 عصر
متوجه نشدم،ببینید من فایلامو جداکردم ولی به ماتریس تبدیل نکردم،نمیدونم میشه بگید مراحلش به چه صورت باید باشه دقیقا؟اول باید پلاک و نان پلاک رو به ماتریس تبدیل کنم طبق کدی که دادید و ازتوش واسه اموزش و ازمایش جداکنم؟؟؟؟یا اینکه فایلایی رو که ازقبل جداکردم به عنوان ازمایش و اموزش رو بزارم تو این کد وبه ماتریس تبدیل کنم ؟؟؟

rahnema1
چهارشنبه 15 مرداد 1393, 05:56 صبح
متوجه نشدم،ببینید من فایلامو جداکردم ولی به ماتریس تبدیل نکردم،نمیدونم میشه بگید مراحلش به چه صورت باید باشه دقیقا؟اول باید پلاک و نان پلاک رو به ماتریس تبدیل کنم طبق کدی که دادید و ازتوش واسه اموزش و ازمایش جداکنم؟؟؟؟یا اینکه فایلایی رو که ازقبل جداکردم به عنوان ازمایش و اموزش رو بزارم تو این کد وبه ماتریس تبدیل کنم ؟؟؟

ببینید همون طور که گفتم باید فایلها را به ماتریس تبدیل کنید تا بتونید وارد svm کنید
طبق همون کدی که گذاشتم فرض کنید فایلهای شما در دو فولدر باشه شما دو تا ماتریس درست کنید و اسم اون ماتریسها را هر چه دلتون خواست بذارید و نهایتا به من بگید این ماتریسهایی که ایجاد شده هر کدوم شامل چه داده هایی هست و تعداد سطر و ستون اون را بگویید تا برسیم به مرحله بعدی

rahnema1
چهارشنبه 15 مرداد 1393, 06:18 صبح
دقیقا بگید در فولدرها چی گذاشتید در هر فولدری چه تعداد فایل هست

sama.66
چهارشنبه 15 مرداد 1393, 11:42 صبح
من دوتا فولدر دارم

از کدوم دسته استفاده کنم؟؟؟؟

rahnema1
چهارشنبه 15 مرداد 1393, 13:18 عصر
کد برای دسته اوله

sama.66
چهارشنبه 15 مرداد 1393, 13:28 عصر
ok chejuri bayad vase amuzesho azmayesh az tu matrisa joda konam??

rahnema1
چهارشنبه 15 مرداد 1393, 13:30 عصر
xdataamoozesh=[pelakdata(1:440,:);nonpelakdata(1:800,:)];
xdataazmayesh=[pelakdata(441:end,:);nonpelakdata(801:end,:)];
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];

sama.66
چهارشنبه 15 مرداد 1393, 14:35 عصر
الان من حلقه رو چجوری بنویسم؟؟
a= zeros(1240,1);

for i=1:440
b=rand( ,);
a(i,:)=b;
end

rahnema1
چهارشنبه 15 مرداد 1393, 15:50 عصر
الان من حلقه رو چجوری بنویسم؟؟
a= zeros(1240,1);

for i=1:440
b=rand( ,);
a(i,:)=b;
end

من کد pelak و nonpelak را برای شما گذاشتم دیگه نمیخواد چیزی اضافه بشه فقط همون ها را اجرا کنید

sama.66
چهارشنبه 15 مرداد 1393, 20:31 عصر
بعدش بایداینطور نوشت؟؟
svmStruct = svmtrain(xdataamoozesh,groupamoozesh,'showplot',tr ue);
groupazmayesh = svmclassify(SVMStruct,Sample,'Showplot',true)

rahnema1
چهارشنبه 15 مرداد 1393, 21:49 عصر
بعدش بایداینطور نوشت؟؟
svmStruct = svmtrain(xdataamoozesh,groupamoozesh ,'showplot',true);
groupazmayesh = svmclassify(SVMStruct,Sample,'Showplot',true)

بله همین روش
به علاوه اینها

azmayesh=svmclassify(svmStruct,xdataazmayesh ,'ShowPlot',true);
[x,y,auc]=perfcurve(azmayesh,groupazmayesh,1);
plot(x,y)
xlabel('False positive rate'); ylabel('True positive rate')
title('ROC for classification by SVM')
disp(auc)

اگه شاخص auc از 80 درصد بیشتر بود معلومه کارایی روش خوب بوده

sama.66
چهارشنبه 15 مرداد 1393, 22:13 عصر
auc یه ماتریسه که به این صورت دراومده؟؟
1
1
0
خب میشه بگید این یعنی چی؟؟؟

rahnema1
چهارشنبه 15 مرداد 1393, 22:23 عصر
حالا نمودار را کشید نمودار چه شکلیه؟
auc هم فقط باید یک عدد باشه قاعدتا نه سه تا و بین 0.5 تا 1 باید باشه

rahnema1
چهارشنبه 15 مرداد 1393, 22:28 عصر
ببخشید یه اشتباه شده این خط را اصلاح کنید
[x,y,auc]=perfcurve(groupazmayesh,azmayesh,1);

sama.66
چهارشنبه 15 مرداد 1393, 22:41 عصر
auc همانطورکه گفتم به این صورته {1,1,0}
اینم نمودارش122059

rahnema1
چهارشنبه 15 مرداد 1393, 22:48 عصر
این اشتباه را هم اصلاح کنید
نمودار نشون میده کارآیی بسیار عالی بوده چون منحنی به سمت گوشه بالا سمت چپ کاملا نزدیک شده

[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

sama.66
چهارشنبه 15 مرداد 1393, 22:52 عصر
واقعا خیلی لطف میکنید شما،درست شد الان شده 0.9803

sama.66
چهارشنبه 15 مرداد 1393, 23:12 عصر
یه سوال؟چجوری باید بفهمم که جواب ازمایشsvmclassifyنسبت به جواب واقعی چند درصد ه؟؟

rahnema1
پنج شنبه 16 مرداد 1393, 08:58 صبح
یه سوال؟چجوری باید بفهمم که جواب ازمایشsvmclassifyنسبت به جواب واقعی چند درصد ه؟؟

منظور شما را متوجه نمیشم

sama.66
پنج شنبه 16 مرداد 1393, 21:54 عصر
یعنی اینکه میخوام خروجی swmclassify رو با خروجی واقعی که باید باشه مقایسه کنم و در صد بگیرم

rahnema1
پنج شنبه 16 مرداد 1393, 22:11 عصر
یعنی اینکه میخوام خروجی swmclassify رو با خروجی واقعی که باید باشه مقایسه کنم و در صد بگیرم

ماتریس ابهام اینجور بدست میاد
C= confusionmat(groupazmayesh ,azmayesh)

sama.66
پنج شنبه 16 مرداد 1393, 22:26 عصر
khoroji c be in surete??

[397,3,7,213]

میشه بگید این ماتریس منظورش چیه

rahnema1
جمعه 17 مرداد 1393, 05:42 صبح
khoroji c be in surete??

[397,3,7,213]

میشه بگید این ماتریس منظورش چیه

همون چیزی که به دنبالش بودید
اینها را مطالعه کنید:
http://fa.wikipedia.org/wiki/ماتریس_درهم‌ریختگی

http://en.wikipedia.org/wiki/Confusion_matrix

sama.66
جمعه 17 مرداد 1393, 12:03 عصر
مرسی،اونجا نوشته بود هر ستون نمونه ای ازمقدارپیش بینی شده است ،ستون اول میشه 7+397 خب این جمعش میشه 404ولی ما 400 تا غیرپلاک داشتیم یه توضیح کوچیک میدین من متوجه بشم قضیه به چه صورته؟؟

rahnema1
جمعه 17 مرداد 1393, 13:11 عصر
مرسی،اونجا نوشته بود هر ستون نمونه ای ازمقدارپیش بینی شده است ،ستون اول میشه 7+397 خب این جمعش میشه 404ولی ما 400 تا غیرپلاک داشتیم یه توضیح کوچیک میدین من متوجه بشم قضیه به چه صورته؟؟

397+3
213+7

sama.66
جمعه 17 مرداد 1393, 13:37 عصر
هر ستون از ماتریس، نمونه‌ای از مقدار پیش بینی شده را نشان می‌دهد. در صورتی که هر سطر نمونه‌ای واقعی (درست) را در بر دارد.
اینی که شما نوشتید واسه سطره نمونه ی واقعیه من میخوام ببینم داده های تست نسبت به واقعی چنددرصد شده باید ستونی درنظربگیرم؟؟؟؟

sama.66
جمعه 17 مرداد 1393, 13:50 عصر
میتونم اینجوری حساب کنم که کل داده 620تابوده و213+397=610تا در svmجواب داده که میشه 98%

rahnema1
شنبه 18 مرداد 1393, 05:51 صبح
میتونم اینجوری حساب کنم که کل داده 620تابوده و213+397=610تا در svmجواب داده که میشه 98%

این شاخص auc پیچیده تر از این محاسبه ساده هست توی همون pdf هم از این شاخص استفاده شده

sama.66
شنبه 18 مرداد 1393, 11:26 صبح
یعنی نسبت خروجی svm به خروجی واقعی 98% نیست ؟

rahnema1
شنبه 18 مرداد 1393, 12:05 عصر
یعنی نسبت خروجی svm به خروجی واقعی 98% نیست ؟

ببنید نسبت فکر نکنم شاخص خوبی باشه همون auc شاخص خیلی خوبی هست که همه چیز را در نظر می گیره الان هم که 98 درصد اومده خیلی خوبه
شما می گین نسبت. نسبت چی؟ نسبت طبقه بندی درست از میان طبقه بندی واقعی
یا نسبت طبقه بندی غلط از میان طبقه بندی واقعی
هر کدوم باشه ماتریس ابهام به شما نسبت را میده
یعنی منظور اینه که تنها اکتفا به نسبت کار درستی نیست
ولی این شاخص auc هست که شما باید استفاده کنید که تمام موارد بالا را در نظر می گیره

sama.66
شنبه 18 مرداد 1393, 14:37 عصر
ممنونم از راهنماییتون

sama.66
شنبه 25 مرداد 1393, 11:37 صبح
salam
har dafe k in barnamaro run mikonam auc taghir mikone,ye darsade sabeti nadare,bayad chikar kard??

rahnema1
شنبه 25 مرداد 1393, 23:00 عصر
salam
har dafe k in barnamaro run mikonam auc taghir mikone,ye darsade sabeti nadare,bayad chikar kard??

لطفا برنامه را بذارید اینجا

sama.66
یک شنبه 26 مرداد 1393, 11:19 صبح
سسسسسسسسسسسسسسسسسس

rahnema1
یک شنبه 26 مرداد 1393, 12:02 عصر
قبل از خط

svmStruct = svmtrain(xdataamoozesh,groupamoozesh,'showplot',tr ue);

این را بذارید دیه فکر کنم هر دفعه جواب یکسان بده

rng(100);

sama.66
یک شنبه 26 مرداد 1393, 12:19 عصر
بازم تغییرکرده،الان 66% شده

rahnema1
یک شنبه 26 مرداد 1393, 13:09 عصر
بازم تغییرکرده،الان 66% شده

این دستور را بزنید

save xdataazmayesh.mat xdataazmayesh
save xdataamoozesh.mat xdataamoozesh

دو تا فایل mat ایجاد میشه اونها را زیپ کنید بفرستید

sama.66
یک شنبه 26 مرداد 1393, 14:21 عصر
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

rahnema1
یک شنبه 26 مرداد 1393, 16:57 عصر
من در یک جای دیگه غیر متلب اتحان کردم مشکلی نبود
بهتره از کتابخانه libsvm استفاده کنید
از اینجا دانلود کنید
http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+zip
وقتی اکسترکت کردید در فولدر windows فایلهای مربوطه قرار داره ( البته برای ویندوز 64 بیتی هست)
دو تا فایل mat که درست کردید را بذارید داخل همون فولدر و اون فولدر را مسیر جاری قرار بدید
بعد این دستورات را بزنید

load xdataazmayesh.mat
load xdataamoozesh.mat
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
svmStruct = svmtrain(groupamoozesh, double(xdataamoozesh), '-c 0');
[azmayesh, accuracy, dec_values] = svmpredict(groupazmayesh, xdataazmayesh, svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

sama.66
دوشنبه 27 مرداد 1393, 00:49 صبح
روش دیگه ای نداره؟؟ اخه متلبم رو ویندوز64 من نصب نمیشه،(خیلی از درایورام واسه ویندوز64 کمیابه )

rahnema1
دوشنبه 27 مرداد 1393, 21:55 عصر
این هم نسخه 32 بیتی
http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/libsvm-mat-3.0-1.zip

sama.66
شنبه 01 شهریور 1393, 13:00 عصر
سلام
من نتونستم فایلی ک فرمودید داخل ویندوز هست را پیداکنم،اگه میشه مراحلشو بگید که این libsvm رو چجوری نصب کنم؟بعداینکه برناممو اجراکنم یا اینکه همون چند خطی که فرستادین اونو فقط اجرا کنم؟؟

rahnema1
شنبه 01 شهریور 1393, 21:26 عصر
سلام
من نتونستم فایلی ک فرمودید داخل ویندوز هست را پیداکنم،اگه میشه مراحلشو بگید که این libsvm رو چجوری نصب کنم؟بعداینکه برناممو اجراکنم یا اینکه همون چند خطی که فرستادین اونو فقط اجرا کنم؟؟

فایل zip که لینکش را براتون فرستادم یه جا اکسترکت کنید . دو تا فایل mat هم داخل اون بذارید و فولدر جاری را هم همون فولدر قرار بدید
سپس همون برنامه آخری که فرستادم را کافیه اجرا کنید

sama.66
شنبه 01 شهریور 1393, 22:28 عصر
in karo krardam vali error dad

Error: C <= 0
model file should be a struct array
Error using perfcurve
Argument 'scores' failed validation
@(x)~isempty(x)&&(isnumeric(x)||iscell(x)).

Error in perfcurve (line 313)
p.parse(labels,scores,posClass,varargin{:});

Error in Untitled7 (line 7)
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);
>>

rahnema1
شنبه 01 شهریور 1393, 22:36 عصر
این را بزنید:
size(azmayesh)
چه جوابی میاد؟

sama.66
شنبه 01 شهریور 1393, 22:38 عصر
Error: C <= 0
model file should be a struct array
Error using perfcurve
Argument 'scores' failed validation
@(x)~isempty(x)&&(isnumeric(x)||iscell(x)).

Error in perfcurve (line 313)
p.parse(labels,scores,posClass,varargin{:});

Error in Untitled7 (line 7)
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

>>

rahnema1
شنبه 01 شهریور 1393, 22:41 عصر
فقط این را بزنید:
size(azmayesh)
چه جوابی میاد؟

sama.66
شنبه 01 شهریور 1393, 22:48 عصر
Undefined function or variable 'azmayesh'.

Error in Untitled7 (line 1)
size(azmayesh)

rahnema1
شنبه 01 شهریور 1393, 22:51 عصر
من گفتم این کد را اجرا کنید

load xdataazmayesh.mat
load xdataamoozesh.mat
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
svmStruct = svmtrain(groupamoozesh, double(xdataamoozesh), '-c 0');
[azmayesh, accuracy, dec_values] = svmpredict(groupazmayesh, xdataazmayesh, svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

اگه همین دستور را زده اید احتمالا باید خطاهای بیشتری هم داده باشه
لطفا کل خطا ها را بذارید

sama.66
شنبه 01 شهریور 1393, 22:55 عصر
in code ro k mizanam in khataro mide

Error: C <= 0
model file should be a struct array
Error using perfcurve
Argument 'scores' failed validation
@(x)~isempty(x)&&(isnumeric(x)||iscell(x)).

Error in perfcurve (line 313)
p.parse(labels,scores,posClass,varargin{:});

Error in Untitled10 (line 7)
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

rahnema1
شنبه 01 شهریور 1393, 22:57 عصر
اصلا تک تک خط ها را در متلب کپی و پیست کنید اولین مورد که خطا داد گزارش کنید

sama.66
شنبه 01 شهریور 1393, 23:07 عصر
خط 6 این ارورو میده(یکی مونده به اخری)

Error: C <= 0
model file should be a struct array
خط اخرم این ارور رو میده

Error: C <= 0
model file should be a struct array
Error using perfcurve
Argument 'scores' failed validation
@(x)~isempty(x)&&(isnumeric(x)||iscell(x)).

Error in perfcurve (line 313)
p.parse(labels,scores,posClass,varargin{:});

Error in Untitled10 (line 9)
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

بقیه خط ها ارور نمیده

rahnema1
شنبه 01 شهریور 1393, 23:10 عصر
فایل svmtrain.mexw32 را به svmtrain2.mexw32 تغییر نام بدهید سپس این کد را اجرا کنید

load xdataazmayesh.mat
load xdataamoozesh.mat
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
svmStruct = svmtrain2(groupamoozesh, double(xdataamoozesh), '-c 0');
[azmayesh, accuracy, dec_values] = svmpredict(groupazmayesh, xdataazmayesh, svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

sama.66
شنبه 01 شهریور 1393, 23:14 عصر
دوباره ارور داد

Error: C <= 0
model file should be a struct array
Error using perfcurve
Argument 'scores' failed validation
@(x)~isempty(x)&&(isnumeric(x)||iscell(x)).

Error in perfcurve (line 313)
p.parse(labels,scores,posClass,varargin{:});

Error in Untitled11 (line 7)
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

rahnema1
شنبه 01 شهریور 1393, 23:28 عصر
این دستورات خود libsvm هست . ببینید اجرا میشه؟

[heart_scale_label, heart_scale_inst] = libsvmread('heart_scale');
model = svmtrain2(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
[predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model)


چه چیزی چاپ میشه؟

sama.66
شنبه 01 شهریور 1393, 23:31 عصر
فقط همین کدروزدم اررور داد
Error using svmtrain2
Matrix API is called with negative size or index.

Error in Untitled2 (line 4)
model = svmtrain2(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');

rahnema1
شنبه 01 شهریور 1393, 23:36 عصر
فایل heart_scale را داخل همون فولدر اکسترکت کنید
http://www.sharefile.ir/uploads/1408827087.zip

sama.66
شنبه 01 شهریور 1393, 23:43 عصر
Accuracy = 86.6667% (234/270) (classification)

دیگه ارور ندادولی قبلا 98% بود الان 86%

rahnema1
شنبه 01 شهریور 1393, 23:47 عصر
پس مشکلی نیست. این کد را اجرا کنید:

load xdataazmayesh.mat
load xdataamoozesh.mat
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
svmStruct = svmtrain2(double(groupamoozesh), double(xdataamoozesh), '-c 0');
[azmayesh, accuracy, dec_values] = svmpredict(double(groupazmayesh), double(xdataazmayesh), svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

sama.66
شنبه 01 شهریور 1393, 23:51 عصر
بازم ارور داد

Error: C <= 0
model file should be a struct array
Error using perfcurve
Argument 'scores' failed validation
@(x)~isempty(x)&&(isnumeric(x)||iscell(x)).

Error in perfcurve (line 313)
p.parse(labels,scores,posClass,varargin{:});

Error in Untitled3 (line 9)
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

rahnema1
یک شنبه 02 شهریور 1393, 00:05 صبح
این هم ارور میده؟

load xdataazmayesh.mat
load xdataamoozesh.mat
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
svmStruct = svmtrain2(double(groupamoozesh), double(xdataamoozesh));
[azmayesh, accuracy, dec_values] = svmpredict(double(groupazmayesh), double(xdataazmayesh), svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

sama.66
یک شنبه 02 شهریور 1393, 00:10 صبح
in error nadad
Accuracy = 64.5161% (400/620) (classification)

vali darsadesh kheyli omade peiyn

rahnema1
یک شنبه 02 شهریور 1393, 00:11 صبح
accuracy را ولش کن auc را ببین چند شده؟

sama.66
یک شنبه 02 شهریور 1393, 00:15 صبح
auc=0.5000

rahnema1
یک شنبه 02 شهریور 1393, 00:18 صبح
این که افتضاحه معلوم نیست مشکل کجاست جون من یه جا دیگه امتحان کردم فقط دو مورد اشتباه طبقه بندی شده بود

sama.66
یک شنبه 02 شهریور 1393, 00:21 صبح
خب پس چیکارمیشه کرد

rahnema1
یک شنبه 02 شهریور 1393, 00:21 صبح
ای یکی چه طوره؟

load xdataazmayesh.mat
load xdataamoozesh.mat
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
svmStruct = svmtrain2(double(groupamoozesh), double(xdataamoozesh),'-s 2');
[azmayesh, accuracy, dec_values] = svmpredict(double(groupazmayesh), double(xdataazmayesh), svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

sama.66
یک شنبه 02 شهریور 1393, 00:24 صبح
auc=0.4988

rahnema1
یک شنبه 02 شهریور 1393, 00:28 صبح
صبر کنید من تست می کنم فردا خبر میدم

sama.66
یک شنبه 02 شهریور 1393, 00:29 صبح
ok mrc :لبخندساده:

rahnema1
یک شنبه 02 شهریور 1393, 17:33 عصر
این را امتحان کنید ابتدا باید داده ها نرمالیزه می شدند

miangin=mean(xdataamoozesh);
enherafmeyar=std(xdataamoozesh);
xdataamoozesh=(xdataamoozesh-miangin)/enherafmeyar;
xdataazmayesh=(xdataazmayesh-miangin)/enherafmeyar;
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
svmStruct = svmtrain2(groupamoozesh, doublexdataamoozesh);
[azmayesh, accuracy, dec_values] = svmpredict(groupazmayesh, xdataazmayesh, svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

sama.66
دوشنبه 03 شهریور 1393, 10:38 صبح
error dad

Undefined function or variable 'xdataamoozesh'.

Error in Untitled6 (line 1)
miangin=mean(xdataamoozesh);

rahnema1
دوشنبه 03 شهریور 1393, 11:31 صبح
error dad

Undefined function or variable 'xdataamoozesh'.

Error in Untitled6 (line 1)
miangin=mean(xdataamoozesh);

یه کم به برنامه دقت کنید باید داده ها را load کنید تو پست قبلی بود دیگه

sama.66
چهارشنبه 05 شهریور 1393, 16:25 عصر
اشتباه از من بوده چون پلاک ها همسایز نبوده،میخوام نرمالایزهم بکنم که دیگه کامل مطمئن بشم چطوربایدداده هامونرمالیزه کنم؟

rahnema1
چهارشنبه 05 شهریور 1393, 16:55 عصر
اشتباه از من بوده چون پلاک ها همسایز نبوده،میخوام نرمالایزهم بکنم که دیگه کامل مطمئن بشم چطوربایدداده هامونرمالیزه کنم؟

ببینید من تست کردم 99 و خورده ای درصد مدل دقت داشت دستور load را بذارید منظورم این بود

load xdataazmayesh.mat
load xdataamoozesh.mat

miangin=mean(xdataamoozesh);
enherafmeyar=std(xdataamoozesh);
xdataamoozesh=(xdataamoozesh-miangin)/enherafmeyar;
xdataazmayesh=(xdataazmayesh-miangin)/enherafmeyar;
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
svmStruct = svmtrain2(groupamoozesh, doublexdataamoozesh);
[azmayesh, accuracy, dec_values] = svmpredict(groupazmayesh, xdataazmayesh, svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

sama.66
شنبه 08 شهریور 1393, 10:11 صبح
سایز پلاک رو که تغییر دادم ازکتابخانه استفاده نکردم ازهمون برنامه قبلی استفاده کردم auc یک شده،ازاین برنامه هم که استفاده میکنم ارور میده

Error using -
Matrix dimensions must agree.

Error in Untitled2 (line 6)
xdataamoozesh=(xdataamoozesh-miangin)/enherafmeyar;

rahnema1
شنبه 08 شهریور 1393, 10:35 صبح
توی اکتاو متفاوت بود

load xdataazmayesh.mat
load xdataamoozesh.mat

miangin=mean(xdataamoozesh);
enherafmeyar=std(xdataamoozesh);
xdataamoozesh=bsxfun(@rdivide,bsxfun(@minus ,xdataamoozesh,miangin),enherafmeyar);
xdataazmayesh=bsxfun(@rdivide,bsxfun(@minus ,xdataazmayesh,miangin),enherafmeyar);
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
svmStruct = svmtrain2(groupamoozesh, doublexdataamoozesh);
[azmayesh, accuracy, dec_values] = svmpredict(groupazmayesh, xdataazmayesh, svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

sama.66
شنبه 08 شهریور 1393, 11:04 صبح
Undefined function or variable 'doublexdataamoozesh'.

Error in Untitled3 (line 10)
svmStruct = svmtrain2(groupamoozesh, doublexdataamoozesh);


bazam eror dad.in dastur normalize ham mikone?

rahnema1
شنبه 08 شهریور 1393, 11:28 صبح
ببخشید نام متغیر اشتباه بود
با میانگین و انحراف معیار نرمال می کنیم

load xdataazmayesh.mat
load xdataamoozesh.mat

miangin=mean(xdataamoozesh);
enherafmeyar=std(xdataamoozesh);
xdataamoozesh=bsxfun(@rdivide,bsxfun(@minus ,xdataamoozesh,miangin),enherafmeyar);
xdataazmayesh=bsxfun(@rdivide,bsxfun(@minus ,xdataazmayesh,miangin),enherafmeyar);
groupamoozesh=[ones(440,1);zeros(800,1)];
groupazmayesh=[ones(220,1);zeros(400,1)];
svmStruct = svmtrain2(groupamoozesh, xdataamoozesh);
[azmayesh, accuracy, dec_values] = svmpredict(groupazmayesh, xdataazmayesh, svmStruct);
[x,y,T,auc]=perfcurve(groupazmayesh ,azmayesh,1);

sama.66
شنبه 08 شهریور 1393, 11:40 صبح
mrc az shoma,auc=0.9977

sama.66
شنبه 08 شهریور 1393, 11:51 صبح
ye soale dg nemishe code svm k ghablan neveshtim ba in code ro betunim hamzaman ejra konim?k dg nayaym aval svm k ghablan neveshtim ro run konim bad in cod ro run konim

rahnema1
شنبه 08 شهریور 1393, 12:25 عصر
ye soale dg nemishe code svm k ghablan neveshtim ba in code ro betunim hamzaman ejra konim?k dg nayaym aval svm k ghablan neveshtim ro run konim bad in cod ro run konim

اون قبلی را لازم نیست دیگه اجرا کنید همین یکی کافیه

hhamidy
پنج شنبه 10 اردیبهشت 1394, 23:09 عصر
سلام.

برای کد roc or auc نوشتم :

[X,Label,auc]=perfcurve(Ytest,class_est ,1);

و این خطا رو داشت:

Error using perfcurve>preparedata (line 1192)
Array of labels must be a vector.


Error in perfcurve (line 330)
[scores,labels,weights,ncv] = preparedata(scores,labels,weights);

ah.ketabdar
چهارشنبه 21 مهر 1395, 18:42 عصر
با سلام خدمت همه دوستان
یک سوال من از کد LBP (local binary pattern) برای تشخیص سرطان در پردازش تصویر استفاده کردم
اما تو این کد تابع get map را متوجه نشدم ؟ اصلا برای چی از این تابع استفاده می کنیم؟
دو خط از این تابع اصلا برام مفهوم نیست ممنون میشم علتش را بگین
با تشکر

j = bitset(bitshift(i,1,samples),1,bitget(i,samples));
numt = sum(bitget(bitxor(i,j),1:samples))