Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовой проект групп 3341 и 3382 / DMModules / J48Module
.pas unit J48Module;
interface
uses
BaseModule,
RuleItem,
QExtCtrls,
J48TreeClass,
ItemSet,
Instances,
ModelSelector,
J48Form,
Core,
DmmConstants,
Attribute,
DmmTypes,
Classes;
type TJ48Module = class (TBaseModule)
private
m_Instances: TDMInstances;
m_Core: TDMCore;
// дерево для построения классификации
m_Tree: J48Tree;
//коэффициент доверия
m_CF: double;
//максимально в листе
m_MinNoObj: integer;
m_J48Panel: TTJ48Form;
m_PruneTree: boolean;
m_Raise: boolean;
m_RealIndex: IArray;
procedure buildClassifier();
public
procedure build();
procedure InitView(var inst: TDMCore);
end;
implementation
uses SysUtils, StdCtrls, Controls;
procedure TJ48Module.build();
begin
buildClassifier();
end;
procedure TJ48Module.InitView(var inst: TDMCore);
var
i, j: integer;
bm: TBaseModule;
b: PAnsiChar;
begin
m_Core := inst;
m_Instances := inst.GetData();
m_J48Panel := TTJ48Form.create(nil);
bm := self as TBaseModule;
m_J48Panel.setModule(bm);
j := 0;
SetLength(m_RealIndex, m_Instances.numAttributes);
for i := 0 to m_Instances.numAttributes-1
do
begin
if (m_Instances.attribute(i).attributeType = ATTRIBUTE_TYPE_NOMINAL)
then
begin
m_J48Panel.ComboBox1.AddItem(m_Instances.attribute(i).toString, m_Instances.attribute(i));
m_RealIndex[j] := i;
j := j+1;
end;
end;
b := PAnsiChar('');
m_J48Panel.Memo1.SetTextBuf(b);
m_J48Panel.ShowModal;
end;
procedure TJ48Module.buildClassifier();
var
tree: String;
b: PAnsiChar;
ss: TStrings;
rules: TList;
ru1:^TDMRuleItem;
ru : TDMRuleItem;
begin
try
m_CF := StrToFloat(m_J48Panel.Edit1.text);
m_MinNoObj := StrToInt(m_J48Panel.Edit2.text);
// finally
except
b := PAnsiChar('Введите правильные значения атрибутов');
m_J48Panel.Memo1.SetTextBuf(b);
exit;
end;
if (m_J48Panel.ComboBox1.ItemIndex<0)
then
begin
b := PAnsiChar('Выберете атрибут для построения классификации');
m_J48Panel.Memo1.SetTextBuf(b);
exit;
end;
m_Instances.setClassIndex(m_RealIndex[m_J48Panel.ComboBox1.ItemIndex]);
m_PruneTree := m_J48Panel.CheckBox1.Checked;
m_Raise := m_J48Panel.CheckBox3.Checked;
m_Tree := J48Tree.create(MSelector.Create(m_Instances, m_MinNoObj), m_PruneTree, m_CF, m_Raise, true);
m_Tree.buildClassifier(m_Instances);
tree := m_Tree.toString();
b := PAnsiChar(tree);
m_J48Panel.Memo1.SetTextBuf(b);
rules := m_Tree.makeRules();
m_Core.SetRules(rules);
end;
end.
interface
uses
BaseModule,
RuleItem,
QExtCtrls,
J48TreeClass,
ItemSet,
Instances,
ModelSelector,
J48Form,
Core,
DmmConstants,
Attribute,
DmmTypes,
Classes;
type TJ48Module = class (TBaseModule)
private
m_Instances: TDMInstances;
m_Core: TDMCore;
// дерево для построения классификации
m_Tree: J48Tree;
//коэффициент доверия
m_CF: double;
//максимально в листе
m_MinNoObj: integer;
m_J48Panel: TTJ48Form;
m_PruneTree: boolean;
m_Raise: boolean;
m_RealIndex: IArray;
procedure buildClassifier();
public
procedure build();
procedure InitView(var inst: TDMCore);
end;
implementation
uses SysUtils, StdCtrls, Controls;
procedure TJ48Module.build();
begin
buildClassifier();
end;
procedure TJ48Module.InitView(var inst: TDMCore);
var
i, j: integer;
bm: TBaseModule;
b: PAnsiChar;
begin
m_Core := inst;
m_Instances := inst.GetData();
m_J48Panel := TTJ48Form.create(nil);
bm := self as TBaseModule;
m_J48Panel.setModule(bm);
j := 0;
SetLength(m_RealIndex, m_Instances.numAttributes);
for i := 0 to m_Instances.numAttributes-1
do
begin
if (m_Instances.attribute(i).attributeType = ATTRIBUTE_TYPE_NOMINAL)
then
begin
m_J48Panel.ComboBox1.AddItem(m_Instances.attribute(i).toString, m_Instances.attribute(i));
m_RealIndex[j] := i;
j := j+1;
end;
end;
b := PAnsiChar('');
m_J48Panel.Memo1.SetTextBuf(b);
m_J48Panel.ShowModal;
end;
procedure TJ48Module.buildClassifier();
var
tree: String;
b: PAnsiChar;
ss: TStrings;
rules: TList;
ru1:^TDMRuleItem;
ru : TDMRuleItem;
begin
try
m_CF := StrToFloat(m_J48Panel.Edit1.text);
m_MinNoObj := StrToInt(m_J48Panel.Edit2.text);
// finally
except
b := PAnsiChar('Введите правильные значения атрибутов');
m_J48Panel.Memo1.SetTextBuf(b);
exit;
end;
if (m_J48Panel.ComboBox1.ItemIndex<0)
then
begin
b := PAnsiChar('Выберете атрибут для построения классификации');
m_J48Panel.Memo1.SetTextBuf(b);
exit;
end;
m_Instances.setClassIndex(m_RealIndex[m_J48Panel.ComboBox1.ItemIndex]);
m_PruneTree := m_J48Panel.CheckBox1.Checked;
m_Raise := m_J48Panel.CheckBox3.Checked;
m_Tree := J48Tree.create(MSelector.Create(m_Instances, m_MinNoObj), m_PruneTree, m_CF, m_Raise, true);
m_Tree.buildClassifier(m_Instances);
tree := m_Tree.toString();
b := PAnsiChar(tree);
m_J48Panel.Memo1.SetTextBuf(b);
rules := m_Tree.makeRules();
m_Core.SetRules(rules);
end;
end.
Соседние файлы в папке DMModules