⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.~pas

📁 基于libsvm
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, ComCtrls, ExtCtrls,Math, jpeg,Unit2,Unit3,Unit4, convert;



type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    OpenDialog1: TOpenDialog;
    N17: TMenuItem;
    N18: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    N21: TMenuItem;
    N22: TMenuItem;
    N23: TMenuItem;
    N24: TMenuItem;
    N25: TMenuItem;
    PaintPanel: TPanel;
    SaveDialog1: TSaveDialog;
    N16: TMenuItem;
    N26: TMenuItem;
    N27: TMenuItem;
    RichEdit1: TRichEdit;
    N28: TMenuItem;
    N29: TMenuItem;
    OpenDialog2: TOpenDialog;
    SaveDialog2: TSaveDialog;
    N3: TMenuItem;
    N30: TMenuItem;
    OpenDialog3: TOpenDialog;
    N32: TMenuItem;
    N31: TMenuItem;
    N33: TMenuItem;
    N34: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure N13Click(Sender: TObject);
    procedure N20Click(Sender: TObject);
    procedure N26Click(Sender: TObject);
    procedure N16Click(Sender: TObject);
    procedure N27Click(Sender: TObject);
    procedure N18Click(Sender: TObject);
    procedure N28Click(Sender: TObject);
    procedure N23Click(Sender: TObject);
    procedure N21Click(Sender: TObject);
    procedure N19Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N29Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N30Click(Sender: TObject);
    procedure N32Click(Sender: TObject);
    procedure N31Click(Sender: TObject);
    procedure N33Click(Sender: TObject);
    procedure N34Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type TMatrix = array of array of real;

type svm_param = class
public

  //  p : real;
 // svm_type1 : integer;


   degree : real;
   C : real;
   gamma : real;
   coef0 : real;
   nu : real;
   p : real;
   cache_size : real;
   eps : real;


  kernel_type : integer;
  svm_type : integer;

  classification_type : integer;
  nr_fold : integer;
   workingsetsize : integer;
   subset_no : integer;

   procedure set_degree(degree_ : real); virtual;stdcall;abstract;
   procedure set_c(c_ : real); virtual;stdcall;abstract;
   procedure set_gamma(g_ : real); virtual;stdcall;abstract;
   procedure set_coef0(coef0_ : real); virtual;stdcall;abstract;
   procedure set_nu(nu_ : real); virtual;stdcall;abstract;
   procedure set_p(p_ : real); virtual;stdcall;abstract;
   procedure set_cache_size(cache_size_ : real); virtual;stdcall;abstract;
   procedure set_eps(eps_ : real); virtual;stdcall;abstract;

   procedure set_kernel(kernel_tp : integer); virtual;stdcall;abstract;
   procedure set_svmtype(svm_tp : integer); virtual;stdcall;abstract;
   procedure set_classification_type(c_type : integer); virtual;stdcall;abstract;
   procedure set_nr_fold(nr_fold_ : integer); virtual;stdcall;abstract;
   procedure set_workset(workset_size : integer); virtual;stdcall;abstract;
   procedure set_subset_no(subset_no_ : integer); virtual;stdcall;abstract;
   procedure set_param(degree_, c_, g_, coef0_, nu_, p_, cache_size_, eps_ : real;
        kernel_tp, svm_tp, c_type, nr_fold_, workset_size, subset_no_ : integer); virtual;stdcall;abstract;
end;


var
  Form1: TForm1;
  input_file_name : PChar;
  input_file_loaded : boolean;

  param_group_file_name : PChar;
  param_group_file_loaded : boolean;

  import_file : PChar;
  import_file_loaded : boolean;

  output_file : PChar;
  output_file_loaded : boolean;

  model_file_name : PChar;
  model_file_loaded : boolean;
  model_created : boolean;

  test_file_name : PChar;
  test_file_loaded : boolean;
  result_file : PChar;

  predict_result_file : PChar;

  gamma : real;
  C : real;
  param : svm_param;

  input_file_filterred : PChar;
  test_file_filterred : PChar;
 // param : MaxMin.svm_param;
//  param : MaxMin.svm_param;

implementation


uses MaxMin;



{$R *.dfm}


procedure PaintPicture(input_file_name: PChar);
var dense_file : PChar;
  matrix : TMatrix;
  L : integer;
  i,j : integer;
  y, x1, x2 : real;
  Max1,Min1,Max2,Min2:double;
  dom_width, dom_height : real;
  pixel_x, pixel_y : real;
  a , b : integer;
