Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[patch:lib] Add __repr__ function to all classifiers #120

Merged
merged 22 commits into from
Dec 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7695019
[release] 0.7.1 🎉 (#94)
eonu May 21, 2020
6072ebb
Merge branch 'master' into dev
eonu May 21, 2020
16ecb2b
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Jul 7, 2020
9dfd62b
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Jul 7, 2020
35abe17
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Jul 7, 2020
91fe63e
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Aug 24, 2020
43492e0
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Aug 24, 2020
cad2810
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 25, 2020
e91a834
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 27, 2020
fa790dc
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 28, 2020
c8a88d6
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 28, 2020
8009527
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 28, 2020
6d99f04
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 28, 2020
e72d662
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 28, 2020
688ec2e
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 28, 2020
f3ede88
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 28, 2020
ae2b38a
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 28, 2020
f4a9114
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 28, 2020
cd8916a
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 29, 2020
6733a63
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 29, 2020
05382a0
Merge branch 'dev' of https://github.com/eonu/sequentia into dev
eonu Dec 29, 2020
e2e3d4f
Add __repr__ functions to all classifiers
eonu Dec 29, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/_includes/examples/classifiers/knn_classifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
y = ['class0', 'class1', 'class1']

# Create and fit the classifier
clf = KNNClassifier(k=1, classes=set(y))
clf = KNNClassifier(k=1, classes=list(set(y)))
clf.fit(X, y)

# Predict labels for the training data (just as an example)
Expand Down
29 changes: 28 additions & 1 deletion lib/sequentia/classifiers/hmm/gmmhmm.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,13 @@ def n_seqs(self):
except AttributeError as e:
raise AttributeError('The model has not been fitted and has not seen any observation sequences') from e

@property
def model(self):
try:
return self._model
except AttributeError as e:
raise AttributeError('The model must be fitted first') from e

@property
def initial(self):
try:
Expand All @@ -199,4 +206,24 @@ def transitions(self):
@transitions.setter
def transitions(self, probabilities):
self._topology.validate_transitions(probabilities)
self._transitions = probabilities
self._transitions = probabilities

def __repr__(self):
module = self.__class__.__module__
out = '{}{}('.format('' if module == '__main__' else '{}.'.format(module), self.__class__.__name__)
attrs = [
('label', repr(self._label)),
('n_states', repr(self._n_states)),
('n_components', repr(self._n_components)),
('covariance_type', repr(self._covariance_type))
]
try:
self._initial
attrs.append(('initial', 'array([...])'))
self._transitions
attrs.append(('transitions', 'array([...])'))
self._model
attrs.append(('n_seqs', repr(self._n_seqs)))
except AttributeError:
pass
return out + ', '.join('{}={}'.format(name, val) for name, val in attrs) + ')'
14 changes: 13 additions & 1 deletion lib/sequentia/classifiers/hmm/hmm_classifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,4 +199,16 @@ def encoder(self):

@property
def classes(self):
return self.encoder.classes_
return self.encoder.classes_

def __repr__(self):
module = self.__class__.__module__
out = '{}{}('.format('' if module == '__main__' else '{}.'.format(module), self.__class__.__name__)
try:
self._models
out += 'models=[\n '
out += ',\n '.join(repr(model) for model in self._models)
out += '\n]'
except AttributeError:
pass
return out + ')'
32 changes: 31 additions & 1 deletion lib/sequentia/classifiers/knn/knn_classifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -368,4 +368,34 @@ def encoder(self):

@property
def classes(self):
return self._encoder.classes_
return self._encoder.classes_

@property
def X(self):
try:
return self._X
except AttributeError:
raise RuntimeError('The classifier needs to be fitted first')

@property
def y(self):
try:
return self._y
except AttributeError:
raise RuntimeError('The classifier needs to be fitted first')

def __repr__(self):
module = self.__class__.__module__
out = '{}{}('.format('' if module == '__main__' else '{}.'.format(module), self.__class__.__name__)
attrs = [
('k', repr(self._k)),
('window', repr(self._window)),
('use_c', repr(self._use_c)),
('classes', repr(list(self._encoder.classes_)))
]
try:
(self._X, self._y)
attrs.extend([('X', '[...]'), ('y', 'array([...])')])
except AttributeError:
pass
return out + ', '.join('{}={}'.format(name, val) for name, val in attrs) + ')'