0Pricing
Learn AI with Python · 课时

创建交互特征与多项式特征

使用 PolynomialFeatures、手动构造交互项、比例特征,并对连续变量分箱

创建交互特征与多项式特征 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

为何要构造新特征

线性模型只能捕捉直线关系。通过创建交互特征和多项式特征,可以让简单模型表达曲线以及变量之间的组合效应。

什么是交互特征

交互会将两个特征相乘,例如 area = length * width。它能够捕捉同时取决于两个输入的效应,而单独的任一输入都无法解释这种效应。

PolynomialFeatures 基础

PolynomialFeatures 会自动生成特征的幂和乘积,最高可达到指定的 degree。二次多项式会增加平方项和两两乘积项。

from sklearn.preprocessing import PolynomialFeatures
import numpy as np

X = np.array([[2, 3]])
poly = PolynomialFeatures(degree=2)
print(poly.fit_transform(X))
# 1, x1, x2, x1^2, x1*x2, x2^2

interaction_only 模式

设置 interaction_only=True 会保留交叉乘积,但删除 x1^2 这样的纯幂项。当您只想要组合效应而不是曲率时,这种设置很有用。

from sklearn.preprocessing import PolynomialFeatures

poly = PolynomialFeatures(degree=2, interaction_only=True, include_bias=False)
X_int = poly.fit_transform(X)

注意特征爆炸

较高的次数会生成大量特征,并增加过拟合风险。使用 10 个输入特征时,三次多项式会产生数百列。应将次数保持在较低水平(2 或 3),并结合特征选择或正则化。

手动构造比率特征

领域知识往往胜过蛮力搜索。每平方米价格、每次展示的点击数等手工构造的比率,能够编码多项式扩展无法发现的含义。

import pandas as pd

df["price_per_sqm"] = df["price"] / df["area"]
df["ctr"] = df["clicks"] / df["impressions"]

使用 pd.cut 分箱

分箱会将连续变量转换为类别。pd.cut 将一列拆分为多个区间,适合捕捉非线性效应,或对年龄、收入等进行分组。

import pandas as pd

df["age_group"] = pd.cut(
    df["age"],
    bins=[0, 18, 35, 60, 120],
    labels=["minor", "young", "adult", "senior"],
)

等频分箱

pd.qcut 会创建数量大致相等的分箱(分位数)。当分布偏斜且您希望得到均衡的分组时,这种方法很有用。

import pandas as pd

df["income_quartile"] = pd.qcut(df["income"], q=4, labels=False)

使用对数变换处理偏斜

右偏特征(收入、价格、计数)会影响许多模型。对数变换会压缩较大的取值,使分布更加对称。

import numpy as np

# log1p handles zeros safely: log(1 + x)
df["log_income"] = np.log1p(df["income"])

平方根及其他变换

平方根变换也能减小偏斜,但比对数变换更温和,适合计数数据。请选择最能使直方图对称的变换。

import numpy as np

df["sqrt_count"] = np.sqrt(df["count"])
# inspect df["sqrt_count"].hist() to confirm reduced skew

综合运用

可以结合多种方法:对偏斜的列进行对数变换,在阈值重要的地方进行分箱,根据领域知识添加比率,并使用 PolynomialFeatures 构造交互特征。务必验证新特征确实提升了交叉验证分数。

快速检查

测试您对特征工程的掌握情况。

总结

总结:构造特征可以帮助简单模型。使用带有 degree 和 interaction_only 的 PolynomialFeatures 添加乘积和幂项(注意特征爆炸)。根据领域知识构造手动比率,使用 pd.cut/pd.qcut 进行分箱,并使用对数或 sqrt 变换修正偏斜。务必验证效果是否提升。

常见问题解答

「创建交互特征与多项式特征」课时是免费的吗?

是的 — 「创建交互特征与多项式特征」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「创建交互特征与多项式特征」这节课中我会学到什么?

使用 PolynomialFeatures、手动构造交互项、比例特征,并对连续变量分箱 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「创建交互特征与多项式特征」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 特征选择方法
  2. 创建交互特征与多项式特征
  3. 目标编码与高级分类变量处理
  4. 使用 Featuretools 自动进行特征工程
← 返回 Learn AI with Python