参数
————————————————————
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。