小编打算用两个章节,把本文的内容给大家梳理清楚。
我们先来看一段示例代码:
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 库实现了一个简单的线性回归模型并对模型的拟合效果进行了评估。
而且这段示例还给你列出了实现一个简单的线性回归模型所需要的基本步骤:
-
数据生成阶段
-
数据预处理阶段
-
模型训练阶段
-
模型评估阶段(这里采用的评估函数是均方误差MSE,它是回归模型常用一个基础评估函数)
-
输出结果
即便你是一个初学机器学习的新手,你也不会因为看不懂代码而感到懵逼,反而因为每行都有的注释会觉得这样的示例 对新手很友好!继而你会更加愿意对机器学习深入学习下去。
你可能后面会更想知道:如果后面我添加新的特征进去或者改变数据生成的方式,亦或是改用其他模型来进行训练,效果又会如何?是不是在这样有注释的示例代码影响下,不会打击你作为初学者的学习兴趣。