begin
  dense_file := 'matrix.tmp';
  L := sparse2dense(input_file_name, dense_file);
  ExtractMatrixFromDense(dense_file, L, matrix);

  dom_height := Form1.PaintPanel.Height;
  dom_width := Form1.PaintPanel.Width;

  Max1 := -1000000;
  Min1 := 1000000;
  Max2 := -100000;
  Min2 := 1000000;

  for i := 0 to L-1  do
  begin
        if matrix[i,1]>Max1 then Max1 := matrix[i,1];
        if matrix[i,1]<Min1 then Min1 := matrix[i,1];
        if matrix[i,2]>Max2 then Max2 := matrix[i,2];
        if matrix[i,2]<Min2 then Min2 := matrix[i,2];
  end;

  for i:= 0 to L-1 do
  begin
     y := matrix[i,0];
     x1 := matrix[i,1];
     x2 := matrix[i,2];
     pixel_x := (x1-Min1)*dom_width/(Max1-Min1)+Form1.PaintPanel.Left;
     pixel_x := round(pixel_x);
     pixel_y := (x2-Max2)*dom_height/(Min2-Max2)+Form1.PaintPanel.Top;
     pixel_y := round(pixel_y);
     a := floor(pixel_x);
     b := floor(pixel_y);
     Form1.Canvas.Pen.Width := 3;

     if y = 1 then
     begin
     Form1.Canvas.Pen.Color := ClRed;
     Form1.Canvas.Ellipse(a-1,b-1,a+1,b+1);
    // Form1.Canvas.Rectangle(a-2,b-2,a+2,b+2);
  //   Form1.Canvas.
     end
     else if y = 0 then
     begin
     Form1.Canvas.Pen.Color := ClBlue;
     Form1.Canvas.Ellipse(a-1,b-1,a+1,b+1);
     end
     else if y = -1 then
     begin
     Form1.Canvas.Pen.Color := ClBlack;
     Form1.Canvas.Ellipse(a-1,b-1,a+1,b+1);
     end
     else if y = 8 then
     begin
      Form1.Canvas.Pen.Color := ClGreen;
      Form1.Canvas.Pen.Width := 1;
      Form1.Canvas.Ellipse(a-1,b-1,a+1,b+1);
     end
     else if y = 3 then
     begin

       Form1.Canvas.Pen.Color := clPurple	;
       Form1.Canvas.Ellipse(a-4,b-4,a+4,b+4);


     end;


    // Form1.Canvas.Ellipse(a-1,b-1,a+1,b+1);//)/Create(a,b);           //Ellipse(a-3,b-3,a+3,b+3);

  end;



  

end;


procedure TForm1.Button1Click(Sender: TObject);
var
c : real;
b : real;
i : Integer;
//dense_file :PChar;
//matrix : TMatrix;
begin

        //ExtractMatrixFromDense(dense_file, matrix);
      //  c := matrix[0,1];
        ///a := matrix[1,1];

  // i := Max1(5,3,9);
  // showmessage(inttostr(i));


  
{  gamma := estimate_gamma('heart_scale');
  c := estimate_c(gamma, 'heart_scale');
  showmessage(floattostr(c));
  svm_train(gamma, c, 'heart_scale','heart_scale.model');
//  Showmessage(floatTostr(svm_test('heart_scale', 'heart_scale.model')));
  b :=  svm_test('heart_scale', 'heart_scale.model');
  //c := c+ 5;
  showmessage(floattostr(b));
                               }

 //showmessage('er');
 //res := Max1(3,4,2);
 //showmessage(IntToStr(Min1(11,4,12)));

end;

procedure TForm1.N4Click(Sender: TObject);
begin
  ParamSet.Show;
end;

procedure TForm1.N2Click(Sender: TObject);

begin

//  svm_pointer := CreateParamObject;
//  param  := CreateParamObject;
//  param.set_c(13);
// param.set_gamma(0.34);
// param.set_kernel(100);
// param := svm_pointer^;
//  svm_pointer^.set_c(3.5);
//  showmessage(floattostr(param.gamma));
//  showmessage(inttostr(param.kernel_type));
//showmessage(floatToStr(show_gamma(param)));


//OpenDialog1.InitialDir := 'D:/';//ExtractFilePath(Application.ExeName);

    if OpenDialog1.Execute then
    begin
     // gamma := estimate_gamma(PChar(OpenDialog1.FileName));
      input_file_name :=  PChar(OpenDialog1.FileName);
      input_file_loaded := true;
      Application.MessageBox(PChar(Input_file_name + ' successfully loaded!'),PChar('提示'), MB_OK);

//      ShowMessage(OpenDialog1.FileName);
    end;
end;

procedure TForm1.N9Click(Sender: TObject);
begin
  // OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName);
    if OpenDialog2.Execute then
    begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -