sklearn.utils.validation.check_array()

参数

————————————————————

array:object,需要检查或转化的输入对象。

accept_sparse:string, string列表或者None。String[s]代表允许的稀疏矩阵格式,例如‘csc','csr'等。None代

若输入为稀疏矩阵则报错。如果输入为稀疏矩阵其格式不在accept_sparse中,此时默认将其格式转化为格式列表

中的第一种格式。

dtype:string,type 或者None(default = 'numeric')。结果的数据类型。若为None,输入的数据类型被保

留。若为’numeric‘,若array.dtype非object则保留原dtype。

order:'F', 'C', 或者None(default)。 将数组转化为fortran或者c风格。

copy: boolean (默认为False)。

force_all_finite : boolean(默认为True)。 X中出现np.inf和np.nan时是否报错。

ensure_2d : boolean(默认为True)。是否要保证X的维度至少为2。

allow_nd : boolean(默认为False)。是否允许 X的维度大于2。

ensure_min_samples:int (默认为1) 。保证数组中具有的最少样本数。设置为0滤过检查。

ensure_min_features : int(默认为1)。保证二维数组所具有的最少特征数。

返回值

————————————————————————————

X_converted : object

流程

————————————————————————————

1、判断accept_sparse是否为str实例。若为str则将其转化为list,以方便后面使用。

2、存储是否想要numberic类型。dtype_numeric

3、若array为稀疏矩阵,若dtype_numberic为真则将dtype赋值为None,这样做的作用是统一dtype。然后调用

_ensure_sparse_format()函数格式化稀疏矩阵。

4、若非稀疏矩阵。

            (1)  若ensure_2d为真,转化array以保证其至少为二维。转化函数为np.atleast_2d()。

            (2)  处理dtype。若dtype_numeric为真,判断输入是否为object,若是赋值dtype为np.float64(尝试转

化为float类型),否则赋为None。

            (3)  按格式要求将array转化为np.array。转化函数np.array(array,dtype,order,copy)。

            (4)  确保array的类型真正转化为numberic。即若dtype_numeric为真并且array的dtype为object,执

行array.astype(np.float64)。

            (5)  判断维度。如果all_nd为假并且array的维度大于等于3则报错。

            (6)  有界性判断。若force_all_finite为真 , 执行_assert_all_finite()函数对array进行判断 。

5、至此我们得到了满足各种格式条件的array,下面对array的shape进行检查。首先获取array的shape并赋值给

shape_repr。如果ensure_min_samples >0, 执行_num_samples(array)函数得到n_samples(为什么要这样?因

为可能为稀疏矩阵。)然后判断n_samples与ensure_min_samples的大小关系,若小于则报错。

6、若ensure_min_samples>0并且array的维度为2,得到array的特征维度n_features,若n_features小于

ensure_min_features则报错。

7、返回array。


你可能感兴趣的:(sklearn.utils.validation.check_array())