diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index 8276100..781c3b8 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -14,16 +14,17 @@ jobs:
strategy:
fail-fast: false
matrix:
- python-version: ["3.8", "3.9", "3.10", "3.11"]
+ python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
+ allow-prereleases: true
- name: Install dependencies
run: |
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f3e29be..c0538e8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,19 @@
# Changelog
-## 0.1.11, in development
-
-- Coming soon...
+## 0.2.0, 3 September 2023
+
+- Moved to something more closely resembling semantic versioning, which is the main reason this is version 0.2.0.
+- Builds and tests on Python 3.11 have been successful, so now supporting this version. Started testing on Python 3.12, which is not supported for the time being.
+- Added custom 'alarm' `Detector`, which can be instantiated with a function and a warning to emit when the function returns True for a 1D array. You can easily write your own detectors with this class.
+- Added `make_detector_pipeline()` which can take sequences of functions and warnings (or a mapping of functions to warnings) and returns a `scikit-learn.pipeline.Pipeline` containing a `Detector` for each function.
+- Added `RegressionMultimodalDetector` to allow detection of non-unimodal distributions in features, when considered across the entire dataset. (Coming soon, a similar detector for classification tasks that will partition the data by class.)
+- Redefined `is_standardized` (deprecated) as `is_standard_normal`, which implements the Kolmogorov–Smirnov test. It seems more reliable than assuming the data will have a mean of almost exactly 0 and standard deviation of exactly 1, when all we really care about is that the feature is roughly normal.
+- Changed the wording slightly in the existing detector warning messages.
+- No longer warning if `y` is `None` in, eg, `ImportanceDetector`, since you most likely know this.
+- Some changes to `ImportanceDetector`. It now uses KNN estimators instead of SVMs as the third measure of importance; the SVMs were too unstable, causing numerical issues. It also now requires that the number of important features is less than the total number of features to be triggered. So if you have 2 features and both are important, it does not trigger.
+- Improved `is_continuous()` which was erroneously classifying integer arrays with many consecutive values as non-continuous.
+- Added a `Tutorial.ipynb` notebook to the docs.
+- Added a **Copy** button to code blocks in the docs.
## 0.1.10, 21 November 2022
diff --git a/README.md b/README.md
index b3d8178..579c271 100644
--- a/README.md
+++ b/README.md
@@ -8,8 +8,6 @@
🚩 `redflag` aims to be an automatic safety net for machine learning datasets. The vision is to accept input of a Pandas `DataFrame` or NumPy `ndarray` (one for each of the input `X` and target `y` in a machine learning task). `redflag` will provide an analysis of each feature, and of the target, including aspects such as class imbalance, leakage, outliers, anomalous data patterns, threats to the IID assumption, and so on. The goal is to complement other projects like `pandas-profiling` and `greatexpectations`.
-⚠️ **This project is very rough and does not do much yet. The API will very likely change without warning. Please consider contributing!**
-
## Installation
diff --git a/docs/conf.py b/docs/conf.py
index d7482db..68b39b6 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -48,11 +48,12 @@ def setup(app):
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
- 'sphinx.ext.githubpages',
'sphinxcontrib.apidoc',
+ 'sphinx.ext.githubpages',
'sphinx.ext.napoleon',
- 'myst_nb',
'sphinx.ext.coverage',
+ 'sphinx_copybutton',
+ 'myst_nb',
]
myst_enable_extensions = ["dollarmath", "amsmath"]
diff --git a/docs/index.rst b/docs/index.rst
index 5669fc3..7703273 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -41,6 +41,7 @@ User guide
installation
_notebooks/Basic_usage.ipynb
_notebooks/Using_redflag_with_sklearn.ipynb
+ _notebooks/Tutorial.ipynb
API reference
@@ -82,5 +83,5 @@ Indices and tables
PyPI releases
Code in GitHub
Issue tracker
- Community guidelines
- Scienxlab
+ Community guidelines
+ Scienxlab
diff --git a/docs/make.bat b/docs/make.bat
deleted file mode 100644
index 153be5e..0000000
--- a/docs/make.bat
+++ /dev/null
@@ -1,35 +0,0 @@
-@ECHO OFF
-
-pushd %~dp0
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
- set SPHINXBUILD=sphinx-build
-)
-set SOURCEDIR=.
-set BUILDDIR=_build
-
-if "%1" == "" goto help
-
-%SPHINXBUILD% >NUL 2>NUL
-if errorlevel 9009 (
- echo.
- echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
- echo.installed, then set the SPHINXBUILD environment variable to point
- echo.to the full path of the 'sphinx-build' executable. Alternatively you
- echo.may add the Sphinx directory to PATH.
- echo.
- echo.If you don't have Sphinx installed, grab it from
- echo.https://www.sphinx-doc.org/
- exit /b 1
-)
-
-%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
-goto end
-
-:help
-%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
-
-:end
-popd
diff --git a/docs/notebooks/Tutorial.ipynb b/docs/notebooks/Tutorial.ipynb
index 5fa283a..8830a0b 100644
--- a/docs/notebooks/Tutorial.ipynb
+++ b/docs/notebooks/Tutorial.ipynb
@@ -80,7 +80,7 @@
"X_scaled = scaler.transform(X)\n",
"\n",
"clf.fit(X_scaled, y)\n",
- "clf.predict(X)"
+ "clf.predict(X) # <-- Oops, we predicted on unscaled data."
]
},
{
@@ -100,7 +100,7 @@
{
"data": {
"text/plain": [
- "array(['ms', 'ss'], dtype='"
+ ""
]
},
- "execution_count": 11,
+ "execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
- "image/png": "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X/5Ff/3rXwMeIy0trc4yeuihh6wZh9S895Hty0NSvZ8Vh8Ohl156yd/HhuXRnP+z4f6MENQWKygo0Ny5c7Vv3z7l5eXp8uXLSk9P14ULgSeMnzhxojwej3/66KOPwlRxwwYMGBBQ4+HDh/1tK1as0MqVK7V27VoVFhbK5XJp/PjxOnfuXBgrrquwsDBgDFdPsvOTn/zE38fGZXHhwgUNHDhQa9eurbe9Oa9/VlaWtm3bptzcXO3Zs0fnz5/XpEmTdOXKlVANo9FxXLx4Ufv379eyZcu0f/9+bd26VX/5y180efLkOn3nzJkTsIxee+21UJTv19TykJp+H9m+PCQF1O/xePT666/L4XDowQcfDOgX7uXRnP+zYf+MtPKaGAih0tJSI8kUFBT4582cOdPcf//94SuqGZ555hkzcODAettqa2uNy+UyL774on/epUuXTExMjHn11VdDVGHLzJ8/39x5552mtrbWGNM+loUks23bNv/t5rz+Z8+eNRERESY3N9ff55tvvjG33HKL2b59e8hq/75rx1GfP/3pT0aS+eqrr/zzRo0aZebPn9+2xV2H+sbR1PuovS6P+++/34wZMyZgnm3Lw5i6/2dt+IywRt2OXL0cZ2xsbMD8/Px89ejRQ/369dOcOXNUWloajvIadfz4cbndbiUnJ+uhhx7SF198IUkqKSmR1+tVevp319x1Op0aNWpUg5cptUF1dbU2b96sn//85wEXcmkPy+L7mvP6FxUVqaamJqCP2+1WSkqK1cuooqJCDoejznn833rrLcXFxWnAgAFatGiRdVtupMbfR+1xeZw+fVoffvihZs+eXafNtuVx7f9ZGz4jN8SZyW4GxhgtWLBA99xzj1JSUvzzMzIy9JOf/ES9e/dWSUmJli1bpjFjxqioqMiaswANGzZMb7zxhvr166fTp0/rhRde0MiRI1VcXOy/mMq1F1CJj4/XV199FY5ym+X999/X2bNnNWvWLP+89rAsrtWc19/r9apTp07q2rVrnT7XXgzHFpcuXdKvfvUrPfzwwwEXT/jpT3+q5ORkuVwuHTlyREuWLNGf//znOtcKCKem3kftcXls2rRJUVFRmjp1asB825ZHff9nbfiMENTtxLx583To0CHt2bMnYP706dP9f6ekpGjIkCHq3bu3PvzwwzofinDJyMjw/52amqoRI0bozjvv1KZNm/w7yVzPZUptsH79emVkZMjtdvvntYdl0ZCWvP62LqOamho99NBDqq2t1SuvvBLQNmfOHP/fKSkp6tu3r4YMGaL9+/frRz/6UahLrVdL30e2Lg9Jev311/XTn/5UnTt3Dphv2/Jo6P+sFN7PCJu+24HMzEx98MEH2r17t3r27Nlo34SEBPXu3VvHjx8PUXXXr0uXLkpNTdXx48f9e39fz2VKw+2rr77Szp079eijjzbarz0si+a8/i6XS9XV1SovL2+wjy1qamo0bdo0lZSUKC8vr8lLEf7oRz9SRESE1cvo2vdRe1oekvSHP/xBx44da/LzIoV3eTT0f9aGzwhBbTFjjObNm6etW7dq165dSk5ObvI+Z86c0cmTJ5WQkBCCClvG5/Pp6NGjSkhI8G/2+v6mrurqahUUFFh7mdINGzaoR48e+qd/+qdG+7WHZdGc13/w4MGKiIgI6OPxeHTkyBGrltHVkD5+/Lh27typbt26NXmf4uJi1dTUWL2Mrn0ftZflcdX69es1ePBgDRw4sMm+4VgeTf2fteIz0urd0dBmfvGLX5iYmBiTn59vPB6Pf7p48aIxxphz586ZhQsXmr1795qSkhKze/duM2LECPODH/zAVFZWhrn67yxcuNDk5+ebL774wuzbt89MmjTJREVFmS+//NIYY8yLL75oYmJizNatW83hw4fNjBkzTEJCglVjuOrKlSumV69eZvHixQHzbV4W586dMwcOHDAHDhwwkszKlSvNgQMH/HtDN+f1f/zxx03Pnj3Nzp07zf79+82YMWPMwIEDzeXLl60YR01NjZk8ebLp2bOnOXjwYMDnxefzGWOMOXHihHn22WdNYWGhKSkpMR9++KH54Q9/aAYNGmTNOJr7PrJ9eVxVUVFhbr31VrNu3bo697dleTT1f9aY8H9GCGqLSap32rBhgzHGmIsXL5r09HTTvXt3ExERYXr16mVmzpxpvv766/AWfo3p06ebhIQEExERYdxut5k6daopLi72t9fW1ppnnnnGuFwu43Q6zb333msOHz4cxoob9vHHHxtJ5tixYwHzbV4Wu3fvrvd9NHPmTGNM817/qqoqM2/ePBMbG2siIyPNpEmTQj62xsZRUlLS4Odl9+7dxhhjvv76a3Pvvfea2NhY06lTJ3PnnXeaJ5980pw5c8aacTT3fWT78rjqtddeM5GRkebs2bN17m/L8mjq/6wx4f+McJlLAAAsxm/UAABYjKAGAMBiBDUAABYjqAEAsBhBDQCAxQhqAAAsRlADAGAxghoAAIsR1AAAWIygBtAor9er+fPnq0+fPurcubPi4+N1zz336NVXX9XFixclSUlJSXI4HHI4HIqMjNQPf/hDvfTSS+LEh0DrcT1qAA364osv9OMf/1i33367li9frtTUVF2+fFl/+ctf9Prrr8vtdmvy5MmSpOeee05z5szRpUuXtHPnTv3iF79QdHS0HnvssTCPAmjfONc3gAZNnDhRxcXF+vzzz9WlS5c67cYYORwOJSUlKSsrS1lZWf62wYMHKykpSe+9914IKwZuPGz6BlCvM2fOaMeOHZo7d269IS1JDoejzjxjjPLz83X06FFFRES0dZnADY+gBlCvEydOyBiju+66K2B+XFycbrvtNt12221avHixf/7ixYt12223yel0avTo0TLG6Mknnwx12cANh6AG0Khr15r/9Kc/6eDBgxowYIB8Pp9//r/+67/q4MGDKigo0OjRo7V06VKNHDky1OUCNxx2JgNQrz59+sjhcOjzzz8PmH/HHXdIkiIjIwPmx8XFqU+fPurTp4/ee+899enTR8OHD9e4ceNCVjNwI2KNGkC9unXrpvHjx2vt2rW6cOHCdd23a9euyszM1KJFizhEC2glghpAg1555RVdvnxZQ4YM0TvvvKOjR4/q2LFj2rx5sz7//HN16NChwfvOnTtXx44dY69voJXY9A2gQXfeeacOHDig5cuXa8mSJTp16pScTqf69++vRYsW6Yknnmjwvt27d9cjjzyi7OxsTZ06VbfcwnoB0BIcRw0AgMX4igsAgMUIagAALEZQAwBgMYIaAACLEdQAAFiMoAYAwGIENQAAFiOoAQCwGEENAIDFCGoAACxGUAMAYLH/Hwbs+sPLYMiVAAAAAElFTkSuQmCC\n",
+ "image/png": "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TEzU8uXLOXEMl6Sph3iUl3/vx2oAwCzNCmm3233BM6QlqVOnTnK73S0uCu1HUw/xeGs2f/QBaL+aFdI33XSTZs+erbVr1youLk6S9O2332ru3LkaN26cTwtE8GpqK1liSxkAGtOskP7zn/+s2267TX379lV8fLwk6fjx4xoyZIhee+01nxaI4NXUVrLEljIANKZZIR0fH69PP/1UW7du1RdffCFJGjx4sFJSUnxaHAAA7dklnd29fft2JSYmyuVyyWaz6eabb9asWbM0a9YsjRo1Stdcc40+/vjj1qoVAIB25ZJC+rnnntOMGTMUHh5+QVtERIR+97vfaenSpT4rDgCA9uySQvp///d/NX78+AbbU1NTVVBQ0OKiAADAJR6TLi0trffSK8+Hdeyo7777rsVFofVx5jUAmO+SQvryyy/XoUOHNGDAgHrbDxw4oNjYWJ8UhtbFmdcAYL5L2t19yy23aP78+Tp37twFbT/88IOeeOIJ/epXv/JZcQAAtGeXtCX9+OOP6+2339bVV1+tmTNnauDAgZKkL774QsuXL1ddXZ3+5V/+pVUKBQCgvbmkLemYmBjt2rVLQ4YMUU5Oju644w7dcccdeuyxxzRkyBDt3LlTMTExF/15H330kW699VbFxcXJZrNp/fr1Xu333nuvbDab1/TzE9fKy8s1depUhYeHKzIyUtOnT9fp06cvZVgAABjpkm9mkpCQoE2bNun777/XkSNHZFmWrrrqKl122WWXvPAzZ85o2LBhuv/++zVp0qR6+4wfP16rVq3yvA4LC/Nqnzp1qkpKSrRlyxbV1NTovvvu04MPPqg1a9Zccj0AAJikWXcck6TLLrtMo0aNatHC09PTlZ6e3mifsLAw2e32ets+//xzbd68WXv37tXIkSMlSS+88IJuueUW/elPf/LcVxwAgGDUrOdJ+1Nubq6io6M1cOBAPfzwwzp58qSnLT8/X5GRkZ6AlqSUlBSFhIRoz549DX5mVVWVXC6X1wQAgGmMDunx48frr3/9q7Zt26Z/+7d/U15entLT01VXVydJcjqdio6O9npPx44dFRUVJWcj1wAvXrxYERERnun8Q0IAADBJs3d3+8PkyZM9PyclJWno0KG68sorlZub26JHYubk5CgrK8vz2uVyEdQAAOMYvSX9c/3791evXr105MgRSZLdbldZWZlXn9raWpWX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\n",
"text/plain": [
"