如何查看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
相关产品推荐
相关产品推荐

