Python机器学习库笔记(7)——scikit-learn:聚类&降维

本文将介绍以下几种聚类、降维算法在scikit-learn中的使用方法:

聚类:

  • K-Means
  • DBSCAN

降维:

  • PCA
  • LDA

聚类

K-Means

参数:

  • n_clusters:要分成的类别数,默认值为8。
  • init:初始化聚类中心的方法,默认为"k-means++",它将智能选择初始聚类中心;"random"将随机选择初始聚类中心;也可传入一组数组指定为初始聚类中心。
  • n_init:用不同的初始化聚类中心运行算法的次数,默认10。
  • max_iter:最大迭代次数,默认300。
  • tol:容差,默认1e-4。
  • precompute_distances:是否预先计算距离(更快但消耗更多内存)。选"auto"会在n_samples * n_clusters > 12时不预先计算距离。
  • verbose:是否冗余输出,默认0。
  • random_state:随机数种子。
  • copy_x:是否复制训练集,默认为True,如果为False则会直接在原数据上修改。
  • n_jobs:使用的核心数。默认None为单核。
  • algorithm:可选"auto"(默认)、"full""elkan""auto"自动选择"elkan"处理稠密数据,"full"处理稀疏数据。

属性:

  • cluster_centers_:返回聚类中心。
  • labels_:返回聚类后每个点的标签。
  • inertia_:返回样本到最近聚类中心距离的平方和。
  • n_iter_:返回迭代次数。
1
2
3
4
from sklearn.cluster import KMeans
KMeans(n_clusters=8, init="k-means++", n_init=10, max_iter=300, tol=0.0001,
precompute_distances="auto", verbose=0, random_state=None, copy_x=True,
n_jobs=None, algorithm="auto")

DBSCAN

参数:

  • eps:两个样本被认为在同一邻域内的最大距离。默认为0.5。
  • min_samples:如果一个点被视为核心点,它邻域内至少包含的点的数量(包括这个点本身)。默认为5。
  • metric:距离度量函数,默认为"euclidean"欧式距离。
  • metric_params:距离度量函数的附加参数。
  • algorithm:计算近邻距离的算法,可选"auto"(默认)、"ball_tree""kd_tree""brute",该参数类似于KNN。
  • leaf_size:算法选择KD树或者球树时,该参数用于控制叶节点数量,默认值30。
  • p:闵式距离的度量,p=1时为曼哈顿距离,p=2时为欧式距离。

属性:

  • core_sample_indices_:返回核心点的index列表。
  • components_:返回核心点的副本列表。
  • labels_:返回聚类后每个点的标签,噪声点用-1表示。
1
2
3
from sklearn.cluster import DBSCAN
DBSCAN(eps=0.5, min_samples=5, metric="euclidean", metric_params=None,
algorithm="auto", leaf_size=30, p=None, n_jobs=None)

降维

PCA

参数:

  • n_components:降维之后保留的维数,如果不指定则该值取样本数和特征数间的较小值。可指定为一个整数,即所需保留的维数。如果设为"mle"svd_solver == "full",会采用MLE算法自动选择一个合适的维度。如果是一个浮点数且svd_solver == "full",它代表降维后的能保留的信息比值。如果svd_solver == "arpack",该值会被严格限制为小于样本数和特征数。
  • copy:是否创建数据副本而不覆盖原数据,默认为True
  • whiten:是否白化,即去除降维后的特征之间的相关性并且方差相同。默认为False
  • svd_solver:SVD采用的算法,默认"auto"会根据输入数据自动挑选最优解,具体方法有"full""arpack""randomized"
  • tolsvd_solver == "arpack"时,奇异值的误差容忍度,默认0.。
  • iterated_powersvd_solver == "randomized"时的迭代次数,默认"auto"
  • random_state:随机数种子。

属性:

  • components_:主成分的轴的方向。
  • explained_variance_:降维后各成分的方差。
  • explained_variance_ratio_:降维后各成分的方差所占的比值。
  • singular_values_:降维后主成分的奇异值。
  • mean_:降维后主成分的经验均值。
  • n_components_:降维之后保留的维数。
  • noise_variance_:噪声协方差。
1
2
3
from sklearn.decomposition import PCA
PCA(n_components=None, copy=True, whiten=False, svd_solver="auto",
tol=0.0, iterated_power="auto", random_state=None)

LDA

参数;

  • solver:算法,可选"svd"(默认)、"lsqr""eigen"
  • shrinkage:正则化参数,默认None,可指定为0到1之间的浮点数,也可选"auto"自动选择。该参数在算法使用"svd"时无效。
  • priors:类别的先验概率。
  • n_components:降维之后保留的维数,必须小于n_classes - 1
  • store_covariance:是否计算类的协方差矩阵,默认为False
  • tol:奇异值的误差容忍度,默认1e-4。

属性:

  • coef_:权重系数。
  • intercept_:截距。
  • covariance_:协方差矩阵。
  • explained_variance_ratio_:降维后各成分的方差所占的比值。只有选择"svd"算法时可用。
  • means_:类的均值。
  • priors_:类的先验概率。
  • scalings_:用于降维性能度量。
  • xbar_:总体均值。
  • classes_:独特的类别标签。
1
2
3
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
LinearDiscriminantAnalysis(solver="svd", shrinkage=None, priors=None,
n_components=None, store_covariance=False, tol=0.0001)