Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Wedata Feature Engineering Library

Wedata 特征工程库,提供特征存储、特征管理、离在线同步等功能,适用于腾讯云 WeData 平台上的 ML 特征工程场景。

功能特性

  • 特征表管理:创建、删除、修改特征表,支持 Iceberg 等多种存储引擎
  • 特征数据读写:基于 Spark 的高效特征数据写入和读取
  • 离在线同步:一键将离线特征表发布为在线特征表,支持周期性同步和一次性同步
  • 在线特征服务:基于 Redis 的在线特征存储和实时查询
  • 训练集构建:通过 Feature Lookup 自动关联多个特征表,构建训练数据集

安装

pip install tencent-wedata-feature-engineering

快速开始

from wedata.feature_store.feature_table_client import FeatureTableClient

# 初始化客户端(在 WeData Notebook 中自动获取环境配置)
client = FeatureTableClient(spark)

# 创建特征表
feature_table = client.create_table(
    name="user_features",
    database_name="my_feature_db",
    primary_keys=["user_id"],
    df=features_df,
    timestamp_key="event_timestamp"
)

# 发布为在线特征表
client.publish_table(
    table_name="user_features",
    data_source_name="my_datasource"
)

快速开始(3.0 版本)

3.0 版本使用 FeatureEngineeringClient,需要 mlflow >= 3.0.0

初始化客户端

from wedata.feature_engineering.client import FeatureEngineeringClient

# 初始化客户端(在 WeData Notebook 中自动获取 Spark 会话和环境配置)
fe = FeatureEngineeringClient()

# 也可以显式传入 SparkSession
# fe = FeatureEngineeringClient(spark)

创建数据库与特征表

from wedata.common.constants.engine_types import EngineTypes

# 创建特征数据库
fe.create_database("my_feature_db", catalog_name="DataLakeCatalog", comment="用户特征库")

# 创建特征表(通过 DataFrame 推断 schema)
feature_table = fe.create_table(
    name="user_features",
    database_name="my_feature_db",
    catalog_name="DataLakeCatalog",
    primary_keys=["user_id"],
    timestamp_key="event_timestamp",
    engine_type=EngineTypes.ICEBERG_ENGINE,
    df=features_df,
    description="用户画像特征表"
)

写入与读取特征数据

# 写入特征数据(默认追加模式)
fe.write_table(
    name="user_features",
    database_name="my_feature_db",
    catalog_name="DataLakeCatalog",
    df=new_features_df
)

# 读取特征表数据
df = fe.read_table(
    name="user_features",
    database_name="my_feature_db",
    catalog_name="DataLakeCatalog"
)
df.show()

构建训练集

from wedata.common.entities.feature_lookup import FeatureLookup

# 定义特征查找
feature_lookups = [
    FeatureLookup(
        table_name="user_features",
        lookup_key="user_id",
        feature_names=["age", "gender", "purchase_count"],
        timestamp_lookup_key="event_timestamp"
    ),
    FeatureLookup(
        table_name="item_features",
        lookup_key="item_id",
        feature_names=["category", "price"]
    ),
]

# 创建训练集
training_set = fe.create_training_set(
    df=label_df,
    feature_lookups=feature_lookups,
    label="is_purchased",
    exclude_columns=["user_id", "item_id"],
    database_name="my_feature_db",
    catalog_name="DataLakeCatalog"
)

# 加载训练 DataFrame
training_df = training_set.load_df()

模型训练与记录

import mlflow
import mlflow.sklearn
from sklearn.ensemble import GradientBoostingClassifier

# 训练模型
model = GradientBoostingClassifier()
model.fit(training_df.toPandas().drop("is_purchased", axis=1),
          training_df.toPandas()["is_purchased"])

# 记录模型(自动关联特征元数据)
with mlflow.start_run():
    fe.log_model(
        model=model,
        artifact_path="model",
        flavor=mlflow.sklearn,
        training_set=training_set,
        registered_model_name="purchase_prediction_model"
    )

