代码讲解 from sklearn.preprocessing import OneHotEncoder from sklearn.compose import make_column_transformer column_trans = make_column_transformer( (OneHotEncoder(),['Team1', 'Team2']),remainder='passthrough') pipe_X = pipe_DF.drop('Team1_Result',axis=1) pipe_y = pipe_DF['Team1_Result'] from sklearn.pipeline import make_pipeline pipe_League = make_pipeline(column_trans,StandardScaler(with_mean=False),XGBClassifier(use_label_encoder=False, gamma= 0.01, learning_rate= 0.01, n_estimators= 300, max_depth= 4)) pipe_League.fit(pipe_X,pipe_y) knock_df = pipe_DF[pipe_DF['Team1_Result'] != 2] pipe_knock_df = knock_df knock_df = pd.get_dummies(knock_df) X = knock_df.drop('Team1_Result',axis=1) y = knock_df['Team1_Result'] X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42) X_hold_test, X_test, y_hold_test, y_test = train_test_split(X_val, y_val, test_size=0.5, random_state=42)
时间: 2023-07-15 13:11:22 浏览: 426
这段代码的目的是进行数据预处理和建模,其中包括以下步骤:
1. 导入必要的库:`from sklearn.preprocessing import OneHotEncoder` 和 `from sklearn.compose import make_column_transformer`。
2. 定义列变换器 `column_trans`,使用 `OneHotEncoder()` 对 `['Team1', 'Team2']` 这两列进行独热编码,同时保留其他列(`remainder='passthrough'`)。
3. 将数据分为特征和目标变量,分别存储在 `pipe_X` 和 `pipe_y` 中。
4. 导入管道模型构建库 `from sklearn.pipeline import make_pipeline`。
5. 定义管道模型 `pipe_League`,它包括列变换器 `column_trans`、标准化处理 `StandardScaler(with_mean=False)` 和 XGBoost分类器 `XGBClassifier(use_label_encoder=False, gamma= 0.01, learning_rate= 0.01, n_estimators= 300, max_depth= 4)`。
6. 使用 `fit()` 方法拟合管道模型,将 `pipe_X` 和 `pipe_y` 作为输入数据。
7. 选择需要处理的数据,在这里是将 `pipe_DF` 中 `Team1_Result` 列中的值为 2 的行剔除。
8. 使用 `pd.get_dummies()` 将分类变量进行独热编码。
9. 将特征和目标变量分别存储在 `X` 和 `y` 中。
10. 使用 `train_test_split()` 将数据划分为训练集和验证集(`X_train, X_val, y_train, y_val`)以及保留测试集(`X_hold_test, X_test, y_hold_test, y_test`)。其中,测试集占据验证集的一半,`random_state` 参数用于保证每次运行划分结果相同。
阅读全文