Module idict.macro.evaluation
Expand source code
# Copyright (c) 2021. Davi Pereira dos Santos
# This file is part of the i-dict project.
# Please respect the license - more about this in the section (*) below.
#
# i-dict is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# i-dict is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with i-dict. If not, see <http://www.gnu.org/licenses/>.
#
# (*) Removing authorship by any means, e.g. by distribution of derived
# works or verbatim, obfuscated, compiled or rewritten versions of any
# part of this work is illegal and it is unethical regarding the effort and
# time spent here.
#
from sklearn.model_selection import StratifiedKFold
from idict import let
from idict.function.wrapper import new, call
def kfold(k=10, seed=0):
"""
>>> from idict import idict
>>> d = idict.fromtoy(output_format="Xy")
>>> d >>= kfold() # doctest: +SKIP
>>> d.indices # doctest: +SKIP
[(array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18,
19]), array([13, 16])), (array([ 0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19]), array([5, 8])), (array([ 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19]), array([0, 7])), (array([ 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18,
19]), array([ 1, 14])), (array([ 0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18]), array([ 4, 19])), (array([ 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
19]), array([ 3, 18])), (array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18,
19]), array([10, 15])), (array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 18,
19]), array([12, 17])), (array([ 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18,
19]), array([ 2, 11])), (array([ 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19]), array([6, 9]))]
"""
return let(new, class_=StratifiedKFold, config={"n_splits": k, "random_state": seed, "shuffle": True}) >> let(
call, method="split", input={"X": "X", "y": "y"}, output="indices"
)
Functions
def kfold(k=10, seed=0)
-
>>> from idict import idict >>> d = idict.fromtoy(output_format="Xy") >>> d >>= kfold() # doctest: +SKIP >>> d.indices # doctest: +SKIP [(array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19]), array([13, 16])), (array([ 0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]), array([5, 8])), (array([ 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]), array([0, 7])), (array([ 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19]), array([ 1, 14])), (array([ 0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]), array([ 4, 19])), (array([ 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19]), array([ 3, 18])), (array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19]), array([10, 15])), (array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 19]), array([12, 17])), (array([ 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19]), array([ 2, 11])), (array([ 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]), array([6, 9]))]
Expand source code
def kfold(k=10, seed=0): """ >>> from idict import idict >>> d = idict.fromtoy(output_format="Xy") >>> d >>= kfold() # doctest: +SKIP >>> d.indices # doctest: +SKIP [(array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19]), array([13, 16])), (array([ 0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]), array([5, 8])), (array([ 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]), array([0, 7])), (array([ 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19]), array([ 1, 14])), (array([ 0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]), array([ 4, 19])), (array([ 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19]), array([ 3, 18])), (array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19]), array([10, 15])), (array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 19]), array([12, 17])), (array([ 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19]), array([ 2, 11])), (array([ 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]), array([6, 9]))] """ return let(new, class_=StratifiedKFold, config={"n_splits": k, "random_state": seed, "shuffle": True}) >> let( call, method="split", input={"X": "X", "y": "y"}, output="indices" )