《Numpy 简易速速上手小册》第9章:Numpy 在机器学习中的应用(2024 最新版)

简介: 《Numpy 简易速速上手小册》第9章:Numpy 在机器学习中的应用(2024 最新版)

8090eecd4fe3d2bfb5bb236e9633ba2.png

9.1 数据预处理

9.1.1 基础知识

在机器学习中,数据预处理是一个至关重要的步骤。良好的数据预处理可以显著提升模型的性能和准确性。Numpy 在这方面提供了强大的支持,包括但不限于:

  • 标准化(Normalization):调整数据使其具有零均值和单位方差,有助于模型学习和收敛。
  • 归一化(Min-Max Scaling):将数据缩放到给定的最小值和最大值(通常是 0 到 1)之间。
  • 处理缺失值:替换或删除数据集中的缺失值。
  • 数据转换:例如将非数值数据转换为数值数据。

9.1.2 完整案例:数据标准化

假设你有一组机器学习的特征数据,需要进行标准化处理。

import numpy as np
# 示例数据
features = np.array([[1.2, 3.2],
                     [2.3, 2.1],
                     [4.5, 6.7],
                     [5.7, 2.4]])
# 计算均值和标准差
mean = np.mean(features, axis=0)
std = np.std(features, axis=0)
# 标准化数据
standardized_features = (features - mean) / std
print("Standardized Features:\n", standardized_features)

这个案例演示了如何使用 Numpy 计算特征数据的均值和标准差,并进行标准化。

9.1.3 拓展案例 1:缺失值处理

处理包含缺失值的数据集。

# 示例数据,其中 np.nan 表示缺失值
data_with_nan = np.array([[3, np.nan, 5],
                          [1, 2, np.nan],
                          [np.nan, 4, 6]])
# 计算每列的均值,忽略缺失值
col_mean = np.nanmean(data_with_nan, axis=0)
# 用每列的均值替换缺失值
inds = np.where(np.isnan(data_with_nan))
data_with_nan[inds] = np.take(col_mean, inds[1])
print("Data after replacing NaNs:\n", data_with_nan)

在这个案例中,我们处理了包含缺失值的数据,使用每列的均值来替换这些缺失值。

9.1.4 拓展案例 2:非数值数据的转换

将分类数据(如字符串)转换为数值,以便进行机器学习处理。

# 示例数据,包含分类特征
categories = np.array(['red', 'blue', 'red', 'green'])
# 创建一个映射,将分类转换为数值
unique_categories = np.unique(categories)
category_mapping = {category: idx for idx, category in enumerate(unique_categories)}
# 将分类数据转换为数值
numeric_categories = np.vectorize(category_mapping.get)(categories)
print("Numeric Categories:", numeric_categories)

在这个案例中,我们将字符串分类数据(颜色名称)转换为了数值形式,这种转换对于大多数机器学习模型是必要的。

这些数据预处理的技巧和方法是机器学习项目成功的关键。通过有效的预处理,你可以确保模型获得准确和有意义的输入,从而提高整体的性能和准确性。


9.2 特征提取和处理

9.2.1 基础知识

特征提取和处理在机器学习中的重要性不言而喻。它们涉及从原始数据中提取有用信息并将其转换为模型可以理解的格式。Numpy 在这方面提供了强大的支持,可以用于:

  • 特征提取:从原始数据集中提取有用的特征,如图像、文本或声音数据的处理。
  • 特征转换:将特征转换为更合适的格式,比如归一化、标准化、独热编码(One-Hot Encoding)等。
  • 降维:使用如主成分分析(PCA)等方法减少特征数量,以简化模型并减少计算成本。

9.2.2 完整案例:特征归一化

假设你有一组数值型特征,需要进行归一化处理,以便用于机器学习模型。

import numpy as np
# 示例特征数据
features = np.array([[100, 0.001],
                     [8, 0.05],
                     [50, 0.005],
                     [88, 0.07]])
# 归一化特征
min_vals = features.min(axis=0)
max_vals = features.max(axis=0)
normalized_features = (features - min_vals) / (max_vals - min_vals)
print("Normalized Features:\n", normalized_features)

这个案例展示了如何将特征数据归一化到 0 和 1 之间。

9.2.3 拓展案例 1:特征降维

