ops

classicML的底层核心操作.

bootstrap_sampling

bootstrap_sampling(x, y=None, seed=None)

对样本进行自助采样.

参数

  • x: 一个 Numpy数组,特征数据.

  • y: 一个 Numpy数组,数据样本(标签).

  • seed: 整数,随机种子.

返回

自助采样后的新样本.

ConvexHull

使用Graham扫描算法计算二维凸包.

ConvexHull(points)

参数

  • points: 一个Numpy数组或列表, 计算凸包的点.

  • hull: 一个Numpy数组或列表, 凸包的点.

参考文献

compute_convex_hull

计算二维凸包.

compute_convex_hull()

返回

二维凸包.

calculate_centroids

calculate_centroids(x, clusters)

计算均值向量.

参数

  • x: 一个 Numpy数组, 特征数据.

  • clusters: 一个 Numpy数组, 当前的簇标记.

返回

均值向量.

calculate_covariances

calculate_covariances(sample, mean, gamma)

计算协方差矩阵.

参数

  • sample: 一个Numpy数组, 样本的取值.

  • mean:一个Numpy数组, 均值.

  • gamma: 一个Numpy数组, 后验概率.

返回

新的协方差矩阵.

calculate_error

calculate_error(x, y, i, kernel, alphas, non_zero_alphas, b)

计算KKT条件的违背值.

参数

  • x: 一个 Numpy数组,特征数据.

  • y: 一个 Numpy数组,标签.

  • i: 整数,第i个样本.

  • kernel: cml.kernel.Kernels实例,分类器使用的核函数.

  • alphas: 一个 Numpy数组,拉格朗日乘子.

  • non_zero_alphas: 一个 Numpy数组,非零拉格朗日乘子.

  • b: 浮点数,偏置项.

返回

KKT条件的违背值.

calculate_euclidean_distance

calculate_euclidean_distance(x0, x1)

计算欧式距离.

参数

  • x0, x1: Numpy数组, 要计算欧式距离的两个值.

返回

欧式距离.

calculate_means

calculate_means(sample, gamma)

计算均值.

参数

  • sample: 一个Numpy数组, 样本的取值.

  • gamma: 一个Numpy数组, 后验概率.

返回

新的均值.

calculate_mixture_coefficient

calculate_mixture_coefficient(number_of_sample, gamma)

计算混合系数.

参数

  • number_of_sample: 整数, 样本的总数.

  • gamma: 一个Numpy数组, 后验概率.

返回

新的混合系数.

clip_alpha

clip_alpha(alpha, low, high)

修剪拉格朗日乘子.

参数

  • alpha: 浮点数,拉格朗日乘子.

  • low: 浮点数,正则化系数的下界.

  • high: 浮点数,正则化系数的上界.

返回

修剪后的拉格朗日乘子.

compare_differences

compare_differences(x0, x1, tol)

比较差异.

参数

  • x0, x1: Numpy数组, 要比较差异的两个值.

  • tol: 浮点数, 最小差异阈值.

返回

差异向量.

get_cluster

get_cluster(distances)

获取类条件概率.

参数

  • distances: 一个Numpy, 距离.

返回

簇标记.

get_conditional_probability

get_conditional_probability(samples_on_attribute,
                            samples_in_category,
                            num_of_categories,
                            smoothing)

获取类条件概率.

参数

  • samples_on_attribute: 整数,在某个属性的样本.

  • samples_in_category: 整数,在某个类别上的样本.

  • num_of_categories: 整数,类别的数量.

  • smoothing: 布尔值,是否使用平滑.

返回

类条件概率.

get_dependent_prior_probability

get_dependent_prior_probability(samples_on_attribute_in_category,
                                number_of_sample,
                                values_on_attribute,
                                smoothing)

获取有依赖的类先验概率.

参数

  • samples_on_attribute_in_category: 整数,类别为c的属性i上取值为xi的样本.

  • number_of_sample: 整数,样本的总数.

  • values_on_attribute: 整数,在属性i上的取值数.

  • smoothing: 布尔值, 是否使用平滑.

返回

类先验概率.

get_gaussian_mixture_distribution_posterior_probability

get_gaussian_mixture_distribution_posterior_probability(sample, mean, var, alpha, n_components)

获取高斯混合分布后验概率.

参数

  • sample: 一个Numpy数组, 样本的取值.

  • mean: 一个Numpy数组, 样本在某个属性的上的均值.

  • var: 一个Numpy数组, 样本在某个属性上的方差.

  • alpha: 一个Numpy数组, 混合系数.

  • n_components: 整数, 混合系数的个数.

返回

高斯混合分布后验概率.

get_gaussian_mixture_distribution_probability_density

get_gaussian_mixture_distribution_probability_density(sample, mean, var, alpha, n_components)

获取高斯混合分布概率密度.

参数

  • sample: 一个Numpy数组, 样本的取值.

  • mean: 一个Numpy数组, 样本在某个属性的上的均值.

  • var: 一个Numpy数组, 样本在某个属性上的方差.

  • alpha: 一个Numpy数组, 混合系数.

  • n_components: 整数, 混合系数的个数.

