sklearn的常用函数以及参数——3. 聚类算法&降维算法

聚类算法

1. knn算法
from sklearn.neighbors import NearestNeighbors
nbrs = NearestNeighbors()
'''
__init__函数
    def __init__(self, n_neighbors=5, radius=1.0,
                 algorithm='auto', leaf_size=30, metric='minkowski',
                 p=2, metric_params=None, n_jobs=1, **kwargs):
 
n_neighbors,整数,可选(默认值为5),用k_neighbors查找的近邻数
radius,参数空间的范围
'''
2.Kmeans算法
from sklearn.cluster import KMeans
k = KMeans()
'''
__init__函数
    def __init__(self, n_clusters=8, init='k-means++', n_init=10,
                 max_iter=300, tol=1e-4, precompute_distances='auto',
                 verbose=0, random_state=None, copy_x=True,
                 n_jobs=1, algorithm='auto'):
                  
n_clusters,生成的聚类数,即产生的质心(centroids)数
max_iter,执行一次k-means算法所进行的最大迭代数。
n_init,用不同的质心初始化值运行算法的次数,最终解是在inertia意义下选出的最优结果。
init:有三个可选值:’k-means++’, ‘random’,或者传递一个ndarray向量。
                  此参数指定初始化方法,默认值为 ‘k-means++’。
                  (1)‘k-means++’ 用一种特殊的方法选定初始质心从而能加速迭代过程的收敛(即上文中的k-means++介绍)
                  (2)‘random’ 随机从训练数据中选取初始质心。
                  (3)如果传递的是一个ndarray,则应该形如 (n_clusters, n_features) 并给出初始质心。
precompute_distances,三个可选值,‘auto’,True 或者 False。预计算距离,计算速度更快但占用更多内存。
tol,默认值= 1e-4 与inertia结合来确定收敛条件。
random_state,用于初始化质心的生成器(generator)。如果值为一个整数,则确定一个seed。此参数默认值为numpy的随机数生成器。
copy_x,当我们precomputing distances时,将数据中心化会得到更准确的结果。如果把此参数值设为True,则原始数据不会被改变。
        如果是False,则会直接在原始数据上做修改并在函数返回值时将其还原。
        但是在计算过程中由于有对数据均值的加减运算,所以数据返回后,原始数据和计算前可能会有细小差别。
 
用法:
    fit(X[,y]):
     计算k-means聚类。
    fit_predictt(X[,y]):
     计算簇质心并给每个样本预测类别。
    fit_transform(X[,y]):
    计算簇并 transform X to cluster-distance space。
    get_params([deep]):
     取得估计器的参数。
    predict(X):predict(X)
     给每个样本估计最接近的簇。
    score(X[,y]):
     计算聚类误差
    set_params(**params):
     为这个估计器手动设定参数。
    transform(X[,y]): 将X转换为群集距离空间。
     在新空间中,每个维度都是到集群中心的距离。 请注意,即使X是稀疏的,转换返回的数组通常也是密集的。
'''
3. 层次聚类
from sklearn.cluster import AgglomerativeClustering
agg = AgglomerativeClustering()
'''
__init__函数
    def __init__(self, n_clusters=2, affinity="euclidean",
                 memory=None,
                 connectivity=None, compute_full_tree='auto',
                 linkage='ward', pooling_func=np.mean):
 
n_clusters,一个整数,指定分类簇的数量
connectivity,一个数组或者可调用对象或者None,用于指定连接矩阵
affinity,一个字符串或者可调用对象,用于计算距离。
memory,用于缓存输出的结果,默认为不缓存
compute_full_tree,通常当训练了n_clusters后,训练过程就会停止,但是如果compute_full_tree=True,则会继续训练从而生成一颗完整的树
linkage,一个字符串,用于指定链接算法
 
属性:
    labels:每个样本的簇标记
    n_leaves_:分层树的叶节点数量
    n_components:连接图中连通分量的估计值
    children:一个数组,给出了每个非节点数量
 
方法:
    fit(X[,y]):训练样本
    fit_predict(X[,y]):训练模型并预测每个样本的簇标记
'''
4. DBSCAN
from sklearn.cluster import DBSCAN
dbs = DBSCAN()
'''
__init__函数
    def __init__(self, eps=0.5, min_samples=5, metric='euclidean',
                 metric_params=None, algorithm='auto', leaf_size=30, p=None,
                 n_jobs=1):
 
eps,DBSCAN算法参数,即我们的ϵ-邻域的距离阈值,和样本距离超过ϵ的样本点不在ϵ-邻域内。默认值是0.5。一般需要通过在多组值里面选择一个合适的阈值。
     eps过大,则更多的点会落在核心对象的ϵ-邻域,此时我们的类别数可能会减少, 本来不应该是一类的样本也会被划为一类。
     反之则类别数可能会增大,本来是一类的样本却被划分开。
min_samples,DBSCAN算法参数,即样本点要成为核心对象所需要的ϵ-邻域的样本数阈值。默认值是5. 一般需要通过在多组值里面选择一个合适的阈值。
            通常和eps一起调参。在eps一定的情况下,min_samples过大,则核心对象会过少,此时簇内部分本来是一类的样本可能会被标为噪音点,类别数也会变多。
            反之min_samples过小的话,则会产生大量的核心对象,可能会导致类别数过少。
metric,最近邻距离度量参数
algorithm,最近邻搜索算法参数
'''

降维算法

1. 主成分分析法

from sklearn.decomposition import PCA
pca = PCA()
'''
__init__函数
    def __init__(self, n_components=None, copy=True, whiten=False,
                 svd_solver='auto', tol=0.0, iterated_power='auto',
                 random_state=None):
 
n_components,PCA算法中所要保留的主成分个数n,即保留下来的特征个数n
copy,表示是否在运行算法时,将原始训练数据复制一份。
whiten,白化,使得每个特征具有相同的方差
'''
 
# 核函主成分
from sklearn.decomposition import KernelPCA
kpca = KernelPCA()
'''
__init__函数
    def __init__(self, n_components=None, kernel="linear",
                 gamma=None, degree=3, coef0=1, kernel_params=None,
                 alpha=1.0, fit_inverse_transform=False, eigen_solver='auto',
                 tol=0, max_iter=None, remove_zero_eig=False,
                 random_state=None, copy_X=True, n_jobs=1):
'''
2. 因子分析
from sklearn.decomposition import FactorAnalysis
fac = FactorAnalysis()
'''
__init__函数
    def __init__(self, n_components=None, tol=1e-2, copy=True, max_iter=1000,
                 noise_variance_init=None, svd_method='randomized',
                 iterated_power=3, random_state=0):
'''

你可能感兴趣的:(sklearn的常用函数以及参数——3. 聚类算法&降维算法)