mlinsights.sklapi#

The following implementation play with scikit-learn API, it overwrites the code handling parameters. It is pretty much useless unless to check the stability of the API.

SkBase#

class mlinsights.sklapi.sklearn_base.SkBase(**kwargs)[source]#

Pattern of a learner or a transform which follows the API of scikit-learn.

static compare_params(p1: Dict[str, Any], p2: Dict[str, Any], exc: bool = True) bool[source]#

Compares two sets of parameters.

Parameters:
  • p1 – dictionary

  • p2 – dictionary

  • exc – raises an exception if error is met

Returns:

boolean

fit(X, y=None, sample_weight=None)[source]#

Trains a model.

@param X features @param y target @param sample_weight weight @return self

get_params(deep=True)[source]#

Returns the parameters which define the objet, all are needed to clone the object.

@param deep unused here @return dict

set_params(**values)[source]#

Udpates parameters which define the object, all needed to clone the object.

@param values values @return dictionary

test_equality(o, exc=True)[source]#

Compares two objects and checks parameters have the same values.

@param p1 dictionary @param p2 dictionary @param exc raises an exception if there is a difference @return boolean

SkBaseClassifier#

class mlinsights.sklapi.sklearn_base_classifier.SkBaseClassifier(**kwargs)[source]#

Defines a custom classifier.

predict_proba(X)[source]#

Returns probability estimates for the test data X.

Parameters:

X – Training data, numpy array or sparse matrix of shape [n_samples,n_features]

Returns:

array, shape = (n_samples,.), Returns predicted values.

score(X, y=None, sample_weight=None)[source]#

Returns the mean accuracy on the given test data and labels.

Parameters:
  • X – Training data, numpy array or sparse matrix of shape [n_samples,n_features]

  • y – Target values, numpy array of shape [n_samples, n_targets] (optional)

  • sample_weight – Weight values, numpy array of shape [n_samples, n_targets] (optional)

Returns:

score : float, Mean accuracy of self.predict(X) wrt. y.

SkException#

class mlinsights.sklapi.sklearn_parameters.SkException[source]#

custom exception

SkBaseLearner#

class mlinsights.sklapi.sklearn_base_learner.SkBaseLearner(**kwargs)[source]#

Pattern of a learner qui suit la même API que scikit-learn.

decision_function(X)[source]#

Output of the model in case of a regressor, matrix with a score for each class and each sample for a classifier.

Parameters:

X – Samples, {array-like, sparse matrix}, shape = (n_samples, n_features)

Returns:

array, shape = (n_samples,.), Returns predicted values.

fit(X, y=None, sample_weight=None)[source]#

Trains a model.

@param X features @param y targets @param sample_weight weight @return self

predict(X)[source]#

Predicts.

@param X features @return prédictions

score(X, y=None, sample_weight=None)[source]#

Returns the mean accuracy on the given test data and labels.

Parameters:
  • X – Training data, numpy array or sparse matrix of shape [n_samples,n_features]

  • y – Target values, numpy array of shape [n_samples, n_targets] (optional)

  • sample_weight – Weight values, numpy array of shape [n_samples, n_targets] (optional)

Returns:

score : float, Mean accuracy of self.predict(X) wrt. y.

SkLearnParameters#

class mlinsights.sklapi.sklearn_parameters.SkLearnParameters(**kwargs)[source]#

Defines a class to store parameters of a learner or a transform.

property Keys#

Returns parameter names.

to_dict()[source]#

Returns parameters as a dictionary.

@return dict

validate(name, value)[source]#

Verifies a parameter and its value.

Parameters:
  • name – name

  • value – value

Raise:

raises SkException if error

SkBaseRegressor#

class mlinsights.sklapi.sklearn_base_regressor.SkBaseRegressor(**kwargs)[source]#

Defines a custom regressor.

score(X, y=None, sample_weight=None)[source]#

Returns the mean accuracy on the given test data and labels.

Parameters:
  • X – Training data, numpy array or sparse matrix of shape [n_samples,n_features]

  • y – Target values, numpy array of shape [n_samples, n_targets] (optional)

  • sample_weight – Weight values, numpy array of shape [n_samples, n_targets] (optional)

