Python 机器学习实践:用 Scikit-Learn 实现预测模型 Python是当今最流行的编程语言之一,同时也是机器学习领域内最受欢迎的编程语言之一。Python提供了很多机器学习的库和框架,其中Scikit-Learn就是一个非常好的选择。本文将介绍如何使用Scikit-Learn实现一个预测模型。 Scikit-Learn是一个开源的机器学习库,它提供了各种各样的算法和工具来处理数据挖掘和机器学习任务。Scikit-Learn支持多种模型,包括分类、回归和聚类。Scikit-Learn还提供了一些数据预处理和特征工程的工具,包括缩放、归一化、特征选择和降维等。 对于本篇文章的实践,我们将使用Scikit-Learn库中的线性回归模型,通过一组数据来预测一个目标值。因为线性回归是机器学习领域中最基础的算法之一,所以对于初学者来说,这是一个很好的起点。 首先,我们需要准备好一组数据。在这个例子中,我们将使用一个来自Scikit-Learn库中的自带数据集:波士顿房屋价格数据集。这个数据集包含了506个样本,每个样本有13个特征。我们的目标是根据这13个特征预测房价。 接下来,我们需要将数据集分为训练集和测试集,以便我们可以在测试集上评估模型的性能。在这个例子中,我们将把80%的数据用于训练,20%的数据用于测试: ``` python from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split boston = load_boston() X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42) ``` 接下来,我们需要创建一个线性回归模型并用训练数据进行拟合。在Scikit-Learn中,我们可以使用`LinearRegression`模型来实现: ``` python from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train) ``` 现在我们已经训练好了一个简单的线性回归模型,接下来我们需要评估模型的性能。我们可以使用模型对测试集进行预测,并根据预测结果和真实结果计算出模型的均方误差(MSE)和决定系数(R2): ``` python from sklearn.metrics import mean_squared_error, r2_score y_pred = model.predict(X_test) mse = mean_squared_error(y_test, y_pred) r2 = r2_score(y_test, y_pred) print("MSE: ", mse) print("R2: ", r2) ``` 输出结果如下所示: ``` MSE: 24.291119474973616 R2: 0.6628996975186953 ``` 结果显示,我们的模型对数据的拟合效果并不算太差,但肯定还有优化的空间。我们可以使用Scikit-Learn提供的一些特征工程工具来进一步提高模型的性能。例如,我们可以使用`PolynomialFeatures`将特征转换为多项式特征: ``` python from sklearn.preprocessing import PolynomialFeatures poly_features = PolynomialFeatures(degree=2, include_bias=False) X_train_poly = poly_features.fit_transform(X_train) X_test_poly = poly_features.transform(X_test) model = LinearRegression() model.fit(X_train_poly, y_train) y_pred = model.predict(X_test_poly) mse = mean_squared_error(y_test, y_pred) r2 = r2_score(y_test, y_pred) print("MSE: ", mse) print("R2: ", r2) ``` 我们使用`PolynomialFeatures`将特征转换为二次多项式特征,然后重新训练模型并对测试集进行预测。这次,我们得到了更好的结果: ``` MSE: 15.187580209415438 R2: 0.7922960341232161 ``` 通过上面的操作,我们已经成功地用Scikit-Learn实现了一个预测模型并对其进行了评估。这个过程给我们提供了一个很好的机会来了解如何使用Scikit-Learn来处理数据,并利用特征工程来提高模型的性能。 总结: 本文介绍了如何使用Scikit-Learn库来实现预测模型,包括数据预处理、模型训练和评估等方面。虽然这只是一个简单的例子,但它涵盖了机器学习中最基础的算法之一,为我们提供了一个很好的学习机会。Scikit-Learn是一个功能强大的工具箱,它包含了大量的机器学习算法和工具,可以帮助我们有效地处理数据、构建模型并对其进行评估。