Module fcmpy.expert_fcm.transform

Expand source code
import pandas as pd
import collections
from typing import Union
from fcmpy.expert_fcm.input_validator import type_check


class Transform:
    """
        Collection of data transformation (static) methods.
    """
    @staticmethod
    @type_check
    def calculateProportions(data: pd.DataFrame, conceptPair: tuple, nExperts:int) -> dict:
        """
            Calculate the proportions of answers to each linguistic term.

            Parameters
            ----------
            data: pandas.DataFrame
                        Data frame that contains all the expert 
                        inputs (i.e., "flattened" OrderedDict)
            
            conceptPair: tuple,
                            concept pair for which the activation parameter
                            should be constructed

            Return
            -------
            y: dict,
                keys ---> linguistic terms, values ---> proportion
                of expert ratings.
        """
        activation_parameter = {}
        activation_parameter = (data.loc[conceptPair].sum()/nExperts).to_dict()

        return activation_parameter

    @staticmethod
    @type_check
    def flatData(data: Union[dict, collections.OrderedDict]) -> pd.DataFrame:
        """
            Create a flat data from an ordered dictionary.

            Parameters
            ----------
            data: dict,
                    keys ---> expertId, values ---> pandas.DataFrame
            
            Return
            -------
            y: pandas.DataFrame
                data with all the expert inputs in one dataframe.
        """
        # Create a flat data with all of the experts' inputs.
        flat_data = pd.concat([data[i] for i in data], sort = False)
        flat_data.columns = [i.lower() for i in flat_data.columns]
        flat_data = flat_data.set_index(['from', 'to'])
        flat_data = flat_data.sort_index(level=['from','to'])

        return flat_data

Classes

class Transform

Collection of data transformation (static) methods.

Expand source code
class Transform:
    """
        Collection of data transformation (static) methods.
    """
    @staticmethod
    @type_check
    def calculateProportions(data: pd.DataFrame, conceptPair: tuple, nExperts:int) -> dict:
        """
            Calculate the proportions of answers to each linguistic term.

            Parameters
            ----------
            data: pandas.DataFrame
                        Data frame that contains all the expert 
                        inputs (i.e., "flattened" OrderedDict)
            
            conceptPair: tuple,
                            concept pair for which the activation parameter
                            should be constructed

            Return
            -------
            y: dict,
                keys ---> linguistic terms, values ---> proportion
                of expert ratings.
        """
        activation_parameter = {}
        activation_parameter = (data.loc[conceptPair].sum()/nExperts).to_dict()

        return activation_parameter

    @staticmethod
    @type_check
    def flatData(data: Union[dict, collections.OrderedDict]) -> pd.DataFrame:
        """
            Create a flat data from an ordered dictionary.

            Parameters
            ----------
            data: dict,
                    keys ---> expertId, values ---> pandas.DataFrame
            
            Return
            -------
            y: pandas.DataFrame
                data with all the expert inputs in one dataframe.
        """
        # Create a flat data with all of the experts' inputs.
        flat_data = pd.concat([data[i] for i in data], sort = False)
        flat_data.columns = [i.lower() for i in flat_data.columns]
        flat_data = flat_data.set_index(['from', 'to'])
        flat_data = flat_data.sort_index(level=['from','to'])

        return flat_data

Static methods

def calculateProportions(data: pandas.core.frame.DataFrame, conceptPair: tuple, nExperts: int) ‑> dict

Calculate the proportions of answers to each linguistic term.

Parameters

data : pandas.DataFrame
Data frame that contains all the expert inputs (i.e., "flattened" OrderedDict)
conceptPair : tuple,
concept pair for which the activation parameter should be constructed

Return

y: dict, keys —> linguistic terms, values —> proportion of expert ratings.

Expand source code
@staticmethod
@type_check
def calculateProportions(data: pd.DataFrame, conceptPair: tuple, nExperts:int) -> dict:
    """
        Calculate the proportions of answers to each linguistic term.

        Parameters
        ----------
        data: pandas.DataFrame
                    Data frame that contains all the expert 
                    inputs (i.e., "flattened" OrderedDict)
        
        conceptPair: tuple,
                        concept pair for which the activation parameter
                        should be constructed

        Return
        -------
        y: dict,
            keys ---> linguistic terms, values ---> proportion
            of expert ratings.
    """
    activation_parameter = {}
    activation_parameter = (data.loc[conceptPair].sum()/nExperts).to_dict()

    return activation_parameter
def flatData(data: Union[dict, collections.OrderedDict]) ‑> pandas.core.frame.DataFrame

Create a flat data from an ordered dictionary.

Parameters

data : dict,
keys —> expertId, values —> pandas.DataFrame

Return

y: pandas.DataFrame data with all the expert inputs in one dataframe.

Expand source code
@staticmethod
@type_check
def flatData(data: Union[dict, collections.OrderedDict]) -> pd.DataFrame:
    """
        Create a flat data from an ordered dictionary.

        Parameters
        ----------
        data: dict,
                keys ---> expertId, values ---> pandas.DataFrame
        
        Return
        -------
        y: pandas.DataFrame
            data with all the expert inputs in one dataframe.
    """
    # Create a flat data with all of the experts' inputs.
    flat_data = pd.concat([data[i] for i in data], sort = False)
    flat_data.columns = [i.lower() for i in flat_data.columns]
    flat_data = flat_data.set_index(['from', 'to'])
    flat_data = flat_data.sort_index(level=['from','to'])

    return flat_data