9 Mayıs 2014 Cuma

Rastgele veri üretmek,Normalizasyon yöntemi(min-max,z score)

ihtiyacımız olanlar ; button,2 tane memo, combobox

ilk olarak button1 ın onclick event'ına aşagıdaki kodları giriyoruz.

procedure TForm1.Button1Click(Sender: TObject);
var
 i:integer;
 x:real;
begin
 Memo1.Clear;
 Randomize;   // bu işlem sayesınde button'a her tıkladıgımızda farklı sayılar geliyo
 for i:=1 to 100 do          //örneklem geniligini kendimiz 100 olrak belirledik
 begin
  x:=Random*(10-0)+0;  //U(0,10);
  memo1.Lines.Add(Floattostr(x));
 end;
end;


Not: Randomrange tamsayılarda çalıştığı için burada Random kullanarak real sayılar elde etmeye çalıştık.
Örneklem büyüklüğü 100 olarak almamaza ragmen bir editbox koyarak kullanıcının girmesini sağlayabiliriz.

combobox1 in onchange event'ına aşagıdaki kodları giriyoruz ;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
data,x:array of double;
n,i:integer;
min,max,xbar,std:real;
begin
 n:=memo1.Lines.Count;
 SetLength(data,n);
 SetLength(x,n);
 for i:=0 to n-1 do
  data[i]:=strtofloat(memo1.lines[i]);
 memo2.clear;
 if ComboBox1.ItemIndex=0 then
 begin
  min:=MinValue(data);
  max:=MaxValue(data);
   for i:=0 to n-1 do
    begin
    x[i]:=(data[i]-min)/(max-min);
    memo2.Lines.add(formatfloat('0.##0',x[i]));
    end;

 end
 else if ComboBox1.ItemIndex=1 then
 begin
   xbar:=Mean(data);
   std:=stddev(data);
    for i:=0 to n-1 do
     begin
      x[i]:=((data[i]-xbar)/std);
      memo2.Lines.add(formatfloat('0.##0',x[i]));

     end;
 end;
end;

end.





Bu kod da kullandığımız önemli sayılan kodlar aşağıda listelenmiştir.

 min:=MinValue();    //  minimum değeri bulur.
 max:=MaxValue();   //  maximum değeri bulur.
 xbar:=Mean();          //  ortalama bulur.
 std:=stddev();           //  Standart Sapmayı bulur.

Hiç yorum yok:

Yorum Gönder