code: def cumulative_gain_curve(
      df: pd.DataFrame,
      treatment: str,
      outcome: str,
      prediction: str,
      min_rows: int = 30,
      steps: int = 100,
      effect_fn: EffectFnType = linear_effect,
  ) -> np.ndarray:
      """
      Orders the dataset by prediction and computes the cumulative gain (effect * proportional sample size) curve
       according to that ordering.
  
      Parameters
      ----------
      df : Pandas' DataFrame
          A Pandas' DataFrame with target and prediction scores.
  
      treatment : Strings
          The name of the treatment column in `df`.
  
      outcome : Strings
          The name of the outcome column in `df`.
  
      prediction : Strings
          The name of the prediction column in `df`.
  
      min_rows : Integer
          Minimum number of observations needed to have a valid result.
  
      steps : Integer
          The number of cumulative steps to iterate when accumulating the effect
  
      effect_fn : function (df: pandas.DataFrame, treatment: str, outcome: str) -> int or Array of int
          A function that computes the treatment effect given a dataframe, the name of the treatment column and the name
          of the outcome column.
  
  
      Returns
      ----------
      cumulative gain curve: float
          The cumulative gain according to the predictions ordering.
      """
  
      size = df.shape[0]
      n_rows = list(range(min_rows, size, size // steps)) + [size]
  
      cum_effect = cumulative_effect_curve(
          df=df,
          treatment=treatment,
          outcome=outcome,
          prediction=prediction,
          min_rows=min_rows,
          steps=steps,
          effect_fn=effect_fn,
      )
  
      return np.array(
          [
              effect * (rows / size)
              for rows, effect in zip(n_rows, cum_effect)
          ]
      )
  
file_path: fklearn/src/fklearn/causal/validation/curves.py
imports: from typing import List
  import numpy
  import pandas
  from toolz import curry, partial
  from fklearn.types import EffectFnType
  from fklearn.causal.effects import linear_effect
label_desc: Use image node_id 3 for calling a global function with example usage: cumulative_gain_curve(df, treatment, outcome, prediction, min_rows, steps, effect_fn) and returns: np