引言:迈出机器学习的第一步

欢迎踏上机器学习之旅!对于初学者而言,构建第一个模型既令人兴奋又充满挑战。本文将带领你从零开始,使用Python构建你的第一个机器学习模型。我们将使用一个简单的线性回归模型来预测波士顿房价,这是一个经典的入门案例。通过这个实践项目,你将了解机器学习的基本流程,包括数据加载、探索、预处理、模型训练和评估。

环境搭建与必要工具

在开始之前,你需要确保已经安装了必要的Python库。我们将使用scikit-learn、pandas、numpy和matplotlib。你可以使用pip命令进行安装:pip install scikit-learn pandas numpy matplotlib。这些库将帮助我们处理数据、构建模型和可视化结果。

为什么选择线性回归?

线性回归是机器学习中最简单、最直观的算法之一。它试图通过学习特征与目标变量之间的线性关系来进行预测。对于初学者来说,这是一个完美的起点,因为它涉及机器学习的所有核心概念,但又不会过于复杂。

数据加载与探索

我们将使用scikit-learn内置的波士顿房价数据集。首先,让我们加载数据并初步了解其结构。

代码实现:加载数据集

from sklearn.datasets import load_bostonimport pandas as pdboston = load_boston()df = pd.DataFrame(boston.data, columns=boston.feature_names)df['PRICE'] = boston.targetprint(df.head())print(df.describe())

理解数据特征

这个数据集包含506个样本和13个特征,如犯罪率、房间数量、教师比例等。目标变量PRICE表示房屋的中位数价格。使用describe()方法可以查看数据的统计摘要,包括均值、标准差和百分位数。

数据预处理与可视化

在训练模型之前,我们需要确保数据是干净的,并进行必要的预处理。数据可视化可以帮助我们理解特征与目标之间的关系。

检查缺失值

print(df.isnull().sum()) # 检查是否有缺失值

数据可视化

import matplotlib.pyplot as pltimport seaborn as snsplt.figure(figsize=(12, 8))sns.heatmap(df.corr(), annot=True, cmap='coolwarm')plt.title('特征相关性热图')plt.show()

特征选择

基于相关性分析,我们可以选择与房价最相关的特征,如'RM'(房间数量)和'LSTAT'(低收入人口比例)。为简化第一个模型,我们将使用这两个特征。

构建线性回归模型

现在,我们将数据分为训练集和测试集,然后创建并训练线性回归模型。

划分数据集

from sklearn.model_selection import train_test_splitX = df[['RM', 'LSTAT']] # 选择特征y = df['PRICE'] # 目标变量X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

模型训练

from sklearn.linear_model import LinearRegressionmodel = LinearRegression()model.fit(X_train, y_train)

理解模型参数

训练完成后,模型学会了每个特征的系数(权重)和截距。这些参数表示了特征对房价的影响程度。print(系数:, model.coef_); print(截距:, model.intercept_)

模型评估与预测

模型训练完成后,我们需要评估其性能,并使用它进行预测。

在测试集上预测

y_pred = model.predict(X_test)

评估指标

from sklearn.metrics import mean_squared_error, r2_scoremse = mean_squared_error(y_test, y_pred)r2 = r2_score(y_test, y_pred)print(f均方误差(MSE): {mse:.2f})print(f决定系数(R2): {r2:.2f})

结果可视化

plt.scatter(y_test, y_pred)plt.xlabel(实际价格)plt.ylabel(预测价格)plt.title(实际价格 vs 预测价格)plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'k--', lw=2)plt.show()

总结与后续步骤

恭喜!你已经成功构建了第一个机器学习模型。这个简单的线性回归模型为你奠定了坚实的基础。回顾整个过程,你学会了数据加载、探索、预处理、模型训练和评估的基本步骤。

如何进一步提高?

要提升模型性能,你可以尝试使用所有特征而不是仅两个,或者尝试其他算法如决策树、随机森林。此外,深入的特征工程和超参数调优也是提升模型性能的关键步骤。机器学习是一个不断学习和实践的过程,继续保持探索的热情!

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