Skip to content

Commit

Permalink
Merge pull request #38 from lukapecnik/additional_features
Browse files Browse the repository at this point in the history
Additional features
  • Loading branch information
lukapecnik committed Dec 12, 2020
2 parents 894f5a3 + 85bd0c0 commit 4fe6db2
Show file tree
Hide file tree
Showing 26 changed files with 803 additions and 41 deletions.
12 changes: 10 additions & 2 deletions COMPONENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@
* Extremely Randomized Trees (ExtremelyRandomizedTrees),
* Linear SVC (LinearSVC),
* Multi Layer Perceptron (MultiLayerPerceptron),
* Random Forest Classifier (RandomForestClassifier).
* Random Forest Classifier (RandomForest),
* Decision Tree Classifier (DecisionTree),
* K-Neighbors Classifier (KNeighbors),
* Gaussian Process Classifier (GaussianProcess),
* Gaussian Naive Bayes (GaussianNB),
* Quadratic Discriminant Analysis (QuadraticDiscriminantAnalysis).

### Feature Selection Algorithms

Expand All @@ -24,7 +29,10 @@
### Feature Transformation Algorithms

* Normalizer (Normalizer),
* Standard Scaler (StandardScaler).
* Standard Scaler (StandardScaler),
* Maximum Absolute Scaler (MaxAbsScaler),
* Quantile Transformer (QuantileTransformer),
* Robust Scaler (RobustScaler).

### Fitness Functions based on

Expand Down
16 changes: 12 additions & 4 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,12 @@ Classifiers
- Extremely Randomized Trees (ExtremelyRandomizedTrees),
- Linear SVC (LinearSVC),
- Multi Layer Perceptron (MultiLayerPerceptron),
- Random Forest Classifier (RandomForestClassifier).
- Random Forest Classifier (RandomForest),
- Decision Tree Classifier (DecisionTree),
- K-Neighbors Classifier (KNeighbors),
- Gaussian Process Classifier (GaussianProcess),
- Gaussian Naive Bayes (GaussianNB),
- Quadratic Discriminant Analysis (QuadraticDiscriminantAnalysis).

Feature Selection Algorithms
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand All @@ -130,10 +135,13 @@ Feature Transformation Algorithms
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- Normalizer (Normalizer),
- Standard Scaler (StandardScaler).
- Standard Scaler (StandardScaler),
- Maximum Absolute Scaler (MaxAbsScaler),
- Quantile Transformer (QuantileTransformer),
- Robust Scaler (RobustScaler).

Fitness Functions
~~~~~~~~~~~~~~~~~
Fitness Functions based on
~~~~~~~~~~~~~~~~~~~~~~~~~~

- Accuracy (Accuracy),
- Cohen's kappa (CohenKappa),
Expand Down
26 changes: 22 additions & 4 deletions docs/getting_started.rst
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,12 @@ Classifiers
* Extremely Randomized Trees (ExtremelyRandomizedTrees),
* Linear SVC (LinearSVC),
* Multi Layer Perceptron (MultiLayerPerceptron),
* Random Forest Classifier (RandomForestClassifier).
* Random Forest Classifier (RandomForest),
* Decision Tree Classifier (DecisionTree),
* K-Neighbors Classifier (KNeighbors),
* Gaussian Process Classifier (GaussianProcess),
* Gaussian Naive Bayes (GaussianNB),
* Quadratic Discriminant Analysis (QuadraticDiscriminantAnalysis).

Feature Selection Algorithms
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand All @@ -93,16 +98,29 @@ Feature Transformation Algorithms
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* Normalizer (Normalizer),
* Standard Scaler (StandardScaler).
* Standard Scaler (StandardScaler),
* Maximum Absolute Scaler (MaxAbsScaler),
* Quantile Transformer (QuantileTransformer),
* Robust Scaler (RobustScaler).

Fitness Functions
^^^^^^^^^^^^^^^^^
Fitness Functions based on
^^^^^^^^^^^^^^^^^^^^^^^^^^

* Accuracy (Accuracy),
* Cohen's kappa (CohenKappa),
* F1-Score (F1),
* Precision (Precision).

Categorical Feature Encoders
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* One-Hot Encoder (OneHotEncoder).

Feature Imputers
^^^^^^^^^^^^^^^^

* Simple Imputer (SimpleImputer).

Optimization Algorithms
^^^^^^^^^^^^^^^^^^^^^^^

Expand Down
2 changes: 1 addition & 1 deletion niaaml/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@
]

__project__ = 'niaaml'
__version__ = '1.0.0rc5'
__version__ = '1.0.0rc6'
10 changes: 10 additions & 0 deletions niaaml/classifiers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
from niaaml.classifiers.ada_boost import AdaBoost
from niaaml.classifiers.extremely_randomized_trees import ExtremelyRandomizedTrees
from niaaml.classifiers.bagging import Bagging
from niaaml.classifiers.decision_tree import DecisionTree
from niaaml.classifiers.k_neighbors import KNeighbors
from niaaml.classifiers.gaussian_process import GaussianProcess
from niaaml.classifiers.gaussian_naive_bayes import GaussianNB
from niaaml.classifiers.quadratic_driscriminant_analysis import QuadraticDiscriminantAnalysis
from niaaml.classifiers.utility import ClassifierFactory

__all__ = [
Expand All @@ -15,5 +20,10 @@
'AdaBoost',
'Bagging',
'ExtremelyRandomizedTrees',
'DecisionTree',
'KNeighbors',
'GaussianProcess',
'GaussianNB',
'QuadraticDiscriminantAnalysis',
'ClassifierFactory'
]
69 changes: 69 additions & 0 deletions niaaml/classifiers/decision_tree.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
from niaaml.classifiers.classifier import Classifier
from niaaml.utilities import MinMax
from niaaml.utilities import ParameterDefinition
from sklearn.tree import DecisionTreeClassifier as DTC
import numpy as np

