知识回顾:
- 转化器和估计器的概念
- 管道工程
- ColumnTransformer和Pipeline类
作业:
整理下全部逻辑的先后顺序,看看能不能制作出适合所有机器学习的通用pipeline
制作通用 pipeline
-
一般步骤
- 数据加载:首先需要加载数据集。这可以使用
pandas库的read_csv等函数来读取 CSV 文件,或者使用其他适合数据存储格式的读取函数。 - 数据预处理:
- 数值型数据处理:使用
StandardScaler等转化器对数值型数据进行标准化或归一化。 - 类别型数据处理:使用
OneHotEncoder对类别型数据进行编码,如果类别型数据是有序的,也可以使用OrdinalEncoder。 - 缺失值处理:可以使用
SimpleImputer来填充缺失值,对于数值型数据可以使用均值、中位数等策略,对于类别型数据可以使用最频繁的值等策略。
- 数值型数据处理:使用
- 特征工程(可选):
- 多项式特征生成:使用
PolynomialFeatures生成多项式特征,以捕捉数据中的非线性关系。 - 特征选择:使用
SelectKBest等方法选择最相关的特征,减少特征维度。
- 多项式特征生成:使用
- 模型选择与训练:选择合适的估计器,如线性回归、决策树、随机森林等,并在处理后的数据上进行训练。
- 模型评估:使用交叉验证等方法评估模型的性能,如计算准确率、均方误差等指标。
- 数据加载:首先需要加载数据集。这可以使用
-
通用 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())
2114

被折叠的 条评论
为什么被折叠?



