day22

知识回顾:

  1. 转化器和估计器的概念
  2. 管道工程
  3. ColumnTransformer和Pipeline类

作业:

整理下全部逻辑的先后顺序,看看能不能制作出适合所有机器学习的通用pipeline

制作通用 pipeline

  1. 一般步骤

    • 数据加载:首先需要加载数据集。这可以使用pandas库的read_csv等函数来读取 CSV 文件,或者使用其他适合数据存储格式的读取函数。
    • 数据预处理
      • 数值型数据处理:使用StandardScaler等转化器对数值型数据进行标准化或归一化。
      • 类别型数据处理:使用OneHotEncoder对类别型数据进行编码,如果类别型数据是有序的,也可以使用OrdinalEncoder
      • 缺失值处理:可以使用SimpleImputer来填充缺失值,对于数值型数据可以使用均值、中位数等策略,对于类别型数据可以使用最频繁的值等策略。
    • 特征工程(可选)
      • 多项式特征生成:使用PolynomialFeatures生成多项式特征,以捕捉数据中的非线性关系。
      • 特征选择:使用SelectKBest等方法选择最相关的特征,减少特征维度。
    • 模型选择与训练:选择合适的估计器,如线性回归、决策树、随机森林等,并在处理后的数据上进行训练。
    • 模型评估:使用交叉验证等方法评估模型的性能,如计算准确率、均方误差等指标。
  2. 通用 pipeline 示例代码

from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder, SimpleImputer
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
import pandas as pd

# 加载数据集
data = pd.read_csv(('heart.csv'))
X = data.drop('target_column', axis = 1)
y = data['target_column']

num_cols = X.select_dtypes(include='number').columns
cat_cols = X.select_dtypes(include='object').columns

num_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='mean')),
    ('scaler', StandardScaler())
])

cat_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('onehot', OneHotEncoder(handle_unknown='ignore'))
])

preprocessor = ColumnTransformer([
    ('num', num_transformer, num_cols),
    ('cat', cat_transformer, cat_cols)
])

pipeline = Pipeline([
    ('preprocessor', preprocessor),
    ('feature_selection', SelectKBest(score_func=f_classif)),
    ('classifier', LogisticRegression())
])

scores = cross_val_score(pipeline, X, y, cv = 5)
print("Cross - validation scores:", scores)
print("Average score:", scores.mean())

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值