ClassifierChain¶
A multi-output model that arranges classifiers into a chain.
This will create one model per output. The prediction of the first output will be used as a feature in the second model. The prediction for the second output will be used as a feature for the third model, etc. This "chain model" is therefore capable of capturing dependencies between outputs.
Parameters¶
-
model (base.Classifier)
A classifier model used for each label.
-
order (list) – defaults to
None
A list with the targets order in which to construct the chain. If
None
then the order will be inferred from the order of the keys in the target.
Examples¶
>>> from river import feature_selection
>>> from river import linear_model
>>> from river import metrics
>>> from river import multioutput
>>> from river import preprocessing
>>> from river import stream
>>> from sklearn import datasets
>>> dataset = stream.iter_sklearn_dataset(
... dataset=datasets.fetch_openml('yeast', version=4, as_frame=False),
... shuffle=True,
... seed=42
... )
>>> model = feature_selection.VarianceThreshold(threshold=0.01)
>>> model |= preprocessing.StandardScaler()
>>> model |= multioutput.ClassifierChain(
... model=linear_model.LogisticRegression(),
... order=list(range(14))
... )
>>> metric = metrics.multioutput.MicroAverage(metrics.Jaccard())
>>> for x, y in dataset:
... # Convert y values to booleans
... y = {i: yi == 'TRUE' for i, yi in y.items()}
... y_pred = model.predict_one(x)
... metric = metric.update(y, y_pred)
... model = model.learn_one(x, y)
>>> metric
MicroAverage(Jaccard): 41.95%
Methods¶
clear
D.clear() -> None. Remove all items from D.
copy
fromkeys
get
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
Parameters
- key
- default – defaults to
None
items
D.items() -> a set-like object providing a view on D's items
keys
D.keys() -> a set-like object providing a view on D's keys
learn_one
Update the model with a set of features x
and the labels y
.
Parameters
- x
- y
- kwargs
Returns
self
pop
D.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised.
Parameters
- key
- default – defaults to
<object object at 0x7fb8afa29160>
popitem
D.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple; but raise KeyError if D is empty.
predict_one
Predict the labels of a set of features x
.
Parameters
- x (dict)
- kwargs
Returns
typing.Dict[typing.Hashable, bool]: The predicted labels.
predict_proba_one
Predict the probability of each label appearing given dictionary of features x
.
Parameters
- x
- kwargs
Returns
A dictionary that associates a probability which each label.
setdefault
D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
Parameters
- key
- default – defaults to
None
update
D.update([E, ]**F) -> None. Update D from mapping/iterable E and F. If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v
Parameters
- other – defaults to
()
- kwds
values
D.values() -> an object providing a view on D's values