The following scripts present the abilities of the Kohonen Networks module in AdvancedMiner. Please note that these scripts are divided into functional parts and do not include the data which is required to run them in AdvancedMiner Client . The full source with the data can be found in the Appendix Examples.
Example 36.1. Classification building example
The script below shows how to build a model using the LVQ algorithm.
# --- --- data preparation --- ---
input_data_name = 'iris'
pd = PhysicalData(input_data_name)
save('physical_data', pd)
ld = LogicalData(pd)
save('logical_data', ld)
# --- --- LEARNING - 1st stage --- ---
map_height = 12
map_width = 12
# --- algorithm settings for SOM ---
som_cfs = ClusteringFunctionSettings()
som_cfs.logicalData = ld
som_set = KohonenClusteringSettings()
som_set.maxNumberOfIterations = 30
som_set.height = map_height
som_set.width = map_width
som_cfs.algorithmSettings = som_set
save('SOM_cf_set', som_cfs)
# --- SOM model building ---
SOM_model_name = 'SOM_model_' + input_data_name
som_mbt = MiningBuildTask('physical_data', 'SOM_cf_set', SOM_model_name)
save('SOM_mbt', som_mbt)
execute('SOM_mbt')
# --- --- LEARNING - 2nd stage --- ---
# --- algorithm settings for LVQ ---
lvq_cfs = ClassificationFunctionSettings()
lvq_cfs.logicalData = ld
lvq_cfs.getAttributeUsageSet().getAttribute('Class').setUsage(UsageOption.target)
lvq_set = KohonenClassificationSettings(ClassificationLearningAlgorithmType.lvq21)
lvq_set.height = map_height
lvq_set.width = map_width
lvq_cfs.algorithmSettings = lvq_set
save('LVQ_cf_set', lvq_cfs)
# --- LVQ model building ---
LVQ_model_name = 'LVQ_model_' + input_data_name
lvq_mbt = MiningBuildTask('physical_data', 'LVQ_cf_set', LVQ_model_name )
lvq_mbt.inputModelName = SOM_model_name
save('LVQ_mbt', lvq_mbt)
execute('LVQ_mbt')
Example 36.2. Clustering building example
This example shows how to build a clustering model using the Kohonen SOM algorithm.
# --- --- data preparation --- ---
input_data_name = 'iris'
pd = PhysicalData(input_data_name)
save('physical_data', pd)
ld = LogicalData(pd)
save('logical_data', ld)
# --- --- LEARNING --- ---
# --- algorithm settings for SOM ---
som_cfs =ClusteringFunctionSettings()
som_cfs.logicalData =ld
som_cfs.getAttributeUsageSet().getAttribute('Class').setUsage(UsageOption.inactive)
som_set = KohonenClusteringSettings()
som_set.batchLearning = FALSE
som_set.beginLearningRate = 0.3
som_set.beginNeighbourhoodRate = 2
som_set.dataRandomization = TRUE
som_set.setDistanceFunction(ClusteringDistanceFunction.euclidean)
som_set.endLearningRate = 0.1
som_set.endNeighbourhoodRate = 0
som_set.height = 15
som_set.maxNumberOfIterations = 150
som_set.minErrorTolerance = 0.01
som_set.setModificationFunction(ModificationFunction.standard)
som_set.noiseVariance = -1.0
som_set.setSearchType(SearchType.global)
som_set.torus = FALSE
som_set.validationWindow = 10
som_set.width = 15
som_cfs.algorithmSettings =som_set
save('SOM_cf_set', som_cfs)
# --- SOM model building ---
SOM_model_name = 'SOM_model_' + input_data_name
som_mbt = MiningBuildTask('physical_data','SOM_cf_set',SOM_model_name)
save('SOM_mbt', som_mbt)
execute('SOM_mbt')
Example 36.3. Calculate statistics example
This example shows how to calculate the statistics for SOM and LVQ models.
# --- --- data preparation --- ---
input_data_name = 'iris'
pd = PhysicalData(input_data_name)
save('physical_data', pd)
ld = LogicalData(pd)
save('logical_data', ld)
# --- --- STATISTICS --- ---
LVQ_model_name = 'LVQ_model_' + input_data_name
# --- statistics for LVQ model ---
cmst = ComputeModelStatisticsTask()
cmst.modelName = LVQ_model_name
cmst.modelStatResultName = LVQ_model_name + '_statistics'
cmst.testDataName = 'physical_data'
save('MAP_cmst',cmst)
execute('MAP_cmst')
Example 36.4. Classification applying example
# --- --- data preparation --- ---
input_data_name = 'iris'
pd = PhysicalData(input_data_name)
save('physical_data', pd)
ld = LogicalData(pd)
save('logical_data', ld)
# --- --- model application --- ---
LVQ_model_name = 'LVQ_model_' + input_data_name
# --- using the model (LVQ) ---
lvq_ao_pd = PhysicalData('LVQ_apply_output_for_' + input_data_name)
save('LVQ_apply_output',lvq_ao_pd)
lvq_mat = MiningApplyTask()
lvq_mat.modelName = LVQ_model_name
lvq_mat.sourceDataName = 'physical_data'
lvq_mat.targetDataName = 'LVQ_apply_output'
lvq_mat.replaceExistingData = TRUE
lvq_mat.directMapping.add(ApplySourceItem('Class','real_target_value'))
lvq_cao = ClassificationApplyOutput()
lvq_cao.item.add(ClassificationRankItem('predicted_target',ClassificationOutputType.predictedCategory,0))
lvq_cao.item.add(ClassificationRankItem('prediction_probability',ClassificationOutputType.probability,0))
lvq_mat.applyOutput = lvq_cao
save('LVQ_apply_task', lvq_mat)
execute('LVQ_apply_task')
Example 36.5. Clustering applying example
# --- --- data preparation --- ---
input_data_name = 'iris'
pd = PhysicalData(input_data_name)
save('physical_data', pd)
ld = LogicalData(pd)
save('logical_data', ld)
# --- --- model application --- ---
SOM_model_name = 'SOM_model_' + input_data_name
# --- using the model (SOM) ---
som_ao_pd = PhysicalData('SOM_apply_output_for_' + input_data_name )
save('SOM_apply_output', som_ao_pd)
som_mat = MiningApplyTask()
som_mat.modelName = SOM_model_name
som_mat.sourceDataName = 'physical_data'
som_mat.targetDataName = 'SOM_apply_output'
som_mat.replaceExistingData = TRUE
som_cao = ClusteringApplyOutput()
som_cao.item.add(ClusteringRankItem('cluster_id',ClusteringOutputType.clusterId ,0))
som_cao.item.add(ClusteringRankItem('cluster_0_distance',ClusteringOutputType.distance,0))
som_cao.item.add(ClusteringRankItem('cluster_1_distance',ClusteringOutputType.distance,1))
som_cao.item.add(ClusteringRankItem('cluster_2_distance',ClusteringOutputType.distance,2))
som_cao.item.add(ClusteringRankItem('cluster_3_distance',ClusteringOutputType.distance,3))
som_mat.applyOutput = som_cao
save('SOM_apply_task', som_mat)
execute('SOM_apply_task')
Example 36.6. Testing example
# --- --- data preparation --- ---
input_data_name = 'iris'
pd = PhysicalData(input_data_name)
save('physical_data',pd)
ld = LogicalData(pd)
save('logical_data', ld)
# --- --- model testing --- ---
LVQ_model_name = 'LVQ_model_' + input_data_name
lvq_ctt = ClassificationTestTask()
lvq_ctt.positiveTargetValue = "Iris-versicolor"
lvq_ctt.testDataTargetAttributeName = "Class"
lvq_ctt.modelName = LVQ_model_name
lvq_ctt.testDataName = 'physical_data'
lvq_ctt.testResultName = 'results_' + LVQ_model_name
save('LVQ_ctt',lvq_ctt)
execute('LVQ_ctt')