Example A.6. Feed Forward Neural Networks
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# #
# AdvancedMiner Example Script #
# Copyright Algolytics sp. z o. o. 2004-2015 #
# #
# #
# Description: #
# The script contains examples #
# of building, testing and application #
# of Feed Forward Neural Networks classification model #
# #
# Input data: #
# Murphy P.M., Aha D.W. (1994) #
# UCI Repository Of Machine Learning Databases and Domain Theories #
# http://www.ics.uci.edu/~mlearn/MLRepository.html #
# Irvine, CA: University of California, #
# Department of Information and Computer Science. #
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# --- data loading ---
table 'iris' :
sepallength sepalwidth petallength petalwidth Class
5.1 3.5 1.4 0.2 'Iris-setosa'
4.9 3.0 1.4 0.2 'Iris-setosa'
4.7 3.2 1.3 0.2 'Iris-setosa'
4.6 3.1 1.5 0.2 'Iris-setosa'
5.0 3.6 1.4 0.2 'Iris-setosa'
5.4 3.9 1.7 0.4 'Iris-setosa'
4.6 3.4 1.4 0.3 'Iris-setosa'
5.0 3.4 1.5 0.2 'Iris-setosa'
4.4 2.9 1.4 0.2 'Iris-setosa'
4.9 3.1 1.5 0.1 'Iris-setosa'
5.4 3.7 1.5 0.2 'Iris-setosa'
4.8 3.4 1.6 0.2 'Iris-setosa'
4.8 3.0 1.4 0.1 'Iris-setosa'
4.3 3.0 1.1 0.1 'Iris-setosa'
5.8 4.0 1.2 0.2 'Iris-setosa'
5.7 4.4 1.5 0.4 'Iris-setosa'
5.4 3.9 1.3 0.4 'Iris-setosa'
5.1 3.5 1.4 0.3 'Iris-setosa'
5.7 3.8 1.7 0.3 'Iris-setosa'
5.1 3.8 1.5 0.3 'Iris-setosa'
5.4 3.4 1.7 0.2 'Iris-setosa'
5.1 3.7 1.5 0.4 'Iris-setosa'
4.6 3.6 1.0 0.2 'Iris-setosa'
5.1 3.3 1.7 0.5 'Iris-setosa'
4.8 3.4 1.9 0.2 'Iris-setosa'
5.0 3.0 1.6 0.2 'Iris-setosa'
5.0 3.4 1.6 0.4 'Iris-setosa'
5.2 3.5 1.5 0.2 'Iris-setosa'
5.2 3.4 1.4 0.2 'Iris-setosa'
4.7 3.2 1.6 0.2 'Iris-setosa'
4.8 3.1 1.6 0.2 'Iris-setosa'
5.4 3.4 1.5 0.4 'Iris-setosa'
5.2 4.1 1.5 0.1 'Iris-setosa'
5.5 4.2 1.4 0.2 'Iris-setosa'
4.9 3.1 1.5 0.1 'Iris-setosa'
5.0 3.2 1.2 0.2 'Iris-setosa'
5.5 3.5 1.3 0.2 'Iris-setosa'
4.9 3.1 1.5 0.1 'Iris-setosa'
4.4 3.0 1.3 0.2 'Iris-setosa'
5.1 3.4 1.5 0.2 'Iris-setosa'
5.0 3.5 1.3 0.3 'Iris-setosa'
4.5 2.3 1.3 0.3 'Iris-setosa'
4.4 3.2 1.3 0.2 'Iris-setosa'
5.0 3.5 1.6 0.6 'Iris-setosa'
5.1 3.8 1.9 0.4 'Iris-setosa'
4.8 3.0 1.4 0.3 'Iris-setosa'
5.1 3.8 1.6 0.2 'Iris-setosa'
4.6 3.2 1.4 0.2 'Iris-setosa'
5.3 3.7 1.5 0.2 'Iris-setosa'
5.0 3.3 1.4 0.2 'Iris-setosa'
7.0 3.2 4.7 1.4 'Iris-versicolor'
6.4 3.2 4.5 1.5 'Iris-versicolor'
6.9 3.1 4.9 1.5 'Iris-versicolor'
5.5 2.3 4.0 1.3 'Iris-versicolor'
6.5 2.8 4.6 1.5 'Iris-versicolor'
5.7 2.8 4.5 1.3 'Iris-versicolor'
6.3 3.3 4.7 1.6 'Iris-versicolor'
4.9 2.4 3.3 1.0 'Iris-versicolor'
6.6 2.9 4.6 1.3 'Iris-versicolor'
5.2 2.7 3.9 1.4 'Iris-versicolor'
5.0 2.0 3.5 1.0 'Iris-versicolor'
5.9 3.0 4.2 1.5 'Iris-versicolor'
6.0 2.2 4.0 1.0 'Iris-versicolor'
6.1 2.9 4.7 1.4 'Iris-versicolor'
5.6 2.9 3.6 1.3 'Iris-versicolor'
6.7 3.1 4.4 1.4 'Iris-versicolor'
5.6 3.0 4.5 1.5 'Iris-versicolor'
5.8 2.7 4.1 1.0 'Iris-versicolor'
6.2 2.2 4.5 1.5 'Iris-versicolor'
5.6 2.5 3.9 1.1 'Iris-versicolor'
5.9 3.2 4.8 1.8 'Iris-versicolor'
6.1 2.8 4.0 1.3 'Iris-versicolor'
6.3 2.5 4.9 1.5 'Iris-versicolor'
6.1 2.8 4.7 1.2 'Iris-versicolor'
6.4 2.9 4.3 1.3 'Iris-versicolor'
6.6 3.0 4.4 1.4 'Iris-versicolor'
6.8 2.8 4.8 1.4 'Iris-versicolor'
6.7 3.0 5.0 1.7 'Iris-versicolor'
6.0 2.9 4.5 1.5 'Iris-versicolor'
5.7 2.6 3.5 1.0 'Iris-versicolor'
5.5 2.4 3.8 1.1 'Iris-versicolor'
5.5 2.4 3.7 1.0 'Iris-versicolor'
5.8 2.7 3.9 1.2 'Iris-versicolor'
6.0 2.7 5.1 1.6 'Iris-versicolor'
5.4 3.0 4.5 1.5 'Iris-versicolor'
6.0 3.4 4.5 1.6 'Iris-versicolor'
6.7 3.1 4.7 1.5 'Iris-versicolor'
6.3 2.3 4.4 1.3 'Iris-versicolor'
5.6 3.0 4.1 1.3 'Iris-versicolor'
5.5 2.5 4.0 1.3 'Iris-versicolor'
5.5 2.6 4.4 1.2 'Iris-versicolor'
6.1 3.0 4.6 1.4 'Iris-versicolor'
5.8 2.6 4.0 1.2 'Iris-versicolor'
5.0 2.3 3.3 1.0 'Iris-versicolor'
5.6 2.7 4.2 1.3 'Iris-versicolor'
5.7 3.0 4.2 1.2 'Iris-versicolor'
5.7 2.9 4.2 1.3 'Iris-versicolor'
6.2 2.9 4.3 1.3 'Iris-versicolor'
5.1 2.5 3.0 1.1 'Iris-versicolor'
5.7 2.8 4.1 1.3 'Iris-versicolor'
6.3 3.3 6.0 2.5 'Iris-virginica'
5.8 2.7 5.1 1.9 'Iris-virginica'
7.1 3.0 5.9 2.1 'Iris-virginica'
6.3 2.9 5.6 1.8 'Iris-virginica'
6.5 3.0 5.8 2.2 'Iris-virginica'
7.6 3.0 6.6 2.1 'Iris-virginica'
4.9 2.5 4.5 1.7 'Iris-virginica'
7.3 2.9 6.3 1.8 'Iris-virginica'
6.7 2.5 5.8 1.8 'Iris-virginica'
7.2 3.6 6.1 2.5 'Iris-virginica'
6.5 3.2 5.1 2.0 'Iris-virginica'
6.4 2.7 5.3 1.9 'Iris-virginica'
6.8 3.0 5.5 2.1 'Iris-virginica'
5.7 2.5 5.0 2.0 'Iris-virginica'
5.8 2.8 5.1 2.4 'Iris-virginica'
6.4 3.2 5.3 2.3 'Iris-virginica'
6.5 3.0 5.5 1.8 'Iris-virginica'
7.7 3.8 6.7 2.2 'Iris-virginica'
7.7 2.6 6.9 2.3 'Iris-virginica'
6.0 2.2 5.0 1.5 'Iris-virginica'
6.9 3.2 5.7 2.3 'Iris-virginica'
5.6 2.8 4.9 2.0 'Iris-virginica'
7.7 2.8 6.7 2.0 'Iris-virginica'
6.3 2.7 4.9 1.8 'Iris-virginica'
6.7 3.3 5.7 2.1 'Iris-virginica'
7.2 3.2 6.0 1.8 'Iris-virginica'
6.2 2.8 4.8 1.8 'Iris-virginica'
6.1 3.0 4.9 1.8 'Iris-virginica'
6.4 2.8 5.6 2.1 'Iris-virginica'
7.2 3.0 5.8 1.6 'Iris-virginica'
7.4 2.8 6.1 1.9 'Iris-virginica'
7.9 3.8 6.4 2.0 'Iris-virginica'
6.4 2.8 5.6 2.2 'Iris-virginica'
6.3 2.8 5.1 1.5 'Iris-virginica'
6.1 2.6 5.6 1.4 'Iris-virginica'
7.7 3.0 6.1 2.3 'Iris-virginica'
6.3 3.4 5.6 2.4 'Iris-virginica'
6.4 3.1 5.5 1.8 'Iris-virginica'
6.0 3.0 4.8 1.8 'Iris-virginica'
6.9 3.1 5.4 2.1 'Iris-virginica'
6.7 3.1 5.6 2.4 'Iris-virginica'
6.9 3.1 5.1 2.3 'Iris-virginica'
5.8 2.7 5.1 1.9 'Iris-virginica'
6.8 3.2 5.9 2.3 'Iris-virginica'
6.7 3.3 5.7 2.5 'Iris-virginica'
6.7 3.0 5.2 2.3 'Iris-virginica'
6.3 2.5 5.0 1.9 'Iris-virginica'
6.5 3.0 5.2 2.0 'Iris-virginica'
6.2 3.4 5.4 2.3 'Iris-virginica'
5.9 3.0 5.1 1.8 'Iris-virginica'
# --- data preparation ---
input_data_name = 'iris'
input_std_data_name = 'iris_std'
input_pd = PhysicalData(input_data_name)
save('input_physical_data', input_pd)
input_ld = LogicalData(input_pd)
save('input_logical_data', input_ld)
# --- DATA STANDARDIZATION ---
# --- transformation settings ---
std_set = StandardizeSettings()
std_set.logicalData=input_ld
save('std_set',std_set)
# --- transformation building ---
tbt = TransformationBuildTask()
tbt.physicalDataName='input_physical_data'
tbt.transformationName='standardize'
tbt.transformationSettingsName='std_set'
save('tbt',tbt)
execute('tbt')
input_at_pd = PhysicalData(input_data_name)
input_at_pd_name =input_data_name+ "_pd"
save(input_at_pd_name,input_at_pd)
target_at_pd = PhysicalData(input_std_data_name)
target_at_pd_name = input_std_data_name+"_pd"
save(target_at_pd_name,target_at_pd)
# --- transformation applying ---
tat = TransformationApplyTask()
tat.replaceExistingData = TRUE
tat.setTransformationName('standardize')
tat.setSourceDataName(input_at_pd_name)
tat.setTargetDataName(target_at_pd_name)
save('tat',tat)
execute('tat')
# --- data splitting ---
train_data_name = input_std_data_name + '_trn'
test_data_name = input_std_data_name + '_tst'
tableSplit(input_std_data_name,split=[6,4],output=[train_data_name,test_data_name])
pd = PhysicalData(train_data_name)
save('physical_data', pd)
ld = LogicalData(pd)
save('logical_data', ld)
# --- LEARNING ---
NET_model_name = 'NET_model_' + input_data_name
# --- algorithm settings ---
net_cfs = ClassificationFunctionSettings()
net_cfs.logicalData = ld
net_cfs.getAttributeUsageSet().getAttribute('Class').setUsage(UsageOption.target)
net_set = FeedforwardNeuralNetSettings()
#net_set.bipolarCategoricalAttributesBinarization = TRUE
net_set.automaticDataTransformations = TRUE
# [0] - replace missing
# [1] - standardize
# [2] - binarization
net_set.transformationSettings.internalTransformationsSettings[2].setDefaultBinarizedValues(BinarizedValues.bipolar)
net_set.errorFunction = FeedforwardErrorFunctionType.sumSquared
net_set.maxNumberOfIterations=1000
net_set.minErrorTolerance=0.001
net_set.noise = 0
net_set.outputLayerActivationFunction=NeuronActivationFunctionType.logistic
net_set.randomization = TRUE
net_set.validationWindow = 0
net_la = FeedforwardLearningAlgorithm(FeedforwardLearningAlgorithmType.backProp)
net_la.learningRate=0.3
net_la.momentum=0.0
net_set.learningAlgorithm=net_la
net_cfs.algorithmSettings=net_set
save('net_cfs',net_cfs)
# --- model building ---
net_mbt = MiningBuildTask('physical_data' , 'net_cfs' , NET_model_name)
save('NET_mbt',net_mbt)
execute('NET_mbt')
print "Build task for neural networks example was successfully executed"
# --- MODEL TESTING---
# --- data preparation ---
test_pd = PhysicalData(test_data_name)
save('physical_test_data', test_pd)
test_ld = LogicalData(test_pd)
save('logical_test_data', test_ld)
# --- test task ---
ApproximationOutputType
net_ctt = ClassificationTestTask()
net_ctt.positiveTargetValue="Iris-versicolor"
net_ctt.testDataTargetAttributeName="Class"
net_ctt.modelName=NET_model_name
net_ctt.testDataName='physical_test_data'
net_ctt.testResultName='results_'+NET_model_name
save('NET_ctt',net_ctt)
execute('NET_ctt')
print "Test task for neural networks example was successfully executed"
# --- MODEL APPLICATION ---
net_ao_pd = PhysicalData('apply_' + input_data_name )
save('NET_apply_output', net_ao_pd )
net_mat = MiningApplyTask()
net_mat.replaceExistingData = TRUE
net_mat.modelName = NET_model_name
net_mat.sourceDataName = 'physical_test_data'
net_mat.targetDataName = 'NET_apply_output'
net_mat.replaceExistingData = TRUE
directMapping = java.util.ArrayList()
directMapping.add(ApplySourceItem('Class','real_target'))
net_mat.setDirectMapping(directMapping)
net_cao = ClassificationApplyOutput()
net_cao.item.add(ClassificationRankItem('predicted_target', \
ClassificationOutputType.predictedCategory , 0))
net_cao.item.add(ClassificationRankItem('prediction_probability', \
ClassificationOutputType.probability , 0))
net_mat.applyOutput = net_cao
save('NET_apply_task', net_mat)
execute('NET_apply_task')
print "Apply task for neural networks example was successfully executed"
Output:
Build task for neural networks example was successfully executed Test task for neural networks example was successfully executed Apply task for neural networks example was successfully executed