Skip to main content

Table 2 The algorithm of the heavy metal hazard decision tree

From: Assessment of potential human health risks in aquatic products based on the heavy metal hazard decision tree

Heavy metal hazard decision tree

 

Begin

   Instances

      aquaticProducts = [‘pelagic fish’, ‘inshore fish’, ‘other fishes’, ‘crustaceans’, ‘shellfish’, ‘cephalopods’, ‘algae’]

      heavyMetals = [‘inorganic arsenic (iAs)’, ‘cadmium (Cd)’, ‘cobalt (Co)’, ‘chromium (Cr)’, ‘copper (Cu)’, ‘iron (Fe)’, ‘manganese (Mn)’, ‘nickel (Ni)’, ‘lead (Pb)’, ‘strontium (Sr)’, ‘thallium (Tl)’, ‘zinc (Zn)’]

      attributes = [‘heavy_metal’, ‘food_intake’, ‘bw’, ‘rfd’, ‘HQ’, ‘EDI’, ‘ADI’]

      symptom = [‘hyperpigmentation and keratosis follicularis’, ‘kidney diseases’, ‘goiter’, ‘lung cancer’, ‘Alzheimer’s disease and cardiac disease’, ‘gastrointestinal disorders’, ‘parkinsonism’, ‘chronic bronchitis’, ‘intellectual disability’, ‘adult rickets’, ‘perifollicular atrophy’, ‘reduce superoxide dismutase activity in red blood cells’] //depending on different heavy metals

Input: Dataset with attribute values

Create empty “Root” node in the HMHDT model. //Heavy Metal Hazard Decision Tree (HMHDT)

repeat (decisionTreeClassifier(criterion = "Entropy"))

      evaluateInformationGain(Gain(S,A), SplitInfoA(S), GainRatio(A))

      classAggregated = aggregateMultipleFeatures(Instance.aquaticProducts, Instance.heavyMetals, Instance.attributes)

      bestAttributes = FindBestSplitAttributeAtEachLevel(ClassAggregated)

      calculateRiskRatio( Instance.attributes.[HQ, EDI, ADI])

      updateHMHDT(HMHDT, bestAttribute)

      HMHDT = IdentifyDataForNextLevel(HMHDT, bestAttributes)

until no node left to expand OR depth of tree in HMHDT has reached maxDepth

mapping(Instance.heavyMetals, Instance.symptom)

Output HMHDT

End