SparseCoder#
- class sklearn.decomposition.SparseCoder(dictionary, *, transform_algorithm='omp', transform_n_nonzero_coefs=None, transform_alpha=None, split_sign=False, n_jobs=None, positive_code=False, transform_max_iter=1000)[source]#
稀疏编码。
针对固定、预先计算的字典,寻找数据的稀疏表示。
结果中的每一行都是稀疏编码问题的解。目标是找到一个稀疏数组
code,使得X ~= code * dictionary
在用户指南中了解更多信息。
- 参数:
- dictionary形状为 (n_components, n_features) 的 ndarray
用于稀疏编码的字典原子。假设每行都已归一化为单位范数。
- transform_algorithm{‘lasso_lars’, ‘lasso_cd’, ‘lars’, ‘omp’, ‘threshold’}, default=’omp’
用于转换数据的算法
'lars': 使用最小角回归方法(linear_model.lars_path);'lasso_lars': 使用 Lars 计算 Lasso 解;'lasso_cd': 使用坐标下降法计算 Lasso 解 (linear_model.Lasso)。如果估计的组件是稀疏的,'lasso_lars'会更快;'omp': 使用正交匹配追踪来估计稀疏解;'threshold': 将投影dictionary * X'中小于 alpha 的所有系数压缩为零。
- transform_n_nonzero_coefsint, default=None
解中每列要定位的非零系数数量。这仅用于
algorithm='lars'和algorithm='omp',并且在omp情况下会被alpha覆盖。如果为None,则默认为transform_n_nonzero_coefs=int(n_features / 10)。- transform_alphafloat, default=None
如果
algorithm='lasso_lars'或algorithm='lasso_cd',alpha是应用于 L1 范数的惩罚项。如果algorithm='threshold',alpha是一个阈值的绝对值,低于该阈值的系数将被压缩为零。如果algorithm='omp',alpha是容差参数:目标重建误差的值。在这种情况下,它会覆盖n_nonzero_coefs。如果为None,则默认为 1。- split_signbool, default=False
是否将稀疏特征向量拆分为其负部分和正部分的连接。这可以提高下游分类器的性能。
- n_jobsint, default=None
要并行运行的作业数量。
None表示 1,除非在joblib.parallel_backend上下文中。-1表示使用所有处理器。有关更多详细信息,请参阅词汇表。- positive_codebool, default=False
查找代码时是否强制执行非负性。
0.20 版本新增。
- transform_max_iterint, default=1000
如果
algorithm='lasso_cd'或lasso_lars,执行的最大迭代次数。版本 0.22 新增。
- 属性:
另请参阅
DictionaryLearning查找一个稀疏编码数据的字典。
MiniBatchDictionaryLearning字典学习算法的一个更快、更不准确的版本。
MiniBatchSparsePCAMini-batch 稀疏主成分分析。
SparsePCA稀疏主成分分析。
sparse_encode稀疏编码,其中结果的每一行都是稀疏编码问题的解。
示例
>>> import numpy as np >>> from sklearn.decomposition import SparseCoder >>> X = np.array([[-1, -1, -1], [0, 0, 3]]) >>> dictionary = np.array( ... [[0, 1, 0], ... [-1, -1, 2], ... [1, 1, 1], ... [0, 1, 1], ... [0, 2, 1]], ... dtype=np.float64 ... ) >>> coder = SparseCoder( ... dictionary=dictionary, transform_algorithm='lasso_lars', ... transform_alpha=1e-10, ... ) >>> coder.transform(X) array([[ 0., 0., -1., 0., 0.], [ 0., 1., 1., 0., 0.]])
- fit(X, y=None)[source]#
仅验证估计器的参数。
此方法允许:(i) 验证估计器的参数,以及 (ii) 与 scikit-learn 转换器 API 保持一致。
- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
训练数据。仅用于输入验证。
- y被忽略
未使用,按照惯例为保持 API 一致性而存在。
- 返回:
- selfobject
返回实例本身。
- fit_transform(X, y=None, **fit_params)[source]#
拟合数据,然后对其进行转换。
使用可选参数
fit_params将转换器拟合到X和y,并返回X的转换版本。- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
输入样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象,默认=None
目标值(对于无监督转换,为 None)。
- **fit_paramsdict
额外的拟合参数。仅当估计器在其
fit方法中接受额外的参数时才传递。
- 返回:
- X_newndarray array of shape (n_samples, n_features_new)
转换后的数组。
- get_feature_names_out(input_features=None)[source]#
获取转换的输出特征名称。
The feature names out will prefixed by the lowercased class name. For example, if the transformer outputs 3 features, then the feature names out are:
["class_name0", "class_name1", "class_name2"].- 参数:
- input_featuresarray-like of str or None, default=None
Only used to validate feature names with the names seen in
fit.
- 返回:
- feature_names_outstr 对象的 ndarray
转换后的特征名称。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- inverse_transform(X)[source]#
将数据转换回其原始空间。
- 参数:
- Xarray-like of shape (n_samples, n_components)
要转换回的数据。必须具有与用于训练模型的数据相同的组件数。
- 返回:
- X_original形状为 (n_samples, n_features) 的 ndarray
转换后的数据。
- set_output(*, transform=None)[source]#
设置输出容器。
有关如何使用 API 的示例,请参阅引入 set_output API。
- 参数:
- transform{“default”, “pandas”, “polars”}, default=None
配置
transform和fit_transform的输出。"default": 转换器的默认输出格式"pandas": DataFrame 输出"polars": Polars 输出None: 转换配置保持不变
1.4 版本新增: 添加了
"polars"选项。
- 返回:
- selfestimator instance
估计器实例。