📜  Scikit学习-建模过程(1)

📅  最后修改于: 2023-12-03 15:19:59.731000             🧑  作者: Mango

Scikit学习-建模过程

Scikit-learn是一个Python机器学习库,它在建模过程中提供了丰富的工具和算法。本文将介绍Scikit-learn建模过程中的关键步骤。

数据准备

数据准备是建模过程中的第一步。在这一步中,需要将数据集分为训练集和测试集,并进行数据清洗和预处理。

数据集分割

使用Scikit-learn中的train_test_split函数可以将数据集分成训练集和测试集。该函数接受数据集和测试数据所占的比例,并返回分割好的数据。

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

该代码片段将数据集分成了训练集和测试集,其中测试集占总数据集的20%。

数据清洗和预处理

在构建模型时,数据的质量非常重要。如果数据中存在缺失值或异常值,可能会对模型的性能产生负面影响。使用Scikit-learn提供的预处理工具可以对数据进行清洗和预处理。

from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler

# 处理缺失值
imputer = SimpleImputer(strategy="median")
imputer.fit(X_train)
X_train = imputer.transform(X_train)
X_test = imputer.transform(X_test)

# 特征缩放
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)

该代码片段使用SimpleImputer处理缺失值并使用StandardScaler进行特征缩放。

模型选择和训练

在数据准备阶段完成后,下一步是选择合适的模型进行训练。Scikit-learn中提供了众多算法和模型,可以根据问题的复杂程度选择适当的模型。

from sklearn.linear_model import LinearRegression

lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)

该代码片段使用线性回归算法构建并训练了一个模型。

模型评估

在训练模型后,需要对其进行评估以了解其性能。Scikit-learn提供了许多评估指标和工具,可以对模型进行评估。

from sklearn.metrics import mean_squared_error

y_pred = lin_reg.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)

该代码片段使用均方误差(MSE)和均方根误差(RMSE)评估了模型的性能。

调整模型

在数据准备、模型选择和评估之后,可能需要调整模型以提高其表现。使用Scikit-learn提供的工具可以调整模型并找到最佳超参数。

from sklearn.model_selection import GridSearchCV

param_grid = [
    {'n_estimators': [3, 10, 30], 'max_features': [2, 4, 6, 8]},
    {'bootstrap': [False], 'n_estimators': [3, 10], 'max_features': [2, 3, 4]},
]

forest_reg = RandomForestRegressor()

grid_search = GridSearchCV(forest_reg, param_grid, cv=5,
                           scoring='neg_mean_squared_error',
                           return_train_score=True)

grid_search.fit(X_train, y_train)

该代码片段使用网格搜索调整了随机森林模型的超参数。

保存和使用模型

在通过数据准备、模型选择、训练和评估优化模型后,可以将模型保存下来以供部署和使用。

import joblib

joblib.dump(lin_reg, "lin_reg_model.pkl")

该代码片段将线性回归模型保存到了Pickle文件中。

可以使用以下代码加载模型并使用它进行预测。

lin_reg_loaded = joblib.load("lin_reg_model.pkl")
y_pred = lin_reg_loaded.predict(X_test)