Random Forest model for the genotoxicity classificaton of MWCNTs.
Training dataset is available in this link
QMRF Report
1. QSAR Identifier
1.1.QSAR identifier (title):
Random Forest model for classifying genotoxicity of multi-walled carbon nanotubes (MWCNTs).
The model has been presented in the pubclication “Machine learning methods for multi-walled carbon
nanotubes (MWCNT) genotoxicity prediction", M. Kotzabasaki, I. Sotiropoulos, C. Charitidis, H. Sarimveis, Nanoscale Adv., 2021, 3(11), 3167-3176, DOI: 10.1039/d0na00600a
1.2.Other related models:
None
1.3.Software coding the model:
Jaqpot is a web platform that support development, validation and sharing of QSAR models apps.jaqpot.org
2. General Information
2.1.Date of QMRF:
28 September 2019
2.2.QMRF author(s) and contact details:
Iason Sotiropoulos, National Technical University of Athens, jasonsoti1@gmail.com
Marianna Kotzabasaki, National Technical University of Athens, mariannako@chemeng.ntua.gr
2.3.Date of QMRF update(s):
28 September 2019
2.4.QMRF update(s):
2.5.Model developer(s) and contact details:
[1] Iason Sotiropoulos, National Technical University of Athens, jasonsoti1@gmail.com
[2] Marianna Kotzabasaki, National Technical University of Athens, mariannako@chemeng.ntua.gr
2.6.Date of model development and/or publication:
The model was developed on 11/04/2020.
2.7.Reference(s) to main scientific papers and/or software package:
2.8.Availability of information about the model:
2.9.Availability of another QMRF for exactly the same model:
3. Defining the endpoint - OECD Principle 1
3.1.Species:
3.2.Endpoint:
Genotoxicity of MWCNTs.
3.3.Comment on endpoint:
The endpoint is classified in two classes, class 0 and 1, where each class corresponds into genotoxic and non-genotoxic MWCNTs respectivelly.
3.4.Endpoint units:
Dimensionless endpoint.
3.5.Dependent variable:
Genotoxicity of MWCNTs.
3.6.Experimental protocol:
3.7.Endpoint data quality and variability:
4. Defining the algorithm - OECD Principle 2
4.1.Type of model:
Logistic Regression (LR)
4.2.Explicit algorithm:
Logistic Regression (C=1374.54, penalty='l1',random_state=42)
4.3.Descriptors in the model:
[1] Purity - Percentage of carbon purity in the MWCNT (Continuous)
[2] Zeta average - Hydrodynamic size of MWCNTs measured in DLS at a dose of 12.5 μg/ml (Continuous)
[3]Length - The length of the MWCNTs(Continuous)
4.4.Descriptor selection:
4.5.Algorithm and descriptor generation:
4.6.Software name and version for descriptor generation:
4.7.Chemicals/Descriptors ratio:
5. Defining the algorithm - OECD Principle 3
5.1.Description of the applicability domain of the model:
5.2.Method used to assess the applicability domain: Leverage method
5.3.Software name and version for applicability domain assessment:
5.4.Limits of applicability:
Leverage Threshold value = 1.2
6. Internal Validation - OECD Principle 3
6.1.Availability of the training set:
Yes
6.2.Available information for the training set:
CAS RN: No
Chemical Name: Yes
Smiles: No
Formula: No
INChI: No
MOL file: No
NanoMaterial: No
6.3.Data for each descriptor variable for the training set:
All
6.4.Data for the dependent variable for the training set:
All
6.5.Other information about the training set:
6.6.Pre-processing of data before modelling:
The data are scaled in the range [0,1]
6.7.Statistics for goodness-of-fit:
Train Accuracy: 1.0
Train F1-Score: 1.0
Train MCC: 1.0
6.8.Robustness - Statistics obtained by 3-fold cross-validation:
6.9.Robustness - Statistics obtained by leave-many-out cross-validation:
Accuracy scores for 4-fold cross validation: [0.75, 0.75, 1.0, 0.67]
Cross Validation Mean Score: 0.792
6.10.Robustness - Statistics obtained by Y-scrambling:
6.11.Robustness - Statistics obtained by bootstrap:
6.12.Robustness - Statistics obtained by other methods:
7. External Validation - OECD Principle 4
7.1.Availability of the external validation set:
Yes
7.2.Available information for the external validation set:
CAS RN: No
Chemical Name: Yes
Smiles: No
Formula: No
INChI: No
MOL file: No
NanoMaterial: No
7.3.Data for each descriptor variable for the external validation set:
All
7.4.Data for the dependent variable for the external validation set:
All
7.5.Other information about the external validation set:
The extrernal validation test set consists of 33% (5 out of 15 samples) of the original data selected by the Kennard-Stone algorithm.
7.6.Experimental design of test set:
By setting aside 33% of the original pool of samples according to the Kennard-Stone algorithm.
7.7.Predictivity - Statistics obtained by external validation:
7.8.Predictivity - Assessment of the external validation set:
7.9.Comments on the external validation of the model:
8. Providing a mechanistic Interpetation - OECD Principle 5
8.1.Mechanistic basis of the model:
8.2.A priori or a posteriori mechanistic interpretation:
8.3.Other information about the mechanistic interpretation:
9. Miscellaneous information
9.1.Comments:
9.2.Bibliography:
9.3.Supporting information:
Training set(s)
Training dataset is available in this link
(https://app.jaqpot.org/dataset/wZD0GObM42fPMQAOXUwH7Z)
Test set(s)Supporting information
Model in PMML Format
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PMML xmlns="http://www.dmg.org/PMML-4_4" xmlns:data="http://jpmml.org/jpmml-model/InlineTable" version="4.4">
<Header>
<Application name="JPMML-SkLearn" version="1.6.7"/>
<Timestamp>2021-01-13T12:52:54Z</Timestamp>
</Header>
<MiningBuildTask>
<Extension>PMMLPipeline(steps=[('scale', MinMaxScaler()),
('classifier', RandomForestClassifier(max_features=0.6664580622368363,
min_samples_split=0.11646759543664197, n_estimators=19,
random_state=42))])</Extension>
</MiningBuildTask>
<DataDictionary>
<DataField name="Genotoxicity" optype="categorical" dataType="integer">
<Value value="0"/>
<Value value="1"/>
</DataField>
<DataField name="Length ave. (nm) " optype="continuous" dataType="double"/>
<DataField name="Purity (%)" optype="continuous" dataType="double"/>
<DataField name="Zave (12.5 ug/ml)" optype="continuous" dataType="double"/>
</DataDictionary>
<TransformationDictionary/>
<MiningModel functionName="classification">
<MiningSchema>
<MiningField name="Genotoxicity" usageType="target"/>
<MiningField name="Length ave. (nm) "/>
<MiningField name="Purity (%)"/>
<MiningField name="Zave (12.5 ug/ml)"/>
</MiningSchema>
<Output>
<OutputField name="probability(0)" optype="continuous" dataType="double" feature="probability" value="0"/>
<OutputField name="probability(1)" optype="continuous" dataType="double" feature="probability" value="1"/>
</Output>
<LocalTransformations>
<DerivedField name="minMaxScaler(Length ave. (nm) )" optype="continuous" dataType="double">
<Apply function="+">
<Apply function="*">
<FieldRef field="Length ave. (nm) "/>
<Constant dataType="double">1.930092065391519E-4</Constant>
</Apply>
<Constant dataType="double">-0.10015247727316591</Constant>
</Apply>
</DerivedField>
<DerivedField name="minMaxScaler(Purity (%))" optype="continuous" dataType="double">
<Apply function="+">
<Apply function="*">
<FieldRef field="Purity (%)"/>
<Constant dataType="double">0.10869565217391301</Constant>
</Apply>
<Constant dataType="double">-9.78260869565217</Constant>
</Apply>
</DerivedField>
<DerivedField name="minMaxScaler(Zave (12.5 ug/ml))" optype="continuous" dataType="double">
<Apply function="+">
<Apply function="*">
<FieldRef field="Zave (12.5 ug/ml)"/>
<Constant dataType="double">0.001455604075691412</Constant>
</Apply>
<Constant dataType="double">-0.21106259097525473</Constant>
</Apply>
</DerivedField>
<DerivedField name="float(minMaxScaler(Length ave. (nm) ))" optype="continuous" dataType="float">
<FieldRef field="minMaxScaler(Length ave. (nm) )"/>
</DerivedField>
<DerivedField name="float(minMaxScaler(Purity (%)))" optype="continuous" dataType="float">
<FieldRef field="minMaxScaler(Purity (%))"/>
</DerivedField>
<DerivedField name="float(minMaxScaler(Zave (12.5 ug/ml)))" optype="continuous" dataType="float">
<FieldRef field="minMaxScaler(Zave (12.5 ug/ml))"/>
</DerivedField>
<DerivedField name="double(float(minMaxScaler(Length ave. (nm) )))" optype="continuous" dataType="double">
<FieldRef field="float(minMaxScaler(Length ave. (nm) ))"/>
</DerivedField>
<DerivedField name="double(float(minMaxScaler(Purity (%))))" optype="continuous" dataType="double">
<FieldRef field="float(minMaxScaler(Purity (%)))"/>
</DerivedField>
<DerivedField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))" optype="continuous" dataType="double">
<FieldRef field="float(minMaxScaler(Zave (12.5 ug/ml)))"/>
</DerivedField>
</LocalTransformations>
<Segmentation multipleModelMethod="average">
<Segment id="1">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="7">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.05602092295885086"/>
<ScoreDistribution value="0" recordCount="7"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="5">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.6396739184856415"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="5"/>
</Node>
<Node score="0" recordCount="3">
<True/>
<ScoreDistribution value="0" recordCount="3"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="2">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="11">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.1659388691186905"/>
<ScoreDistribution value="0" recordCount="11"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="4">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="4"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="3">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="1" recordCount="4">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.8097826242446899"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="4"/>
</Node>
<Node>
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.967391312122345"/>
<Node>
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.9402174055576324"/>
<Node score="0" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.07827488332986832"/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="1">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="1"/>
</Node>
</Node>
<Node score="0" recordCount="6">
<True/>
<ScoreDistribution value="0" recordCount="6"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
<Node score="0" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.5072780204936862"/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="2">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="2"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="4">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="8">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.1659388691186905"/>
<ScoreDistribution value="0" recordCount="8"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="5">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.9402174055576324"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="5"/>
</Node>
<Node score="0" recordCount="2">
<True/>
<ScoreDistribution value="0" recordCount="2"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="5">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node>
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.8296943306922913"/>
<Node score="1" recordCount="2">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.46195653080940247"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="2"/>
</Node>
<Node score="0" recordCount="11">
<True/>
<ScoreDistribution value="0" recordCount="11"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
<Node score="1" recordCount="2">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="2"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="6">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="1" recordCount="4">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.8043478429317474"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="4"/>
</Node>
<Node score="0" recordCount="11">
<True/>
<ScoreDistribution value="0" recordCount="11"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="7">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="1" recordCount="8">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.8043478429317474"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="8"/>
</Node>
<Node score="0" recordCount="7">
<True/>
<ScoreDistribution value="0" recordCount="7"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="8">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="6">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.05602092295885086"/>
<ScoreDistribution value="0" recordCount="6"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node>
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.988586962223053"/>
<Node score="0" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.0989810791797936"/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="6">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="6"/>
</Node>
</Node>
<Node score="0" recordCount="2">
<True/>
<ScoreDistribution value="0" recordCount="2"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="9">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="4">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.10116448532789946"/>
<ScoreDistribution value="0" recordCount="4"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="10">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.9402174055576324"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="10"/>
</Node>
<Node score="0" recordCount="1">
<True/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="10">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="4">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.05214143730700016"/>
<ScoreDistribution value="0" recordCount="4"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="5">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.6396739184856415"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="5"/>
</Node>
<Node score="0" recordCount="4">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.6047171428799629"/>
<ScoreDistribution value="0" recordCount="4"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="2">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="2"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="11">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="8">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.10263264551758766"/>
<ScoreDistribution value="0" recordCount="8"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="0" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.2176128146238625"/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="5">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.4229024574160576"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="5"/>
</Node>
<Node score="0" recordCount="1">
<True/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="12">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="8">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.1659388691186905"/>
<ScoreDistribution value="0" recordCount="8"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="5">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.9402174055576324"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="5"/>
</Node>
<Node score="0" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.5191368628293276"/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="1">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="1"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="13">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="4">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.16011644899845123"/>
<ScoreDistribution value="0" recordCount="4"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="0" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.0508000236004591"/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="8">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.44036979228258133"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="8"/>
</Node>
<Node score="1" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.988586962223053"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="1"/>
</Node>
<Node score="0" recordCount="1">
<True/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="14">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="6">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.21106259524822235"/>
<ScoreDistribution value="0" recordCount="6"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="0" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.0974117461591959"/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="8">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="8"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="15">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="1" recordCount="4">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.623369574546814"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="4"/>
</Node>
<Node score="0" recordCount="6">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.967391312122345"/>
<ScoreDistribution value="0" recordCount="6"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="0" recordCount="4">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.8405743837356567"/>
<ScoreDistribution value="0" recordCount="4"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="1">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="1"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="16">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="1" recordCount="2">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.8043478429317474"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="2"/>
</Node>
<Node>
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.8296943306922913"/>
<Node score="0" recordCount="8">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.1251857727766037"/>
<ScoreDistribution value="0" recordCount="8"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="0" recordCount="2">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.2176128146238625"/>
<ScoreDistribution value="0" recordCount="2"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="1">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="1"/>
</Node>
</Node>
<Node score="1" recordCount="2">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="2"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="17">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Zave (12.5 ug/ml))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="6">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.05602092295885086"/>
<ScoreDistribution value="0" recordCount="6"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="0" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.0989810791797936"/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="5">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.448326051235199"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="5"/>
</Node>
<Node score="0" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Zave (12.5 ug/ml))))" operator="lessOrEqual" value="0.6310043632984161"/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="2">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="2"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="18">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Length ave. (nm) )))"/>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="0" recordCount="5">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.1251857727766037"/>
<ScoreDistribution value="0" recordCount="5"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="6">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.945652186870575"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="6"/>
</Node>
<Node score="0" recordCount="2">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.967391312122345"/>
<ScoreDistribution value="0" recordCount="2"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="0" recordCount="1">
<SimplePredicate field="double(float(minMaxScaler(Length ave. (nm) )))" operator="lessOrEqual" value="0.8405743837356567"/>
<ScoreDistribution value="0" recordCount="1"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
<Node score="1" recordCount="1">
<True/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="1"/>
</Node>
</Node>
</TreeModel>
</Segment>
<Segment id="19">
<True/>
<TreeModel functionName="classification" missingValueStrategy="nullPrediction">
<MiningSchema>
<MiningField name="double(float(minMaxScaler(Purity (%))))"/>
</MiningSchema>
<Node>
<True/>
<Node score="1" recordCount="8">
<SimplePredicate field="double(float(minMaxScaler(Purity (%))))" operator="lessOrEqual" value="0.9402174055576324"/>
<ScoreDistribution value="0" recordCount="0"/>
<ScoreDistribution value="1" recordCount="8"/>
</Node>
<Node score="0" recordCount="7">
<True/>
<ScoreDistribution value="0" recordCount="7"/>
<ScoreDistribution value="1" recordCount="0"/>
</Node>
</Node>
</TreeModel>
</Segment>
</Segmentation>
</MiningModel>
</PMML>