IT评测·应用市场-qidao123.com

标题: 体系化特性工程全流程:基于Scikit-Learn的实战指南与模型优化剖析 [打印本页]

作者: 河曲智叟    时间: 2025-3-24 15:10
标题: 体系化特性工程全流程:基于Scikit-Learn的实战指南与模型优化剖析
特性工程流程图

  1. 数据清洗 → 特征编码 → 特征转换 → 特征生成 → 特征选择 → 数据整合
  2.       ↑           ↓
  3.       └─数据探索───┘
复制代码

各步骤详解、注意事项及Scikit-learn函数

1. 数据清洗


2. 特性编码


3. 特性转换


4. 特性生成


5. 特性选择


6. 数据整合



完整实例:房价猜测

  1. import numpy as np
  2. import pandas as pd
  3. from sklearn.datasets import fetch_california_housing
  4. from sklearn.model_selection import train_test_split
  5. from sklearn.pipeline import Pipeline
  6. from sklearn.compose import ColumnTransformer
  7. from sklearn.preprocessing import StandardScaler, OneHotEncoder
  8. from sklearn.impute import SimpleImputer
  9. from sklearn.ensemble import RandomForestRegressor
  10. from sklearn.metrics import mean_squared_error
  11. # 加载数据
  12. data = fetch_california_housing(as_frame=True)
  13. X = data.data
  14. y = data.target
  15. # 模拟缺失值(示例)
  16. X['HouseAge'] = X['HouseAge'].mask(np.random.random(len(X)) < 0.1, np.nan)
  17. # 分割数据
  18. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  19. # 定义预处理流水线
  20. numerical_cols = ['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup']
  21. categorical_cols = ['OceanProximity']  # 假设有一个分类特征
  22. preprocessor = ColumnTransformer(
  23.     transformers=[
  24.         ('num', Pipeline([
  25.             ('imputer', SimpleImputer(strategy='median')),
  26.             ('scaler', StandardScaler())
  27.         ]), numerical_cols),
  28.         
  29.         ('cat', Pipeline([
  30.             ('imputer', SimpleImputer(strategy='most_frequent')),
  31.             ('encoder', OneHotEncoder(drop='if_binary'))
  32.         ]), categorical_cols)
  33.     ])
  34. # 构建完整Pipeline(预处理 + 模型)
  35. pipeline = Pipeline([
  36.     ('preprocessor', preprocessor),
  37.     ('regressor', RandomForestRegressor(n_estimators=100, random_state=42))
  38. ])
  39. # 训练模型
  40. pipeline.fit(X_train, y_train)
  41. # 预测与评估
  42. y_pred = pipeline.predict(X_test)
  43. mse = mean_squared_error(y_test, y_pred)
  44. print(f"Mean Squared Error: {mse:.2f}")
复制代码

关键注意事项

通过以上流程,可以体系化地优化数据质量并提升模型性能。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4