Featuretools 开源项目教程
项目介绍
Featuretools 是一个用于自动化特征工程的开源 Python 库。它擅长将时间和关系型数据集转换为用于机器学习的特征矩阵。Featuretools 通过深度特征合成(Deep Feature Synthesis, DFS)方法,能够自动从数据集中提取有用的特征,从而简化特征工程的复杂性。
项目快速启动
安装
你可以通过 pip 安装 Featuretools:
python -m pip install featuretools
或者通过 Conda-forge 渠道安装:
conda install -c conda-forge featuretools
快速启动示例
以下是一个使用深度特征合成(DFS)进行自动化特征工程的示例:
import featuretools as ft
# 加载示例数据
data = ft.demo.load_mock_customer()
customers_df = data["customers"]
sessions_df = data["sessions"]
transactions_df = data["transactions"]
# 创建实体集
es = ft.EntitySet(id="customer_data")
es = es.add_dataframe(dataframe_name="customers", dataframe=customers_df, index="customer_id")
es = es.add_dataframe(dataframe_name="sessions", dataframe=sessions_df, index="session_id", time_index="session_start")
es = es.add_dataframe(dataframe_name="transactions", dataframe=transactions_df, index="transaction_id", time_index="transaction_time")
# 添加关系
relationship = ft.Relationship(es["customers"]["customer_id"], es["sessions"]["customer_id"])
es = es.add_relationship(relationship)
relationship = ft.Relationship(es["sessions"]["session_id"], es["transactions"]["session_id"])
es = es.add_relationship(relationship)
# 运行深度特征合成
feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name="customers")
print(feature_matrix.head())
应用案例和最佳实践
预测下一个购买
在这个演示中,我们使用一个多表数据集,包含300万条在线杂货订单数据,来自Instacart,预测客户下一次将购买什么。我们展示了如何使用自动化特征工程生成特征,并构建一个准确的机器学习管道。
高级用户扩展
对于更高级的用户,我们展示了如何使用Dask扩展特征工程管道,以处理大型数据集。
典型生态项目
Dask 支持
Featuretools 支持使用 Dask 运行 DFS,以便在多任务情况下进行并行处理:
python -m pip install "featuretools[dask]"
NLP 原语
Featuretools 还支持自然语言处理原语,可以从文本数据中提取特征:
python -m pip install "featuretools[nlp]"
高级原语
对于需要更高级原语的用户,Featuretools 允许定义自定义原语,以满足特定需求。
通过这些模块和示例,你可以快速上手并深入了解 Featuretools 的使用和扩展。