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

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

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

复制代码
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. 输出结果

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

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

相关推荐
意图共鸣12 分钟前
意图共鸣科技《认知智能白皮书》——感知与执行分离:认知架构(CA)如何重塑大模型底层结构
人工智能·架构
等一个人的@14 分钟前
让数据自己开口:数睿通智库新增智能问数模块
人工智能·自然语言处理
ZGi.ai14 分钟前
人工审查节点:让自动化工作流多一步人工把关
运维·人工智能·自动化·人机协同·智能体工作流·人工审查
王莎莎-MinerU1 小时前
MinerU 深度技术解析:从架构原理到生产部署的全面指南
css·人工智能·自然语言处理·架构·ocr·个人开发
盘古信息IMS1 小时前
盘古信息IMS V6 8.0重磅发布:以薪火AI数智平台点燃离散制造数智化引擎
大数据·人工智能·制造
weilaieqi11 小时前
从音响制造到AI家庭娱乐生态:不见不散AI智能K歌音响亮相第二十届深圳国际金融博览会
人工智能·制造·娱乐
企服AI产品测评局1 小时前
Agent适配信创环境实测:企业级自动化如何实现国产操作系统与数据库全兼容?
运维·数据库·人工智能·ai·chatgpt·自动化
Jiude1 小时前
AI 写代码太快之后,团队协作反而更难了
人工智能·架构·github
12点一刻2 小时前
Superpowers — AI 驱动的软件工程方法论框架
人工智能·软件工程
EasyCVR2 小时前
国标GB28181视频监控平台EasyCVR行业解决方案深度解读——雪亮工程、智慧城市与智慧交通
人工智能·音视频·智慧城市