当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Python cuml.SGD用法及代码示例

用法:

class cuml.SGD(*, loss='squared_loss', penalty='none', alpha=0.0001, l1_ratio=0.15, fit_intercept=True, epochs=1000, tol=0.001, shuffle=True, learning_rate='constant', eta0=0.001, power_t=0.5, batch_size=32, n_iter_no_change=5, handle=None, output_type=None, verbose=False)

随机梯度下降是一种非常常见的机器学习算法,通过梯度步骤优化一些成本函数。这使得 SGD 对于很难甚至不可能找到确切解决方案的大型问题非常有吸引力。

cuML 的 SGD 算法接受 numpy 矩阵或 cuDF DataFrame 作为输入数据集。 SGD 算法目前适用于线性回归、岭回归和 SVM 模型。

参数

loss‘hinge’, ‘log’、‘squared_loss’(默认 = ‘squared_loss’)

‘hinge’ 使用线性 SVM ‘log’ 使用逻辑回归 ‘squared_loss’ 使用线性回归

penalty: ‘none’, ‘l1’, ‘l2’, ‘elasticnet’ (default = ‘none’)

‘none’ 不执行任何正则化 ‘l1’ 执行 L1 范数(Lasso),最小化系数的绝对值之和 ‘l2’ 执行 L2 范数(Ridge),最小化系数的平方和 ‘elasticnet’ 执行弹性网络正则化,它是 L1 和 L2 范数的加权平均

alpha: float (default = 0.0001)

决定正则化程度的常数值

fit_intercept布尔值(默认 = True)

如果为 True,模型会尝试校正 y 的全局平均值。如果为 False,则模型预计您已将数据居中。

epochsint(默认值 = 1000)

模型在训练期间应该遍历整个数据集的次数(默认 = 1000)

tol浮点数(默认 = 1e-3)

如果 current_loss > previous_loss - tol,训练过程将停止

shuffle布尔值(默认 = True)

True,在每个 epoch 之后打乱训练数据 False,在每个 epoch 之后不打乱训练数据

eta0浮点数(默认 = 0.001)

初始学习率

power_t浮点数(默认 = 0.5)

用于计算 invscaling 学习率的 index

learning_rate‘optimal’, ‘constant’, ‘invscaling’、‘adaptive’(默认 = ‘constant’)

下一个版本中支持的最佳选项常量保持学习率常量如果训练损失或验证准确度在 n_iter_no_change 个时期内没有提高,则自适应地改变学习率。老学习率一般除以5

n_iter_no_changeint(默认值 = 5)

在模型没有任何改进的情况下训练的 epoch 数

handlecuml.Handle

指定 cuml.handle 保存用于此模型中计算的内部 CUDA 状态。最重要的是,这指定了将用于模型计算的 CUDA 流,因此用户可以通过在多个流中创建句柄在不同的流中同时运行不同的模型。如果为 None,则创建一个新的。

output_type{‘input’, ‘cudf’, ‘cupy’, ‘numpy’, ‘numba’},默认=无

用于控制估计器的结果和属性的输出类型的变量。如果为 None,它将继承在模块级别设置的输出类型 cuml.global_settings.output_type 。有关详细信息,请参阅输出数据类型配置。

verboseint 或布尔值,默认=False

设置日志记录级别。它必须是 cuml.common.logger.level_* 之一。有关详细信息,请参阅详细级别。

例子

import numpy as np
import cudf
from cuml.solvers import SGD as cumlSGD
X = cudf.DataFrame()
X['col1'] = np.array([1,1,2,2], dtype=np.float32)
X['col2'] = np.array([1,2,2,3], dtype=np.float32)
y = cudf.Series(np.array([1, 1, 2, 2], dtype=np.float32))
pred_data = cudf.DataFrame()
pred_data['col1'] = np.asarray([3, 2], dtype=np.float32)
pred_data['col2'] = np.asarray([5, 5], dtype=np.float32)
cu_sgd = cumlSGD(learning_rate='constant', eta0=0.005, epochs=2000,
                fit_intercept=True, batch_size=2,
                tol=0.0, penalty='none', loss='squared_loss')
cu_sgd.fit(X, y)
cu_pred = cu_sgd.predict(pred_data).to_numpy()
print(" cuML intercept : ", cu_sgd.intercept_)
print(" cuML coef : ", cu_sgd.coef_)
print("cuML predictions : ", cu_pred)

输出:

cuML intercept :  0.0041877031326293945
cuML coef :  0      0.984174
             1      0.009776
            dtype: float32
cuML predictions :  [3.005588  2.0214138]

属性

classes_
coef_

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cuml.SGD。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。