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_wheel是twine upload dist/*. 这使用https://pypi.org/project/twine/。
去做
- 考虑版本信息:https ://github.com/pallets/flask/blob/master/setup.py
- 在设置中考虑 python_requires 行
- 考虑添加依赖项
- 将依赖项添加到设置
- 清理链接列表
- 凹凸版nbr
- 添加 conda 安装程序
项目详情
discover_feature_relationships-1.0.3-py3-none-any.whl 的哈希 值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | e50d92e27fc5cb09bb08db73667edb670e9bba6354e5e4fc5662d84cf08780a1 |
|
| MD5 | b05cd5b33cd7e316c1aa92d9e0d228b1 |
|
| 布莱克2-256 | 8bfe22019933e2950e8d6224850afdc243ad770dcdf0a92bf4b525581ef84dc1 |