------------------
Added
~~~~~
- PREDICT Exceptions in general.
- A PREDICT ValueError catch when fitting the classifiers has failed and thus
output is missing.
- Feature imputation added in fitandscore. Made additions in scripts parsing
these fields
towards fitandscore.
- Logistic regression classifier.
- Ensemble performance computing in plot_SVM.
- Feature selection based on variance taking the mean of the features into
account.
- Added PCA as feature selection method.
- Added plot_feature_groups function. Note that it's not used yet by default in
the trainclassifier analysis
- Some more docstrings and cleaned some functions.
- Save the cv_iter object in the SearchCV so you can re-use the
training/validation splits.
- Ensembling based on Caruana et al. 2004 in the SearchCV object.
- plot_SVM function also outputs percentage of crossval iterations in which
patient got classified correctly.
- Temporary save setting for crossval function is now in general config.
- Fastr execution plugin type is now also an argument for the SearchCV object.
Changed
~~~~~~~
- LoG features are now computed per 2-D slice, as is done with most other
features as well.
- SVM parameters slack is now dependent on features.
- Removed normalization in calcfeatures: now in separate node in WORC.
- Moved load_data function from trainclassifier to file_io for broader use.
- Removed preprocessing. It is now part of the WORC Python package and thus a
step separated from the feature calculation.
- Updated ttest tool to comply with new way of inputting feature files.
- SVM Polynomial kernel now spans [1, 5] instead of [2, 5]
- Cross validation splitting is now based on patient IDs, hence all samples
from all patients are either in the training or the testing set.
- Removed the general config.ini file and parser. These were used to determine
the settings for the Joblib Parallel function. These are now in the general
config. These had to be passed to both SMOTE and the Gabor feature computation.
Fixed
~~~~~
- The load_data function in trainclassifier didn't work properly for multiple
modalities.
- LoG filter needs a minimum of 4 voxels in each direction. These are therefore
now extracted on the full image instead of o nly the ROI slices. Plus there
is a catch if the full image also does not meet these criteria.
- SMOTE was not working properly in the nocrossval function in the classification/crossval.py script.
- Added ravel of labels to nocrossval function, as it was missing.
- Conversion to numpy uint8 for vessel features, as skimage cannot filter certain float images.
- construct_classifier gives an error for SVM's if a kernel type is not recognized.
- Param grids in construct_crossval were using loc and scale incorrectly.
- NaN in phase images are replaced by zeros to prevent errors.
- In vessel features, when segmentation is small, there is not inner or outer edge.
PREDICT gave an error, now those features are just zeros.
- In shape_features, first check if (0x18, 0x50) is present in metadata before
computing volume.
- No more unnecessary use of lists in CalcFeatures and get_features for the image data.
- Convert all integer inputs in compute_CI to floats, as divisions were
previously uncorrectly rounded when providing integers.
- plot_ROC function now works properly.
- Everything in the confidence interval function is now cast to floats,
as divisions with integers and floats are rounded to integers which gave
wrong values for the CI.
- Confidence interval now has a catch when only a single iteration is provided.
- Lot of error catches now have PREDICT errors.