在处理具有许多特征的复杂数据集时,降维可以提高效率并减少过拟合。

from sklearn.decomposition import PCA
# 创建一个具有多个特征的数据集
data = np.random.rand(100, 10)
# 应用 PCA 进行降维
pca = PCA(n_components=2)
reduced_data = pca.fit_transform(data)
print("Reduced Data Shape:", reduced_data.shape)

在这个案例中,我们使用 PCA 将一个 10 维的数据集降维到 2 维。

9.2.4 拓展案例 2:独热编码

对于分类数据,独热编码是将类别变量转换为机器学习模型可以理解的形式的一种常用方法。

# 示例分类数据
categories = np.array(['apple', 'banana', 'apple', 'orange'])
# 将分类数据转换为独热编码
unique_categories = np.unique(categories)
one_hot_encoded = np.zeros((categories.size, unique_categories.size))
for i, category in enumerate(categories):
    idx = np.where(unique_categories == category)
    one_hot_encoded[i, idx] = 1
print("One-Hot Encoded Data:\n", one_hot_encoded)

在这个案例中,我们将字符串类别数据转换为了独热编码格式,以便用于机器学习模型。

特征提取和处理是构建有效机器学习模型的关键步骤。通过适当的特征处理,你可以确保模型接收到的输入是最优化和最有信息量的,从而提高模型的性能和准确性。


9.3 与机器学习库的集成

9.3.1 基础知识

机器学习库,如 Scikit-learn、TensorFlow 和 PyTorch,为构建复杂的机器学习模型提供了丰富的工具和接口。这些库通常与 Numpy 紧密集成,使得 Numpy 数组成为在这些平台上进行数据操作和模型训练的首选格式。

  • 数据兼容性:大多数机器学习库都可以直接处理 Numpy 数组。
  • 性能优化:Numpy 数组经过优化,能够高效地处理大型数据集。
  • 易用性:Numpy 的广泛应用和统一接口使得与各种机器学习库的集成变得容易。

9.3.2 完整案例:Scikit-learn 集成

使用 Numpy 数据与 Scikit-learn 库结合进行机器学习任务。

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np
# 创建数据集
X = np.random.rand(100, 5)  # 特征数据
y = np.random.rand(100)    # 目标变量
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 创建并训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
print("Predictions:", predictions)

在这个案例中,我们使用 Numpy 创建了数据集,然后使用 Scikit-learn 的线性回归模型进行训练和预测。

9.3.3 拓展案例 1:TensorFlow 集成

将 Numpy 数据与 TensorFlow 结合,用于构建和训练深度学习模型。

import tensorflow as tf
import numpy as np
# 创建数据集
X = np.random.rand(100, 5).astype(np.float32)
y = np.random.rand(100, 1).astype(np.float32)
# 构建简单的神经网络模型
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(10, activation='relu'),
    tf.keras.layers.Dense(1)
])
# 编译模型
model.compile(optimizer='adam', loss='mean_squared_error')
# 训练模型
model.fit(X, y, epochs=10)

在这个案例中,我们创建了一个简单的神经网络,并使用由 Numpy 数组组成的数据进行训练。

9.3.4 拓展案例 2:PyTorch 集成

使用 PyTorch 和 Numpy 结合来进行机器学习任务。

import torch
import numpy as np
# 创建 Numpy 数据
X_np = np.random.rand(100, 5)
y_np = np.random.rand(100, 1)
# 将 Numpy 数据转换为 PyTorch 张量
X_torch = torch.from_numpy(X_np.astype(np.float32))
y_torch = torch.from_numpy(y_np.astype(np.float32))
# 构建简单的神经网络
model = torch.nn.Sequential(
    torch.nn.Linear(5, 10),
    torch.nn.ReLU(),
    torch.nn.Linear(10, 1)
)
# 定义损失函数和优化器
criterion = torch.nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
# 训练模型
for epoch in range(10):
    # 前向传播
    y_pred = model(X_torch)
    # 计算损失
    loss = criterion(y_pred, y_torch)
    # 反向传播和优化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    print(f'Epoch {epoch}, Loss: {loss.item()}')

在这个案例中,我们展示了如何将 Numpy 数组转换为 PyTorch 张量,并用它们来训练一个简单的神经网络。

