Język Gython programu AdvancedMiner został rozbudowany o kilka funkcji, które oferują prosty i szybki sposób budowania, testowania i stosowania modeli klasyfikacyjnych, aproksymacyjnych i skupieniowych.
Funkcja approximator tworzy w repozytorium zestaw obiektów do budowania i testowania modeli aproksymacyjnych.
Składnia:
approximator(trainTableName, target, algorithmSettings[, testTableName = s]
[, prefix = s][, validationTableName = s][, usageDict = d][, usages = d][, sqlAttributes = d]
[, categorical = l][, numerical = l][, repoName = s][, scoringLanguage = langname])
Objaśnienie parametrów:
trainTableName - nazwa tabeli w bazie danych zawierającej dane trenujące,
target - nazwa zmiennej o funkcji target w zbiorze danych trenujących i testujących,
algorithmSettings - nazwa obiektu z ustawieniami algorytmu; powinien to być obiekt typu FeedforwardNeuralSettings, IRLSSettings, RegressionSettings lub WeightedRegressionSettings.
testTableName - nazwa tabeli w bazie danych z danymi testującymi; w przypadku pominięcia tego parametru do testowania modelu zostaną wykorzystane dane trenujące,
prefix - przedrostek, który zostanie dodany do nazw wszystkich utworzonych obiektów; w przypadku pominięcia tego parametru jako przedrostek posłuży nazwa tabeli z danymi trenującymi.
validationTableName - nazwa tabeli w bazie danych z danymi walidacyjnymi,
usageDict - słownik określające dodatkowe role zmiennych; aby określić rolę atrybutu należy podać jego nazwę jako klucz pozycji w słowniku i odpowiedni atrybut klasy UsageOption jako odpowiadającą wartość, n.p.
usageDict = { 'att1' : UsageOption.inactive, 'att3' : UsageOption.supplementary }
usages - słownik określające dodatkowe role zmiennych; aby określić, które zmienne pełnią określoną rolę, należy dodać odpowiedni atrybut klasy UsageOption jako klucz pozycji w słowniku i listę atrybutów jako odpowiadającą wartość, np.
usages = { UsageOption.inactive : ['att1', 'att2], UsageOption.supplementary : 'att3' }
sqlAttributes - słownik z atrybutami obliczanymi za pomocą instrukcji SQL, w którym klucze odpowiadają nazwom atrybutów a wartości to instrukcje SQL,
categorical - lista zmiennych, które należy traktować jako kategorialne,
numerical - lista zmiennych, które należy traktować jako numeryczne,
repoName - nazwa repozytorium metadanych, w którym zostaną utworzone wszystkie obiekty; w przypadku pominięcia tego parametru wykorzystane zostanie repozytorium domyślne,
scoringLanguage - określa język programowania, w którym ma zostać utworzony kod scoringowy, o ile zaistnieje taka potrzeba.
Funkcja classifier tworzy w repozytorium zestaw obiektów do budowania i testowania modeli klasyfikacyjnych.
Składnia:
classifier(trainTableName, target, algorithmSettings[, testTableName = s]
[, positive = s][, prefix = s][, validationTableName = s][, usageDict = d][, usages = d]
[, ldTableName = s][, sqlAttributes = d][, categorical = l][, numerical = l][, testQuantiles = n]
[, inactiveAsDefault = 0 | 1][, repoName = s][, scoringLanguage = langname])
Objaśnienie parametrów:
trainTableName - nazwa tabeli w bazie danych zawierającej dane trenujące,
target - nazwa zmiennej o roli target w zbiorze danych trenujących i testujących,
algorithmSettings - nazwa obiektu z ustawieniami algorytmu; powinien to być obiekt typu: BivariateProbitSettings, DiscriminantSettings, FeedforwardNeuralNetSettings, KohonenClasificationSettings, LogisticRegressionSettings lub TreeSettings.
testTableName - nazwa tabeli w bazie danych z danymi testującymi; w przypadku pominięcia tego parametru do testowania modelu zostaną wykorzystane dane trenujące,
positive - kategoria zmiennej target, która będzie traktowana jako dobra z punktu widzenia obliczania kwantyli przy klasyfikacji; w przypadku pominięcia kwantyle nie zostaną policzone i dostępne będą jedynie statystyki dla zmiennej target oraz macierz pomyłek.
prefix - przedrostek, który zostanie dodany do nazw wszystkich utworzonych obiektów; w przypadku pominięcia tego parametru jako przedrostek posłuży nazwa tabeli z danymi trenującymi,
validationTableName - nazwa tabeli w bazie danych z danymi walidacyjnymi,
usageDict - słownik określające dodatkowe role zmiennych; aby określić rolę atrybutu należy podać jego nazwę jako klucz pozycji w słowniku i odpowiedni atrybut klasy UsageOption jako odpowiadającą wartość, n.p.
usageDict = { 'att1' : UsageOption.inactive, 'att3' : UsageOption.supplementary }
usages - słownik określające dodatkowe role zmiennych; aby określić, które zmienne pełnią określoną rolę, należy dodać odpowiedni atrybut klasy UsageOption jako klucz pozycji w słowniku i listę atrybutów jako odpowiadającą wartość, n.p.
usages = { UsageOption.inactive : ['att1', 'att2], UsageOption.supplementary : 'att3' }
ldTableName - nazwa tabeli na podstawie której utowrzony zostanie obiekt LogicalData,
sqlAttributes - słownik z atrybutami obliczanymi za pomocą instrukcji SQL, w którym klucze odpowiadają nazwom atrybutów a wartości to instrukcje SQL,
categorical - lista zmiennych, które należy traktować jako kategorialne,
numerical - lista zmiennych, które należy traktować jako numeryczne,
testQuantiles - ile kwantyli zostanie wykorzystanych do obliczenia Lift-u i ROC; domyślna wartość to 50,
inactiveAsDefault - wartość 1 oznacza, że wszystkie zmienne z wyjątkiem pełniącej funkcję target będą nieaktywne, o ile ich rola nie zostanie jawnie zmieniona za pomocą parametrów usages lub usageDict; wartość 0 (domyślna) oznacza, że wszystkie zmienne będą aktywne.
repoName - nazwa repozytorium metadanych, w którym zostaną utworzone wszystkie obiekty; w przypadku pominięcia tego parametru wykorzystane zostanie repozytorium domyślne,
scoringLanguage - określa język programowania, w którym ma zostać utworzony kod scoringowy, o ile zaistnieje taka potrzeba.
Przykład 3.9. Przykład podstawowego zastosowania funkcji classifier
classifier('german_credit', 'Class', TreeSettings() )
Funkcja clusterer tworzy w repozytorium zestaw obiektów do budowania i testowania modeli wykorzystujących analizę skupień.
Składnia:
clusterer(trainTableName[, algorithmSettings][, prefix = s]
[, validationTableName = s][, usageDict = d][, usages = d][, ldTableName = s][, sqlAttributes = d]
[, categorical = l][, numerical = l][, testQuantiles = n][, repoName = s][, scoringLanguage = langname])
Objaśnienie parametrów:
trainTableName - nazwa tabeli w bazie danych zawierającej dane trenujące,
algorithmSettings - nazwa obiektu z ustawieniami algorytmu; powinien to być obiekt typu KohonenClusteringSettings lub KMeansSettings; domyślnie ustawienia algorytmu nie są wykorzystywane,
prefix - przedrostek, który zostanie dodany do nazw wszystkich utworzonych obiektów; w przypadku pominięcia tego parametru jako przedrostek posłuży nazwa tabeli z danymi trenującymi,
validationTableName - nazwa tabeli w bazie danych z danymi walidacyjnymi,
usageDict - słownik określające dodatkowe role zmiennych; aby określić rolę atrybutu należy podać jego nazwę jako klucz pozycji w słowniku i odpowiedni atrybut klasy UsageOption jako odpowiadającą wartość, n.p.
usageDict = { 'att1' : UsageOption.inactive, 'att3' : UsageOption.supplementary }
usages - słownik określające dodatkowe role zmiennych; aby określić, które zmienne pełnią określoną rolę, należy dodać odpowiedni atrybut klasy UsageOption jako klucz pozycji w słowniku i listę atrybutów jako odpowiadającą wartość, n.p.
usages = { UsageOption.inactive : ['att1', 'att2], UsageOption.supplementary : 'att3' }
ldTableName - nazwa tabeli na podstawie której utowrzony zostanie obiekt LogicalData,
sqlAttributes - słownik z atrybutami obliczanymi za pomocą instrukcji SQL, w którym klucze odpowiadają nazwom atrybutów a wartości to instrukcje SQL,
categorical - lista zmiennych, które należy traktować jako kategorialne,
numerical - lista zmiennych, które należy traktować jako numeryczne,
repoName - nazwa repozytorium metadanych, w którym zostaną utworzone wszystkie obiekty; w przypadku pominięcia tego parametru wykorzystane zostanie repozytorium domyślne,
scoringLanguage - określa język programowania, w którym ma zostać utworzony kod scoringowy, o ile zaistnieje taka potrzeba.
Dzięki funkcji applier można w prosty sposób stosować modele aproksymacje, klasyfikacyjne, oparte na analizie skupień i szeregach czasowych, oraz modele przeżycia.
Składnia:
applier(inputTableName, modelName[, outputTableName = s][, scoreColumnName = s]
[, targetColumnName = 's'][, clusterColumnName = s][, columnsToCopy = l][, positive = s]
[, clusterLevel = n][, clusterLevelFromLeaf = 0 | 1][, deleteObjects = 0 | 1][, customApplyItems = l]
[, prefix = s][, firstTimePoint = n][, lastimePoint = n][, numberOfTimePoints = n][, repoName = s])
Objaśnienie parametrów:
inputTableName - nazwa tabeli z danymi, do których ma zostać zastosowany model; tabela ta musi zawierać wszystkie zmienne określone w sygnaturze modelu,
modelName - nazwa modelu, który ma zostać zastosowany,
outTableName - nazwa tabeli wynikowej, która zostanie utworzona; jeśli ten parametr zostanie pominięta, nazwa tabeli wynikowej zostanie utworzona poprzez dodanie przedrostka _scored do nazwy tabeli wejściowej,
scoreColumnName - nazwa kolumny w tabeli wynikowej z ocenami obserwacji wygenerowanymi przez model; domyślnie kolumna ta ma nazwę score,
targetColumnName - nazwa kolumny w tabeli wynikowej z wartościami zmiennej target obliczonymi przez model; domyślnie kolumna ta ma nazwę target; ten parametr jest wykorzystywany tylko w przypadku stosowania modeli klasyfikacyjnych,
clusterColumnName - nazwa kolumny w tabeli wynikowej zawierającej skupisko przypisane przez model; domyślnie kolumna ta ma nazwę cluster; ten parametr jest wykorystywany tylko w przypadku stosowania modeli opartych na analazie skupień,
columnsToCopy - lista nazw kolumn, które będą przekopiowane bezpośrednio z tabeli wejściowej do tabeli wynikowej, n.p.
columnsToCopy = ['Class', 'sepallength']
Jeżeli zachodzi potrzeba zmiany nazwy danej kolumny w tabeli wynikowej, nazwa z tabeli wejściowej i nowa nazwa w tabeli wynikowej powinny być wpisane jako para, n.p.:
columnsToCopy = [('Class', 'real_target'), 'sepallength']
W tym przykładzie kolumna z tabeli wejściowej o nazwie Class zostanie przekopiowane do tabeli wynikowej pod nazwą real_target.
positive - pozytywna wartość zmiennej target dla algorytmu oceniającego; domyślnie wartość ta jest dobierana na podstawie ustawień samego modelu; ten parametr jest wykorzystywany tylko w przypadku modeli klasyfikacyjnych;
clusterLevel - poziom w hierarchii drzewa modelu opartego na analizie skupień, na którym obserwacje zostaną przypisane do skupiska; ten parametr jest wykorzystywany tylko w przypadku modeli opartych na analizie skupień,
clusterLevelFromLeaf - wartość 0 oznacza, że parametr clusterLevel oznacza odległość od korzenia drzewa, wartość 1 - od liścia; ten parametr jest wykorzystywany tylko w przypadku modeli opartych na analizie skupień,
deleteObjects - wartość 1 oznacza, że obiekty utworzone w repozytorium zostaną usunięte po zakończeniu stosowania modeu, wartość 0 (domyślna) oznacza, że obiekty nie zostaną usunięte.
customApplyItems - lista dodatkowych elementów dodanych do ApplyOutput, n.p. w celu uzyskania drugiej w kolejności najlepszej wartości zmiennej target,
repoName - nazwa repozytorium metadanych, w którym zostaną utworzone wszystkie obiekty; w przypadku pominięcia tego parametru wykorzystane zostanie repozytorium domyślne.
Przykład 3.15. Uproszczony proces budowania i zastosowania modelu opartego na analizie skupień
# w wyniku wykonania tego skryptu utworzona zostanie tabela o nazwie 'german_credit_scored' clusterer('german_credit') execute('german_credit_bt') applier('german_credit_train', 'german_credit_model', clusterLevel=3, clusterLevelFromLeaf=0)
Przykład 3.16. Uproszczony proces budowania, testowania i stosowania modelu aproksymacyjnego
# w wyniku wykonania tego skryptu utworzona zostanie tabela o nazwie 'iris_scored' approximator('iris', 'sepallength', LinearRegressionSettings() ) execute('iris_bt') applier('iris_train', 'iris_model' )
Przykład 3.17. Uproszczony proces budowania, testowania i stosowania modelu klasyfikacyjnego
# w wyniku wykonania tego skryptu utworzona zostanie tabela o nazwie 'iris_scored' # oraz zasotanie otwarty arkusz kalkulacyjny Excel z zawartoscia tej tabeli classifier('iris', 'Class', FeedforwardNeuralNetSettings(maxNumberOfIterations=10)) execute('iris_bt') applier('iris_train', 'iris_model', customApplyItems= [ClassificationRankItem('2nd_target', ClassificationOutputType.predictedCategory, 1)] ) Office.createSpreadsheet().setCellDataArray(0,0, tableRead('iris_scored'))