Пример #1
0
# Time-stamp: <Tue 2021-05-11 23:31 ingo>
#
# Copyright (c) 2016-2021 Pathpy Developers
# =============================================================================
from __future__ import annotations
from typing import Optional, Union
from functools import singledispatch

from numpy.random import choice, shuffle, permutation

from pathpy import logger
from pathpy.models.api import Network
from pathpy.models.api import TemporalNetwork

# create logger
LOG = logger(__name__)

# def train_test_split(network: Union[Network, TemporalNetwork], test_size: Optional[float]=0.25, train_size: Optional[float]=None, split: Optional[str]='node') -> tuple(Union[Network,TemporalNetwork], Union[Network, TemporalNetwork]):

#     raise NotImplementedError('Unsupported type')


@singledispatch
def train_test_split(network: Network,
                     test_size: Optional[float] = 0.25,
                     train_size: Optional[float] = None,
                     split: Optional[str] = 'node') -> tuple(Network, Network):
    """Returns a train/test split of a network object. This method is implemented for instances of Network and TemporalNetwork. The train/test split is non-destructive and based on object references, i.e. the function returns new Network instances that contain references to the same node/edge objects. The original network is not affected.

    Parameters
    ----------
Пример #2
0
# Author    : Jürgen Hackl <*****@*****.**>
# Time-stamp: <Thu 2020-04-02 16:50 juergen>
#
# Copyright (c) 2016-2019 Pathpy Developers
# =============================================================================
from __future__ import annotations
from typing import List
import datetime
from pathpy import logger, tqdm, config
from pathpy.core.edge import Edge
from pathpy.core.path import Path
from pathpy.core.higher_order_network import (HigherOrderNetwork,
                                              HigherOrderNode)

# create logger
log = logger(__name__)


class NullModel:
    """A null model for higher order networks."""
    def __init__(self, network):
        """Initialize the null model"""
        self.network = network
        self.order = 0
        self.hon = HigherOrderNetwork()

    def __call__(self, order: int = 1) -> HigherOrderNetwork:
        """Returns a null model of given order."""

        # check if null model was already calculated
        if order == self.order and self.hon.number_of_nodes() > 0: