Skip to main content

机器学习相关模板

本页面的演示基于diabetes数据集。

import pandas as pd
from sklearn.datasets import load_diabetes

data = load_diabetes()
df = pd.DataFrame(data.data, columns=data.feature_names)
df["target"] = data.target

数据集处理

去重、去空、填充空值

去重

df = df.drop_duplicates(subset=["COLUMN"])

去空

df = df.dropna(axis=0, how="any", subset=None)

axis 确定是删除包含缺失值的行还是列。0或'index':删除包含缺失值的行。1或'columns':删除包含缺失值的列。

how 'any':如果存在任何NA值,则删除该行或列。'all':如果所有值都是NA,则删除该行或列。

subset 列标签或标签的序列, 可选 另一个轴上需要关注的标签,举例,如果在去掉空行,那么这里需要填入一个列的列表。

填充空值

df = df.fillna(value=VALUE, method=None)

value 用于填补的值。

method 指定填补方法,ffill使用前一个有效值填补,bfill是使用下一个有效值填补。

基于插值的空值填补参见特征工程部分的代码。

划分训练集测试集

基于sklearn中已有的train_test_split函数。

from sklearn.model_selection import train_test_split

实际使用时

X_train, X_test, y_train, y_test = train_test_split(
df.drop("target", axis=1), df["target"], test_size=0.2, random_state=42
)

模型训练及评估

以随机森林回归为例

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error

训练及评估代码为

regr = RandomForestRegressor(n_estimators=100, random_state=42)
regr.fit(X_train, y_train)
y_pred = regr.predict(X_test)
mse = mean_squared_error(y_test, y_pred)

交叉验证

完整pipeline