特征工程

发布: (2025年12月17日 GMT+8 14:57)
4 min read
原文: Dev.to

Source: Dev.to

什么是特征工程?

  • 特征 只是一列数据(例如,年龄、工资、购买次数)。
  • 特征工程 指创建、修改或选择合适的特征,使模型学习得更好。
  • 可以把它想象成烹饪前的食材准备——需要把食材清洗、切碎,才能做出美味的菜肴。

为什么需要特征工程?

  • 原始数据往往杂乱、不完整或格式不合适。
  • 良好的特征帮助算法更清晰地捕捉模式。
  • 更好的特征 → 更好的预测、更快的训练和更高的准确性。

常见的特征工程技术

技术含义简单示例
处理缺失值填补空白或删除不完整的数据用平均年龄替换缺失的年龄
编码分类数据将文本标签转换为数字“红、蓝、绿” → 0, 1, 2
缩放/归一化将数值放在相似的范围内薪资 (₹10,000–₹1,00,000) 缩放到 0–1
特征创建将已有数据组合或转换为新特征从“出生日期” → 创建“年龄”
特征选择只保留最有用的特征删除无关列,如“用户ID”
分箱将连续值分组为类别年龄 0–12 = 儿童, 13–19 = 青少年, 20+ = 成人

简单示例

想象你有以下数据集:

姓名出生日期薪资城市
Alice1995-06-1250,000Delhi
Bob1988-03-0580,000Mumbai

特征工程后:

  • 年龄 由出生日期计算得出。
  • 城市 被编码为数字(Delhi = 0,Mumbai = 1)。
  • 薪资 被缩放到 0 到 1 之间。

现在数据更干净,模型更容易理解。

关键要点

  • 特征工程 = 准备和改进数据特征。
  • 它让模型更智能,预测更准确。
  • 核心技术包括处理缺失值、编码、缩放、创建新特征以及选择最佳特征。

Python 中的特征工程

确保已安装 pandasscikit-learn

pip install pandas scikit-learn
import pandas as pd
from sklearn.preprocessing import LabelEncoder, MinMaxScaler

# Example dataset
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Date_of_Birth': ['1995-06-12', '1988-03-05', '2000-12-20'],
    'Salary': [50000, 80000, None],   # Missing value
    'City': ['Delhi', 'Mumbai', 'Delhi']
}

df = pd.DataFrame(data)
print("Original Data:\n", df)

# 🔹 Handling Missing Values
df['Salary'].fillna(df['Salary'].mean(), inplace=True)

# 🔹 Feature Creation (Age from Date of Birth)
df['Date_of_Birth'] = pd.to_datetime(df['Date_of_Birth'])
df['Age'] = pd.Timestamp.now().year - df['Date_of_Birth'].dt.year

# 🔹 Encoding Categorical Data (City)
label_encoder = LabelEncoder()
df['City_encoded'] = label_encoder.fit_transform(df['City'])

# 🔹 Scaling Numerical Data (Salary)
scaler = MinMaxScaler()
df['Salary_scaled'] = scaler.fit_transform(df[['Salary']])

print("\nAfter Feature Engineering:\n", df)

代码功能说明

  • 通过填充平均薪资来处理缺失值。
  • Date_of_Birth 创建新特征(年龄)。
  • 将分类数据(城市)编码为数字。
  • 将数值数据(薪资)缩放到 0 到 1 之间。

最后说明

可以把特征工程想象成打磨钻石。原石(数据)本身有价值,但通过塑形和精炼(特征)才能释放其真正的光彩。

Back to Blog

相关文章

阅读更多 »