Matlab'de Sınıflandırma Problemi
-
merhaba arkadaşlar bu aralar matlab kullanarak bir iş üzerinde çalışıyorum meraktan. daha önce uğraşanlar olmuştur sınıflandırma işleriyle fakat ben biraz farklı birşey istiyorum sadece basit bi kısım değişiklik. Şimdi sınıflandırma yapmak isteyenlerin en baba kullandığı veri fisher's Iris datadır fakat ben bu veriyi txt olarak matlaba load etmek istiyorum herhangi data formatında değil yani. load ettikten sonrada sınıflandıracağım tek problemim load etmek. load etmek için kullandığım kodlar:
a=zeros(500,4);
s=cell(500,1);
cnt=0;
fid=fopen('irisdata.txt');
while feof(fid)
cnt=cnt+1;
at=fscanf(fid,'%g,%g,%g,%g');
st=fscanf(fid,',%s');
a(cnt,:)=at;
s{cnt,:}=st;
end
bu kodlarda bir döngü sağlayarak verileri sırayla okutmak ve txt dosyasından matlabe aktarmak fakat yaptığımda ne isim olarak görebiliyorum ne de sınıflandırma kriterlerini doğru alabiliyorum. hücrelerde versicolor tarzı şeyler yazması gerekirken [] ve sınıflandırmada kullanılacak verilerde 0 yazıyor.
buyrun bu da txt halindeki verileri linki http://www.dosya.tc/server35/BsOQel/irisdata.txt.html
teşekkürler
-
ekrana bir adet at ve st bastırabilir misin çıktıyı merak ettim
-
Daft bunu yazdı
ekrana bir adet at ve st bastırabilir misin çıktıyı merak ettim
hocam hücreler boş kalıyor kısaca
0 []
şeklinde sanırım feof ta bir hata varda çözemedim
-
oyun oynuyordum bakamadım
scilab kuruyorum şuan umarım temel matlab komutlarını destekliyordur
zaten büyük ihtimal fscan'da hata var (daha önce hiç kullanmadım verdiğin kodları, deneye deneye bulacam)
-
fid -1 oluyor. 0 ya da 1 alması lazım. hocam sen şimdi o txt dosyasındaki verileri okumak istiyorsun değil mi problem şu aşamada bu. doğru mu anladım
-
fid=fopen('irisdata.txt');
C=textscan(fid,'%s',150,'delimiter','\n');
for i=1:150
d{i}=textscan(C{1,1}{1,i},'%d %d %d %s',150,'delimiter',',');
end
d'nin içinden istediklerini alırsın hocam
-
tuncaxxz bunu yazdı
fid=fopen('irisdata.txt');
C=textscan(fid,'%s',150,'delimiter','\n');
for i=1:150
d{i}=textscan(C{1,1}{1,i},'%d %d %d %s',150,'delimiter',',');
end
d'nin içinden istediklerini alırsın hocam
i 1 to 150 yapmak yerine 1 to size(C) yapılmalı diye düşünüyorum (matlab'da matrix boyutu size mı hatırlamıyorum)
-
arkadaşlar yorumlarınız için çok sağolun ben problemi çözdüm kodları ekliyorum ihtiyacı olan arkadaşlar yararlanabilirler herşey için tekrar teşekkürler problem feof daymış.
a=zeros(500,4); s=cell(500,1); fid=fopen('irisdata.txt'); cnt=0; cnt1=0; while ~feof(fid) at=fscanf(fid,'%g,%g,%g,%g'); if ~isempty(at) cnt=cnt+1; a(cnt,:)=at; end st=fscanf(fid,',%s'); if ~isempty(st) cnt1=cnt1+1; s{cnt1}=st; end end a=a(1:cnt,:); s=s(1:cnt1,:);