Returns:

score : float, Mean accuracy of self.predict(X) wrt. y.

SkBaseTransform#

class mlinsights.sklapi.sklearn_base_transform.SkBaseTransform(**kwargs)[source]#

Pattern of a learner which follows the same API que scikit-learn.

fit(X, y=None, **kwargs)[source]#

Trains a model.

@param X features @param y targets @return self

fit_transform(X, y=None, **kwargs)[source]#

Trains and transforms the data.

Parameters:
  • X – features

  • y – targets

  • kwargs – additional fitting parameters

Returns:

self

transform(X)[source]#

Transforms the data.

@param X features @return predictions

SkBaseTransformLearner#

class mlinsights.sklapi.sklearn_base_transform_learner.SkBaseTransformLearner(model=None, method=None, **kwargs)[source]#

A transform which hides a learner, it converts method predict into transform. This way, two learners can be inserted into the same pipeline. There is another a,d shorter implementation with class TransferTransformer.

Use two learners into a same pipeline

It is impossible to use two learners into a pipeline unless we use a class such as SkBaseTransformLearner which disguise a learner into a transform.

<<<

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.pipeline import make_pipeline
from mlinsights.sklapi import SkBaseTransformLearner

data = load_iris()
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(X, y)

try:
    pipe = make_pipeline(LogisticRegression(), DecisionTreeClassifier())
except Exception as e:
    print("ERROR:")
    print(e)
    print(".")

pipe = make_pipeline(
    SkBaseTransformLearner(LogisticRegression()), DecisionTreeClassifier()
)
pipe.fit(X_train, y_train)
pred = pipe.predict(X_test)
score = accuracy_score(y_test, pred)
print("pipeline avec deux learners :", score)

>>>

    pipeline avec deux learners : 0.9736842105263158
fit(X, y=None, **kwargs)[source]#

Trains a model.

@param X features @param y targets @param kwargs additional parameters @return self

get_params(deep=True)[source]#

Returns the parameters mandatory to clone the class.

@param deep unused here @return dict

set_params(**values)[source]#

Sets parameters.

@param values parameters

transform(X)[source]#

Predictions, output of the embedded learner.

@param X features @return prédictions

SkBaseTransformStacking#

class mlinsights.sklapi.sklearn_base_transform_stacking.SkBaseTransformStacking(models=None, method=None, **kwargs)[source]#

Un transform qui cache plusieurs learners, arrangés selon la méthode du stacking.

Stacking de plusieurs learners dans un pipeline scikit-learn.

Ce transform assemble les résultats de plusieurs learners. Ces features servent d’entrée à un modèle de stacking.

<<<

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.pipeline import make_pipeline
from mlinsights.sklapi import SkBaseTransformStacking

data = load_iris()
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(X, y)

trans = SkBaseTransformStacking([LogisticRegression(), DecisionTreeClassifier()])
trans.fit(X_train, y_train)
pred = trans.transform(X_test)
print(pred[3:])

>>>

    [[2 2]
     [1 1]
     [2 2]
     [0 0]
     [1 1]
     [0 0]
     [2 2]
     [1 1]
     [1 1]
     [0 0]
     [0 0]
     [1 1]
     [1 1]
     [1 1]
     [2 2]
     [2 2]
     [1 1]
     [1 1]
     [1 1]
     [0 0]
     [0 0]
     [2 2]
     [0 0]
     [2 2]
     [2 2]
     [2 2]
     [2 2]
     [0 0]
     [0 0]
     [1 1]
     [1 1]
     [0 0]
     [1 1]
     [2 2]
     [0 0]]
fit(X, y=None, **kwargs)[source]#

Trains a model.

@param X features @param y targets @param kwargs additional parameters @return self

get_params(deep=True)[source]#

Returns the parameters which define the object. It follows scikit-learn API.

@param deep unused here @return dict

set_params(**values)[source]#

Sets the parameters.

@param params parameters

transform(X)[source]#

Calls the learners predictions to convert the features.

@param X features @return prédictions