Скачиваний:
28
Добавлен:
01.05.2014
Размер:
2.82 Кб
Скачать
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.
Соседние файлы в папке DMModules