这些案例展示了 Numpy 如何与流行的机器学习库无缝集成,形成一个强大的工具集,用于解决各种机器学习问题。从传统的机器学习到最前沿的深度学习,Numpy 都发挥着至关重要的作用。

目录
相关文章
|
7天前
|
机器学习/深度学习 人工智能 物联网
通义灵码在人工智能与机器学习领域的应用
通义灵码不仅在物联网领域表现出色,还在人工智能、机器学习、金融、医疗和教育等领域展现出广泛应用前景。本文探讨了其在这些领域的具体应用,如模型训练、风险评估、医疗影像诊断等,并总结了其提高开发效率、降低门槛、促进合作和推动创新的优势。
通义灵码在人工智能与机器学习领域的应用
|
7天前
|
机器学习/深度学习 传感器 自动驾驶
探索机器学习在图像识别中的创新应用
本文深入分析了机器学习技术在图像识别领域的最新进展,探讨了深度学习算法如何推动图像处理技术的突破。通过具体案例分析,揭示了机器学习模型在提高图像识别准确率、效率及应用场景拓展方面的潜力。文章旨在为读者提供一个全面的视角,了解当前机器学习在图像识别领域的创新应用和未来发展趋势。
|
1月前
|
机器学习/深度学习 数据采集 算法
深入了解机器学习:从入门到应用
【10月更文挑战第6天】深入了解机器学习:从入门到应用
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
思通数科AI平台在尽职调查中的技术解析与应用
思通数科AI多模态能力平台结合OCR、NLP和深度学习技术,为IPO尽职调查、融资等重要交易环节提供智能化解决方案。平台自动识别、提取并分类海量文档,实现高效数据核验与合规性检查,显著提升审查速度和精准度,同时保障敏感信息管理和数据安全。
72 11
|
17天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
43 4
|
18天前
|
机器学习/深度学习 TensorFlow API
机器学习实战:TensorFlow在图像识别中的应用探索
【10月更文挑战第28天】随着深度学习技术的发展,图像识别取得了显著进步。TensorFlow作为Google开源的机器学习框架,凭借其强大的功能和灵活的API,在图像识别任务中广泛应用。本文通过实战案例,探讨TensorFlow在图像识别中的优势与挑战,展示如何使用TensorFlow构建和训练卷积神经网络(CNN),并评估模型的性能。尽管面临学习曲线和资源消耗等挑战,TensorFlow仍展现出广阔的应用前景。
46 5
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
因果推断方法为特征工程提供了一个更深层次的框架,使我们能够区分真正的因果关系和简单的统计相关性。这种方法在需要理解干预效果的领域尤为重要,如经济学、医学和市场营销。
61 1
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
|
1月前
|
机器学习/深度学习 自然语言处理 JavaScript
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)是量化概率分布差异的关键概念。本文深入探讨了KL散度及其相关概念,包括Jensen-Shannon散度和Renyi散度。KL散度用于衡量两个概率分布之间的差异,而Jensen-Shannon散度则提供了一种对称的度量方式。Renyi散度通过可调参数α,提供了更灵活的散度度量。这些概念不仅在理论研究中至关重要,在实际应用中也广泛用于数据压缩、变分自编码器、强化学习等领域。通过分析电子商务中的数据漂移实例,展示了这些散度指标在捕捉数据分布变化方面的独特优势,为企业提供了数据驱动的决策支持。
70 2
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
|
1月前
|
机器学习/深度学习 数据采集 自然语言处理
【机器学习】大模型驱动下的医疗诊断应用
摘要: 随着科技的不断发展,机器学习在医疗领域的应用日益广泛。特别是在大模型的驱动下,机器学习为医疗诊断带来了革命性的变化。本文详细探讨了机器学习在医疗诊断中的应用,包括疾病预测、图像识别、基因分析等方面,并结合实际案例进行分析。同时,还展示了部分相关的代码示例,以更好地理解其工作原理。
50 3
【机器学习】大模型驱动下的医疗诊断应用
|
24天前
|
机器学习/深度学习 算法 数据挖掘
NumPy有哪些应用场景
【10月更文挑战第22天】NumPy有哪些应用场景
68 2

热门文章

最新文章