返回

高斯混合分布概率密度.

get_normal_distribution_probability_density

get_normal_distribution_probability_density(sample, mean, var)

获取正态分布概率密度.

参数

  • sample: 一个Numpy数组, 样本的取值.

  • mean: 一个Numpy数组, 样本在某个属性的上的均值.

  • var: 一个Numpy数组, 样本在某个属性上的方差.

返回

正态分布概率密度.

get_prior_probability

get_prior_probability(number_of_sample, y, smoothing)

获取类先验概率.

参数

  • number_of_sample: 整数,样本的总数.

  • y: 一个 Numpy数组,标签.

  • smoothing: 布尔值, 是否使用平滑.

返回

类先验概率.

get_probability_density

get_probability_density(sample, mean, var)

获得概率密度.

参数

  • sample: 浮点数,样本的取值.

  • mean: 浮点数,样本在某个属性的上的均值.

  • var: 浮点数,样本在某个属性上的方差.

返回

概率密度.

get_w

get_w(S_w, mu_0, mu_1)

get_w已经被弃用, 它将在未来的正式版本中被移除, 请使用 get_w_v2.

获得投影向量.

参数

  • S_w: 一个 Numpy数组,类内散度矩阵.

  • mu_0: 一个 Numpy数组,反例的均值向量.

  • mu_1: 一个 Numpy数组,正例的均值向量.

返回

投影向量.

get_w_v2

get_w_v2(S_w, mu_0, mu_1)

获得投影向量.

参数

  • S_w: 一个 Numpy数组,类内散度矩阵.

  • mu_0: 一个 Numpy数组,反例的均值向量.

  • mu_1: 一个 Numpy数组,正例的均值向量.

返回

投影向量.

get_within_class_scatter_matrix

get_within_class_scatter_matrix(X_0, X_1, mu_0, mu_1)

获得类内散度矩阵.

参数

  • X_0: 一个 Numpy数组,反例集合.

  • X_1: 一个 Numpy数组,正例集合.

  • mu_0: 一个 Numpy数组,反例的均值向量.

  • mu_1: 一个 Numpy数组,正例的均值向量.

返回

类内散度矩阵.

init_centroids

init_centroids(x, n_clusters, init)

初始化初始均值向量.

参数

  • x: 一个 Numpy数组,特征数据.

  • n_clusters: 整数, 聚类簇的数量.

  • init: 均值向量的初始化方式,

    • ‘random’: 采用随机初始化;

    • 列表或一个Numpy数组: 可以指定训练数据的索引, 也可以直接给定具体的均值向量.

返回

均值向量.

异常

  • ValueError: 聚类簇数量与初始化均值向量数量不一致, 非法索引或不能自动转换的非法均值向量.

  • TypeError: 非法均值向量.

init_covariances

init_covariances(x, n_components, init)

初始化协方差矩阵.

参数

  • x: 一个 Numpy数组,特征数据.

  • n_components: 整数, 高斯混合成分的个数.

  • init: 列表或一个Numpy数组, 协方差矩阵的初始化方式, 默认将初始化为主对角线为0.1的对角阵张量, 也可以直接给定具体的协方差矩阵.

返回

协方差矩阵组成的张量.

异常

  • ValueError: 协方差矩阵与期望值不一致.

  • TypeError: 非法协方差矩阵.

init_mixture_coefficient

init_mixture_coefficient(n_components, init)

初始化混合系数.

参数

  • n_components: 整数, 高斯混合成分的个数.

  • init: 列表或一个Numpy数组, 混合系数的初始化方式, 默认将初始化为高斯混合成分的个数的倒数, 也可以直接给定具体的混合系数; 无论任何初始化形式, 请保证混合系数的和为1.

返回

混合系数.

异常

  • ValueError: 高斯混合成分个数与初始化混合系数数量不一致, 混合系数和不为1.

  • TypeError: 非法混合系数.

select_second_alpha

select_second_alpha(error, error_cache, non_bound_alphas)

选择第二个拉格朗日乘子,SMO采用的是启发式寻找的思想,找到目标函数变化量足够大,即选取变量样本间隔最大.

参数

  • error: 浮点数,KKT条件的违背值.

  • error_cache: 一个 Numpy数组,KKT条件的违背值缓存.

  • non_bound_alphas: 一个 Numpy数组,非边界拉格朗日乘子.

返回

拉格朗日乘子的下标和违背值.

注意

  • PythonCC存在精度差异,存在潜在的可能性导致使用同样的数据和随机种子但不同后端的结果不一致,不过随着训练的轮数的增加,这种差异会逐渐消失.

type_of_target

type_of_target(y)

判断输入数据的类型.

参数

  • y: 一个 Numpy数组,待判断类型的数据.

返回

  • 'binary': 元素只有两个离散值,类型不限.

  • 'continuous': 元素都是浮点数,且不是对应整数的浮点数.

  • 'multiclass': 元素不只有两个离散值,类型不限.

  • 'multilabel': 元素标签不为一,类型不限.

  • 'unknown': 类型未知.