You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看Featuretools生成的特征类型(含数值型、分类型)

查看Featuretools生成的特征类型及区分数值/分类型的方法

嘿,刚好对Featuretools的特征类型这块熟得很,给你一步步讲清楚怎么查看和区分!

一、查看所有特征的类型

当你用Featuretools的dfs或者deep_feature_synthesis生成特征后,会得到两个核心结果:feature_matrix(特征矩阵,本质是Pandas DataFrame)和feature_defs(特征定义列表,每个元素是Featuretools的Feature对象)。

最准确的方式是直接遍历feature_defs来获取每个特征的官方类型:

import featuretools as ft

# 假设你已经构建好EntitySet并生成了特征
feature_matrix, feature_defs = ft.dfs(entityset=your_entityset, target_dataframe_name="target_table")

# 逐个打印特征名和对应的类型
for feature in feature_defs:
    print(f"特征名称: {feature.name}, Featuretools类型: {feature.type}")

Featuretools会返回明确的类型标识,比如Numeric、Categorical、Datetime、Boolean这些,比单纯看DataFrame的dtypes更靠谱(毕竟有些分类型特征在DataFrame里可能被存为object类型)。

如果你想查看单个特征的详细信息,还可以用ft.describe_feature():

# 查看第一个特征的完整描述
print(ft.describe_feature(feature_defs[0]))

这个方法会输出特征的类型、依赖的原始特征、生成逻辑(比如是通过mean聚合还是mode聚合),帮你更透彻理解特征。

二、区分数值型(Numeric)和分类型(Categorical)特征

有了feature_defs,筛选两类特征就很简单了,直接通过FeatureType来判断:

# 筛选所有数值型特征
numeric_features = [feat.name for feat in feature_defs if feat.type == ft.FeatureType.NUMERIC]

# 筛选所有分类型特征
categorical_features = [feat.name for feat in feature_defs if feat.type == ft.FeatureType.CATEGORICAL]

print("数值型特征列表:", numeric_features)
print("分类型特征列表:", categorical_features)

额外小贴士

  • 一些衍生特征的类型很好预判:比如用sum、mean、max这类聚合函数生成的特征肯定是数值型;用mode(众数)或者基于原始分类变量生成的特征大概率是分类型。
  • 如果你的分类型特征在feature_matrix里是object类型,后续建模前可以转成Pandas的category类型来节省内存并提升效率:
feature_matrix[categorical_features] = feature_matrix[categorical_features].astype('category')

内容的提问来源于stack exchange,提问作者deevroman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:01:14