开发人员的实用程序#
Scikit-learn包含许多帮助开发的实用程序。 这些位于 sklearn.utils
,并包括许多类别的工具。模块中包含以下所有函数和类 sklearn.utils
.
警告
这些实用程序旨在在scikit-learn包中内部使用。 并不能保证它们在scikit-learn版本之间保持稳定。 随着scikit-learn依赖关系的发展,Backport尤其将被删除。
验证工具#
这些是用于检查和验证输入的工具。 当您编写接受数组、矩阵或稀疏矩阵作为参数的函数时,应在适用时使用以下内容。
assert_all_finite
:如果数组包含NaN或Infs,则引发错误。as_float_array
:将输入转换为浮点数数组。 如果传递了稀疏矩阵,则返回稀疏矩阵。check_array
:检查输入是否是2D数组,在稀疏矩阵上提出错误。允许的稀疏矩阵格式可以选择性地给出,以及允许1D或N维阵列。电话assert_all_finite
在默认情况下check_X_y
:检查X和y是否具有一致的长度,在X上调用check_ray,并在y上调用列_or_1d。对于多标签分类或多目标回归,请指定multi_select =True,在这种情况下,将在y上调用check_Array。indexable
:检查所有输入数组是否具有一致的长度,并且可以使用safe_index进行切片或索引。 这用于验证交叉验证的输入。validation.check_memory
检查输入是否joblib.Memory
- 喜欢,这意味着它可以转换成sklearn.utils.Memory
实例(通常是表示cachedir
)或具有相同的界面。
如果您的代码依赖于随机数生成器,则它永远不应该使用以下函数 numpy.random.random
或 numpy.random.normal
. 这种方法可能会导致单元测试中的重复性问题。 而是 numpy.random.RandomState
应该使用对象,该对象是从 random_state
传递给类或函数的参数。 功能 check_random_state
下面的,然后可以用于创建随机数生成器对象。
check_random_state
:创建一个np.random.RandomState
来自参数的对象random_state
.如果
random_state
是None
或np.random
,然后随机初始化RandomState
返回对象。如果
random_state
是一个整数,那么它用于播种新的RandomState
object.如果
random_state
是一RandomState
对象,然后它就会被传递。
例如::
>>> from sklearn.utils import check_random_state
>>> random_state = 0
>>> random_state = check_random_state(random_state)
>>> random_state.rand(4)
array([0.5488135 , 0.71518937, 0.60276338, 0.54488318])
当开发您自己的scikit-learn兼容的估计器时,可以使用以下助手。
validation.check_is_fitted
:在调用之前检查估计器是否已安装transform
,predict
,或类似的方法。此助手允许在估计器中引发标准化错误消息。validation.has_fit_parameter
:检查中是否支持给定参数fit
一个给定的估计量的方法。
高效的线性代数和阵列运算#
extmath.randomized_range_finder
:构造一个范围接近输入范围的标准正交矩阵。 This is used inextmath.randomized_svd
,下面。extmath.randomized_svd
:计算k截断的随机奇异值。该算法使用随机化来查找精确的截断奇异值分解,以加快计算速度。对于您只希望提取少量分量的大型矩阵,它的速度特别快。arrayfuncs.cholesky_delete
:(用于lars_path
)从复杂的因式分解中删除项目。arrayfuncs.min_pos
:(用于sklearn.linear_model.least_angle
)找到数组内正值的最小值。extmath.fast_logdet
:有效地计算矩阵行列式的对数。extmath.density
:有效计算稀疏载体的密度extmath.safe_sparse_dot
:正确处理的点积scipy.sparse
输入。 如果输入很密集,则相当于numpy.dot
.extmath.weighted_mode
:的延伸scipy.stats.mode
这使得每个物品都具有实际价值的权重。
Efficient Random Sampling#
random.sample_without_replacement
:实现高效的抽样算法n_samples
来自一定规模人口的整数n_population
无需更换。
稀疏矩阵的高效辅助线#
的 sklearn.utils.sparsefuncs
cython模块托管已编译的扩展以高效处理 scipy.sparse
数据
sparsefuncs.mean_variance_axis
:计算沿着CSR矩阵指定轴的平均值和方差。用于规范中的容差停止标准KMeans
.sparsefuncs_fast.inplace_csr_row_normalize_l1
和sparsefuncs_fast.inplace_csr_row_normalize_l2
:可用于将各个稀疏样本规格化为单位L1或L2规范,如中所做的那样Normalizer
.sparsefuncs.inplace_csr_column_scale
:可用于将CSR矩阵的列乘以恒定比例(每列一个比例)。用于将要素缩放到单位标准差StandardScaler
.sort_graph_by_row_values
:可用于对CSR稀疏矩阵进行排序,以便每一行都以增加的值存储。当在依赖最近邻图的估计器中使用预先计算的稀疏距离矩阵时,这对于提高效率非常有用。
图表课程#
graph.single_source_shortest_path_length
:(目前未在scikit-learn中使用)返回从单个源到图形上所有连接节点的最短路径。 代码改编自 networkx .如果再次需要这样做,使用Dijkstra算法的单次迭代会快得多graph_shortest_path
.
测试功能#
discovery.all_estimators
:返回scikit-learn中所有估计器的列表,以测试一致的行为和界面。discovery.all_displays
:返回scikit-learn中所有显示(与绘图API相关)的列表,以测试一致的行为和界面。discovery.all_functions
:返回scikit-learn中所有函数的列表,以测试一致的行为和界面。
多类别和多标签实用函数#
multiclass.is_multilabel
:Helper功能检查任务是否为多标签分类任务。multiclass.unique_labels
:Helper函数,用于从不同格式的目标中提取唯一标签的有序数组。
辅助功能#
gen_even_slices
:生成器创建n
- 成包的切片n
. 用于dict_learning
和k_means
.gen_batches
:生成器创建包含批量大小元素的切片,从0到n
safe_mask
:Helper函数,用于将屏蔽转换为使用该屏蔽的numpy数组或scipy稀疏矩阵所期望的格式(稀疏矩阵仅支持integer索引,而numpy数组同时支持布尔屏蔽和integer索引)。safe_sqr
:统一平方的助手功能 (**2
类数组、矩阵和稀疏矩阵。
散列函数#
murmurhash3_32
为MurmurHash3_x86_32
C++非加密哈希函数。此哈希函数适合实现查找表、布鲁姆过滤器、计数最小草图、特征哈希和隐式定义的稀疏随机投影::>>> from sklearn.utils import murmurhash3_32 >>> murmurhash3_32("some feature", seed=0) == -384616559 True >>> murmurhash3_32("some feature", seed=0, positive=True) == 3910350737 True
的
sklearn.utils.murmurhash
模块还可以从其他cython模块中“导入”,以便从Murmur哈希的高性能中受益,同时跳过Python解释器的负担。
和#
deprecated
:装饰器将函数或类标记为已废弃。ConvergenceWarning
:自定义警告以发现收敛问题。用于sklearn.covariance.graphical_lasso
.