📄 main.~pas
字号:
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 + -