趋近智
应用理论知识处理实际数据集是机器学习的基础。准备用于算法的数据集涉及理解其如何加载和组织。这个动手练习涵盖了机器学习工作流中一个常见的初始步骤:将原始数据转换为NumPy矩阵。
假设我们有一个用于预测房价的小数据集。数据包含房屋面积、卧室数量和最终售价。在典型的Python应用中,这些数据可能最初是列表的列表形式。
import numpy as np
# 每个内部列表代表一栋房屋:[房屋面积, 卧室数量, 价格]
raw_data = [
[1500, 3, 320000],
[2100, 4, 450000],
[1200, 2, 250000],
[1800, 3, 380000]
]
尽管这种格式易于阅读,但它并未针对机器学习模型所需的数学运算进行优化。为此,我们需要将其转换为NumPy数组,这是Python中数值数据的标准格式。
使用np.array()函数,从列表的列表创建NumPy矩阵(或更准确地说,是一个二维ndarray)非常直接。
# 将列表的列表转换为二维NumPy数组
house_data_matrix = np.array(raw_data)
print(house_data_matrix)
这将产生以下输出:
[[ 1500 3 320000]
[ 2100 4 450000]
[ 1200 2 250000]
[ 1800 3 380000]]
现在我们的数据已整理成结构化网格。每一行是一个观测值(一栋房屋),每一列代表一个特定属性。这就是几乎所有机器学习算法都预期的那种数据矩阵格式。
在监督学习中,我们区分特征(用于做出预测的输入)和目标(我们希望预测的值)。
我们可以使用NumPy强大的切片功能将house_data_matrix分离为X和y。
原始数据矩阵被分为特征矩阵
X和目标向量y。
以下是如何在代码中执行此划分:
# 为特征选择所有行 (:) 和直到索引 2(不包含)的列
X = house_data_matrix[:, :2]
# 为目标选择所有行 (:) 和仅最后一个列(索引 2)
y = house_data_matrix[:, 2]
print("特征矩阵 X:")
print(X)
print("\n目标向量 y:")
print(y)
输出确认了划分:
Feature Matrix X:
[[1500 3]
[2100 4]
[1200 2]
[1800 3]]
Target Vector y:
[320000 450000 250000 380000]
一种常规做法是检查矩阵和向量的shape。这有助于确认你的数据结构正确,并有助于预防后续步骤中的错误。
# 获取特征矩阵和目标向量的维度
print("X 的形状:", X.shape)
print("y 的形状:", y.shape)
输出将是:
Shape of X: (4, 2)
Shape of y: (4,)
这告诉我们:
X 有 4 行(观测值)和 2 列(特征)。y 是一个长度为 4 的向量,对应于 4 个观测值。你现在已成功将原始数据转换为机器学习所需的精确结构。特征矩阵X和目标向量y,分别对应于我们在线性回归中讨论的方程 Ax=b 中的矩阵A和向量b。你在前面章节中学到的所有矩阵和向量运算,现在可以直接应用于X和y来训练模型、识别模式或降低维度。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造