代码中的注释的重要性(一)

小编打算用两个章节,把本文的内容给大家梳理清楚。

我们先来看一段示例代码:

复制代码
import numpy as np  
from sklearn.model_selection import train_test_split  
from sklearn.linear_model import LinearRegression  
from sklearn.metrics import mean_squared_error  
  
np.random.seed(0)  
X = 2 * np.random.rand(100, 1)  
y = 4 + 3 * X + np.random.randn(100, 1)  
   
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
 
model = LinearRegression()  
model.fit(X_train, y_train)  

y_pred = model.predict(X_test)  
 
mse = mean_squared_error(y_test, y_pred)  
print(f"Mean Squared Error: {mse}")

假设此时你是一个之前从未接触过机器学习和 scikit-learn 库的新手,最近机器学习火热,你也想入门学习相关知识来拓展自己的技能宽度。

于是你在网上找到一段这样的开源代码和示例,但是这个示例只给了你这么一长串好像实现了某个功能的代码,但是 你并不知道这段代码为何要这么写以及它背后的逻辑。你只好复制这段代码到网上去搜索是否有相关的解答,但这些解答还不一定是正确的解释。

于是你在入门机器学习这里就碰了一个大"钉子",你就会觉得机器学习好像很难,代码复杂也没注释,理解不了它的逻辑也无法在后面学习中举一反三。慢慢的一开始你想在机器学习领域好好学习一番的激情就逐渐退却,甚至后面就不想再接触了。

那么如果一开始你在网上搜到的是这一段示例代码:

复制代码
import numpy as np  
from sklearn.model_selection import train_test_split  
from sklearn.linear_model import LinearRegression  
from sklearn.metrics import mean_squared_error  
  
# 1.数据生成阶段  
# 生成模拟数据  
# 设置随机种子以便结果可复现  
np.random.seed(0)  
# 创建一个100x1的numpy数组,其中元素是从0到1之间的随机浮点数  
X = 2 * np.random.rand(100, 1)   # 这里乘以2是为了让X的值域更宽一些  

# 创建目标变量y,它基于X的线性关系(斜率为3,截距为4)和一些随机噪声  
y = 4 + 3 * X + np.random.randn(100, 1)  
  
# 2.数据预处理阶段  
# 划分训练集和测试集  
# 使用train_test_split函数将数据集划分为训练集和测试集,其中80%的数据作为训练集,20%的数据作为测试集,random_state参数确保每次划分结果一致  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  
  
# 3.模型训练阶段  
# 创建并训练模型  
# 使用LinearRegression类创建一个https://zhida.zhihu.com/search?content_id=245098317&content_type=Article&match_order=1&q=%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92&zhida_source=entity模型实例  
model = LinearRegression()  
# 使用训练数据拟合模型  
# fit方法会计算模型参数(斜率和截距)以最小化训练数据上的https://zhida.zhihu.com/search?content_id=245098317&content_type=Article&match_order=1&q=%E5%9D%87%E6%96%B9%E8%AF%AF%E5%B7%AE&zhida_source=entity  
model.fit(X_train, y_train)  
  
# 4.模型评估阶段  
# 预测测试集  
# 使用训练好的模型对测试集进行预测  
# predict方法会返回测试集上每个样本的预测值  
y_pred = model.predict(X_test)  
  
# 计算均方误差  
# 使用mean_squared_error函数计算预测值与实际值之间的均方误差  
# 评估模型在测试集上的表现  
mse = mean_squared_error(y_test, y_pred)  
  
# 5.输出结果  
print(f"Mean Squared Error: {mse}")

**这段示例代码就很清晰明了的对每一行代码添加了相关注释并解释了这样写代码的目的。**你可以很清楚的明白这段示例是利用 Python 和 scikit-learn 库实现了一个简单的线性回归模型并对模型的拟合效果进行了评估。

而且这段示例还给你列出了实现一个简单的线性回归模型所需要的基本步骤:

  1. 数据生成阶段

  2. 数据预处理阶段

  3. 模型训练阶段

  4. 模型评估阶段(这里采用的评估函数是均方误差MSE,它是回归模型常用一个基础评估函数)

  5. 输出结果

即便你是一个初学机器学习的新手,你也不会因为看不懂代码而感到懵逼,反而因为每行都有的注释会觉得这样的示例 对新手很友好!继而你会更加愿意对机器学习深入学习下去。

你可能后面会更想知道:如果后面我添加新的特征进去或者改变数据生成的方式,亦或是改用其他模型来进行训练,效果又会如何?是不是在这样有注释的示例代码影响下,不会打击你作为初学者的学习兴趣。

相关推荐
不懂的浪漫1 小时前
AI时代:大模型是水,普通开发者的船是什么?
人工智能
一拳一个娘娘腔1 小时前
告别Demo陷阱:从金融风控到智能制造,拆解AI大规模落地的架构设计与价值闭环
人工智能·制造
lilihuigz2 小时前
WordPress 7.0 AI基础设施详解:能力API、AI客户端与MCP适配器如何重塑插件生态
人工智能·wordpress·独立站
测试员周周2 小时前
【AI测试功能3】AI功能测试的三层架构:单元测试 → 集成测试 → E2E测试——AI系统测试金字塔实战指南
开发语言·人工智能·python·功能测试·架构·单元测试·集成测试
-嘟囔着拯救世界-2 小时前
手把手教你低成本搭建 GPT-image-2 工作流,再也不愁没有好配图了!
人工智能·gpt·ai·ai作画·aigc·gpt-image-2
_Evan_Yao2 小时前
一文搞懂:AI编程辅助工具——从GitHub Copilot到通义灵码,不同人群如何驾驭AI编程助手?
人工智能·后端·copilot·ai编程
爱写代码的汤二狗2 小时前
同样用 AI,有人 18 点下班,有人 21 点加班——差在 1 个动作
人工智能·经验分享·ai·claude