Skip to content

Commit

Permalink
DOC: Use mock for RTD
Browse files Browse the repository at this point in the history
  • Loading branch information
sinhrks committed Oct 1, 2016
1 parent 86583d0 commit 30f84fe
Show file tree
Hide file tree
Showing 7 changed files with 79 additions and 44 deletions.
11 changes: 9 additions & 2 deletions pandas_ml/compat.py
Expand Up @@ -2,8 +2,15 @@

from distutils.version import LooseVersion

import sklearn
_SKLEARN_ge_017 = sklearn.__version__ >= LooseVersion('0.17.0')
try:
import sklearn
_SKLEARN_INSTALLED = True
_SKLEARN_ge_017 = sklearn.__version__ >= LooseVersion('0.17.0')

except ImportError:
_SKLEARN_INSTALLED = False
_SKLEARN_ge_017 = False


try:
import imblearn # noqa
Expand Down
5 changes: 3 additions & 2 deletions pandas_ml/confusion_matrix/abstract.py
Expand Up @@ -3,8 +3,6 @@

import numpy as np
import pandas as pd
# import matplotlib as mpl
import matplotlib.pylab as plt
import collections

from pandas_ml.confusion_matrix.stats import binom_interval, class_agreement, prop_test
Expand Down Expand Up @@ -212,6 +210,9 @@ def plot(self, normalized=False, backend=None, ax=None, **kwargs):
"""
Plots confusion matrix
"""

import matplotlib.pylab as plt

df = self.to_dataframe(normalized)

try:
Expand Down
18 changes: 8 additions & 10 deletions pandas_ml/confusion_matrix/stats.py
Expand Up @@ -2,20 +2,16 @@
# -*- coding: utf8 -*-

import numpy as np
import scipy
from scipy.stats import beta


try:
xrange
except NameError:
xrange = range
from pandas.compat import range


def binom_interval(success, total, confint=0.95):
"""
Compute two-sided binomial confidence interval in Python. Based on R's binom.test.
"""

from scipy.stats import beta

quantile = (1 - confint) / 2.
lower = beta.ppf(quantile, success, total - success + 1)
upper = beta.ppf(1 - quantile, success + 1, total - success)
Expand All @@ -29,7 +25,7 @@ def choose(n, k):
if 0 <= k <= n:
ntok = 1
ktok = 1
for t in xrange(1, min(k, n - k) + 1):
for t in range(1, min(k, n - k) + 1):
ntok *= n
ktok *= t
n -= 1
Expand Down Expand Up @@ -72,13 +68,15 @@ def prop_test(df):
"""
Inspired from R package caret confusionMatrix.R
"""
from scipy.stats import binom

x = np.diag(df).sum()
n = df.sum().sum()
p = (df.sum(axis=0) / df.sum().sum()).max()
d = {
"statistic": x, # number of successes
"parameter": n, # number of trials
"null.value": p, # probability of success
"p.value": scipy.stats.binom.sf(x - 1, n, p), # see https://en.wikipedia.org/wiki/Binomial_test
"p.value": binom.sf(x - 1, n, p), # see https://en.wikipedia.org/wiki/Binomial_test
}
return(d)
31 changes: 25 additions & 6 deletions pandas_ml/core/base.py
@@ -1,9 +1,28 @@
#!/usr/bin/env python

import sklearn.base as base
try:
import sklearn.base as base

_BaseEstimator = base.BaseEstimator
_ClassifierMixin = base.ClassifierMixin
_ClusterMixin = base.ClusterMixin
_RegressorMixin = base.RegressorMixin
_TransformerMixin = base.TransformerMixin
_BaseEstimator = base.BaseEstimator
_ClassifierMixin = base.ClassifierMixin
_ClusterMixin = base.ClusterMixin
_RegressorMixin = base.RegressorMixin
_TransformerMixin = base.TransformerMixin

except ImportError:
# for ReadTheDoc, unable to use mock because of metaclass

class _BaseEstimator(object):
pass

class _ClassifierMixin(object):
pass

class _ClusterMixin(object):
pass

class _RegressorMixin(object):
pass

class _TransformerMixin(object):
pass
9 changes: 7 additions & 2 deletions pandas_ml/skaccessors/base.py
@@ -1,9 +1,14 @@
#!/usr/bin/env python

from sklearn.datasets.base import Bunch

import pandas as pd

try:
from sklearn.datasets.base import Bunch
except ImportError:

class Bunch(object):
pass


def _maybe_sklearn_data(data, target):
if isinstance(data, Bunch):
Expand Down
48 changes: 27 additions & 21 deletions pandas_ml/skaccessors/preprocessing.py
Expand Up @@ -4,28 +4,34 @@
import pandas as pd

from pandas_ml.core.accessor import _AccessorMethods, _attach_methods
from pandas_ml.compat import _SKLEARN_ge_017

import sklearn.preprocessing as pp
if _SKLEARN_ge_017:
_keep_col_classes = [pp.Binarizer,
pp.FunctionTransformer,
pp.Imputer,
pp.KernelCenterer,
pp.LabelEncoder,
pp.MaxAbsScaler,
pp.MinMaxScaler,
pp.Normalizer,
pp.RobustScaler,
pp.StandardScaler]
from pandas_ml.compat import _SKLEARN_INSTALLED, _SKLEARN_ge_017


if _SKLEARN_INSTALLED:

import sklearn.preprocessing as pp

if _SKLEARN_ge_017:
_keep_col_classes = [pp.Binarizer,
pp.FunctionTransformer,
pp.Imputer,
pp.KernelCenterer,
pp.LabelEncoder,
pp.MaxAbsScaler,
pp.MinMaxScaler,
pp.Normalizer,
pp.RobustScaler,
pp.StandardScaler]
else:
_keep_col_classes = [pp.Binarizer,
pp.Imputer,
pp.KernelCenterer,
pp.LabelEncoder,
pp.MinMaxScaler,
pp.Normalizer,
pp.StandardScaler]
else:
_keep_col_classes = [pp.Binarizer,
pp.Imputer,
pp.KernelCenterer,
pp.LabelEncoder,
pp.MinMaxScaler,
pp.Normalizer,
pp.StandardScaler]
_keep_col_classes = []


class PreprocessingMethods(_AccessorMethods):
Expand Down
1 change: 0 additions & 1 deletion requirements.txt
@@ -1,3 +1,2 @@
pandas >= 0.17.0
scikit-learn >= 0.16.0
enum34

0 comments on commit 30f84fe

Please sign in to comment.