Skip to main content

discover_feature_relationships 尝试使用机器学习在数据框中查找列到列的关系

项目描述

发现特征关系

尝试使用 scikit-learn (RandomForests) 和标准相关测试(Pearson、Spearman 和 Kendall 通过 Pandas)发现 DataFrame 中所有列之间的一维关系。

目标是通过了解哪些特征(一次 1 列)预测其他列,看看我们是否可以更好地理解 DataFrame 中的数据。此代码尝试学习所有列的笛卡尔积(所有对)之间的预测关系。

我们可能想知道存在哪些其他关系(例如在探索性数据分析期间)以及某些预测特征是否由其他预测性较差的特征驱动(以帮助我们找到新的和更好的功能或数据源)。我们还可以通过检查某些关系是否存在来感知检查数据。

默认情况下,它假定每个目标列都是回归挑战。您可以提供列列表以视为分类挑战。对于回归,我们将负分数限制为 0(r^2 可以任意为负,我们将其限制为 0 以便更容易解释)。

文本编码的列会自动进行 LabelEncoded(这是一个合理的默认值,但在您的情况下可能不会显示信息,您可能需要提供自己的更智能的编码)。这增加了 YellowBrick 和 Pandas Profiling 中的相关图,其中文本列未自动编码。

我们可能想同时使用这个工具:

该项目(和示例)位于 GitHub 上:

泰坦尼克号的例子

泰坦尼克号笔记本

  • 出发(分类)可以通过票价很好地预测,也可以通过年龄预测
  • Fare 预测了 Pclass(回归),但 Pclass 预测的 Fare(回归)很差
  • Survived 很好地预测了性别(分类)
  • Sex、Fare、Pclass、SibSpParch 可以很好地预测幸存(分类)
    • 在大约 0.62 处预测此特征相当于“无信息”,因为 0.62 是 Survived 的平均值
  • SibSpParch 由 SibSp 和 Parch 预测(SibSpParch 是两者的总和 - 它是一个工程附加功能) - 它也由 Fare 预测
  • Fare 也预测了 SibSp 和 Parch(但不如 SibSpParch 预测的好)

替代文字

这是使用以下方法生成的:

df = pd.read_csv("titanic_train.csv")
...

import discover
df_results = discover.discover(cols, classifier_overrides, df)

df_results.pivot(index='target', columns='feature', values='score').fillna(1) \
.style.background_gradient(cmap="viridis", low=0.3, high=0.0, axis=1) \
.set_precision(2)

波士顿示例

波士顿笔记本

  • NOX 预测 AGE 和 DIS(但不是相反)
  • target 预测 LSTAT,LSTAT 弱预测 target,LSTAT 弱预测 RM
  • DIS预测AGE,AGE弱预测DIS
  • INDUS 预测 CRIM 和有点 AGE, B
  • target 弱预测 RM,RM 弱预测 target

要求

  • 蟒蛇 3.6+
  • scikit-learn (0.19+)
  • 熊猫
  • jupyter笔记本
  • matplotlib
  • 海运
conda install scikit-learn pandas jupyter pytest seaborn
conda install -c conda-forge watermark

设置

从 PyPI 安装

pip install discover_feature_relationships

https://pypi.org/project/discover-feature-relationships/

从源安装

首先从 GitHub 签出,然后使用 安装python setup.py install,然后cd进入examples文件夹并运行 Notebooks。

测试

  • 运行discover.py代码是否正常工作的简单测试
  • 运行pytest以运行test_discover.py单个单元测试(用于pytest -s查看print输出)

伊恩注意发展

环境:. ~/anaconda3/bin/activate discover_feature_relationships

安装程序

要推送到 PyPI,我需要遵循https://docs.python.org/3/distributing/index.html#distributing-index - 特别python se tup.py sdist bdist_wheeltwine upload dist/*. 这使用https://pypi.org/project/twine/

去做

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

discover_feature_relationships-1.0.3.tar.gz (5.1 kB 查看哈希

已上传 source

内置分布

discover_feature_relationships-1.0.3-py3-none-any.whl (6.0 kB 查看哈希

已上传 py3