__all__ = ['DecisionTree']

class DecisionTree(Classifier):
r"""Implementation of decision tree classifier.
Date:
2020
Author:
Luka Pečnik
License:
MIT
See Also:
* :class:`niaaml.classifiers.Classifier`
"""
Name = 'Decision Tree Classifier'

def __init__(self, **kwargs):
r"""Initialize DecisionTree instance.
"""
self._params = dict(
criterion = ParameterDefinition(['gini', 'entropy']),
splitter = ParameterDefinition(['best', 'random'])
)
self.__decision_tree_classifier = DTC()

def set_parameters(self, **kwargs):
r"""Set the parameters/arguments of the algorithm.
"""
self.__decision_tree_classifier.set_params(**kwargs)

def fit(self, x, y, **kwargs):
r"""Fit DecisionTree.
Arguments:
x (pandas.core.frame.DataFrame): n samples to classify.
y (pandas.core.series.Series): n classes of the samples in the x array.
Returns:
None
"""
self.__decision_tree_classifier.fit(x, y)

def predict(self, x, **kwargs):
r"""Predict class for each sample (row) in x.
Arguments:
x (pandas.core.frame.DataFrame): n samples to classify.
Returns:
pandas.core.series.Series: n predicted classes.
"""
return self.__decision_tree_classifier.predict(x)

def to_string(self):
r"""User friendly representation of the object.
Returns:
str: User friendly representation of the object.
"""
return Classifier.to_string(self).format(name=self.Name, args=self._parameters_to_string(self.__decision_tree_classifier.get_params()))
66 changes: 66 additions & 0 deletions niaaml/classifiers/gaussian_naive_bayes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
from niaaml.classifiers.classifier import Classifier
from niaaml.utilities import MinMax
from niaaml.utilities import ParameterDefinition
from sklearn.naive_bayes import GaussianNB as GNB
import numpy as np

__all__ = ['GaussianNB']

class GaussianNB(Classifier):
r"""Implementation of gaussian Naive Bayes classifier.
Date:
2020
Author:
Luka Pečnik
License:
MIT
See Also:
* :class:`niaaml.classifiers.Classifier`
"""
Name = 'Gaussian Naive Bayes'

def __init__(self, **kwargs):
r"""Initialize GaussianNB instance.
"""
self.__gaussian_nb = GNB()
super(GaussianNB, self).__init__()

def set_parameters(self, **kwargs):
r"""Set the parameters/arguments of the algorithm.
"""
self.__gaussian_nb.set_params(**kwargs)

def fit(self, x, y, **kwargs):
r"""Fit GaussianNB.
Arguments:
x (pandas.core.frame.DataFrame): n samples to classify.
y (pandas.core.series.Series): n classes of the samples in the x array.
Returns:
None
"""
self.__gaussian_nb.fit(x, y)

def predict(self, x, **kwargs):
r"""Predict class for each sample (row) in x.
Arguments:
x (pandas.core.frame.DataFrame): n samples to classify.
Returns:
pandas.core.series.Series: n predicted classes.
"""
return self.__gaussian_nb.predict(x)

def to_string(self):
r"""User friendly representation of the object.
Returns:
str: User friendly representation of the object.
"""
return Classifier.to_string(self).format(name=self.Name, args=self._parameters_to_string(self.__gaussian_nb.get_params()))
70 changes: 70 additions & 0 deletions niaaml/classifiers/gaussian_process.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
from niaaml.classifiers.classifier import Classifier
from niaaml.utilities import MinMax
from niaaml.utilities import ParameterDefinition
from sklearn.gaussian_process import GaussianProcessClassifier as GPC
import numpy as np

__all__ = ['GaussianProcess']

class GaussianProcess(Classifier):
r"""Implementation of gaussian process classifier.
Date:
2020
Author:
Luka Pečnik
License:
MIT
See Also:
* :class:`niaaml.classifiers.Classifier`
"""
Name = 'Gaussian Process Classifier'

def __init__(self, **kwargs):
r"""Initialize GaussianProcess instance.
"""
self._params = dict(
max_iter_predict = ParameterDefinition(MinMax(50, 200), np.uint),
warm_start = ParameterDefinition([True, False]),
multi_class = ParameterDefinition(['one_vs_rest', 'one_vs_one'])
)
self.__gaussian_process = GPC()

def set_parameters(self, **kwargs):
r"""Set the parameters/arguments of the algorithm.
"""
self.__gaussian_process.set_params(**kwargs)

def fit(self, x, y, **kwargs):
r"""Fit GaussianProcess.
Arguments:
x (pandas.core.frame.DataFrame): n samples to classify.
y (pandas.core.series.Series): n classes of the samples in the x array.
Returns:
None
"""
self.__gaussian_process.fit(x, y)

def predict(self, x, **kwargs):
r"""Predict class for each sample (row) in x.
Arguments:
x (pandas.core.frame.DataFrame): n samples to classify.
Returns:
pandas.core.series.Series: n predicted classes.
"""
return self.__gaussian_process.predict(x)

def to_string(self):
r"""User friendly representation of the object.
Returns:
str: User friendly representation of the object.
"""
return Classifier.to_string(self).format(name=self.Name, args=self._parameters_to_string(self.__gaussian_process.get_params()))
Loading

0 comments on commit 4fe6db2

Please sign in to comment.