批量推理

# 使用已注册的模型进行批量推理
predictions = fe.score_batch(
    model_uri="models:/purchase_prediction_model/1",
    df=inference_df
)
predictions.show()

发布在线特征表

from wedata.common.cloud_sdk_client.models import SchedulerConfiguration

# 一次性发布
fe.publish_table(
    catalog_name="DataLakeCatalog",
    schema_name="my_feature_db",
    table_name="user_features",
    online_db_name="online_feature_db",
    online_table_name="user_features_online"
)

# 周期性同步(可选)
fe.publish_table(
    catalog_name="DataLakeCatalog",
    schema_name="my_feature_db",
    table_name="user_features",
    online_db_name="online_feature_db",
    online_table_name="user_features_online",
    trigger=SchedulerConfiguration(cron_expression="0 0 * * *")  # 每天同步
)

管理特征表

# 获取特征表元数据
table_meta = fe.get_table(name="user_features", database_name="my_feature_db", catalog_name="DataLakeCatalog")

# 设置标签
fe.set_feature_table_tag("user_features", "my_feature_db", key="team", value="ml-platform")

# 删除标签
fe.delete_feature_table_tag("user_features", "my_feature_db", key="team")

# 删除在线表
fe.drop_online_table(catalog_name="DataLakeCatalog", schema_name="my_feature_db", table_name="user_features")

# 删除特征表
fe.drop_table(name="user_features", database_name="my_feature_db", catalog_name="DataLakeCatalog")

# 删除数据库
fe.drop_database("my_feature_db", catalog_name="DataLakeCatalog")

使用环境

本库需要在腾讯云 WeData 平台的 Notebook 或 CodeStudio 环境中使用,依赖平台提供的 Spark 引擎和 Feast 特征服务。

许可证

Apache 2.0

Release files for tencent-wedata-feature-engineering 1.0.7.dev2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tencent-wedata-feature-engineering 1.0.7.dev2
File Size Uploaded
tencent_wedata_feature_engineering-1.0.7.dev2.tar.gz 144.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tencent-wedata-feature-engineering 1.0.7.dev2
File Interpreter ABI Platform
tencent_wedata_feature_engineering-1.0.7.dev2-py3-none-any.whl Python 3 none any Details

Total release size: 297.3 kB

Release files / tencent_wedata_feature_engineering-1.0.7.dev2.tar.gz

Download URL tencent_wedata_feature_engineering-1.0.7.dev2.tar.gz
Size 144.4 kB
Tags Source
SHA-256 checksum
How to use checksums
82f6dfc567dc37fb397a05060ff5c08a3c116924dd27cf2e139062410ebe4cc6
BLAKE2b-256 checksum
How to use checksums
03c5ab2b86343245f3098dcb9a7e7a4c38b5acd939c2bbe1860109d8221b510b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release files / tencent_wedata_feature_engineering-1.0.7.dev2-py3-none-any.whl

Download URL tencent_wedata_feature_engineering-1.0.7.dev2-py3-none-any.whl
Size 152.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
610402b11349aa2e6172ee875441fba1c612043d46d822dac612d75350ad58f0
BLAKE2b-256 checksum
How to use checksums
fdacbadb444ae6de509ac002385cf960eb1aa7c607fa5b94c04bc202ee20219e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

1.0.7.dev2 This release

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.5.51

2 release files

0.1.53

2 release files

0.1.52

2 release files

0.1.51

2 release files

0.1.50

2 release files

0.1.49

2 release files

0.1.48

2 release files

0.1.47

2 release files

0.1.46

2 release files

0.1.45

2 release files

0.1.44

2 release files

0.1.43

2 release files

0.1.42

2 release files

0.1.41

2 release files

0.1.40

2 release files

0.1.39

2 release files

0.1.38

2 release files

0.1.37

2 release files

0.1.36

2 release files

0.1.34

2 release files

0.1.33

2 release files

0.1.31

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.28

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.21

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page