sklearn.neighbors 最近邻

sklearn.neighbors 最近邻

一、最近邻模型主要有五类:

1、k近邻模型

neighbors.KNeighborsClassifier k近邻分类

neighbors.KNeighborsRegressor k近邻回归

2、R近邻模型

neighbors.RadiusNeighborsClassifier R近邻分类

neighbors.RadiusNeighborsRegressor R近邻回归

3、最近质心分类模型

neighbors.NearestCentroid

4、核密度模型

neighbors.KernelDensity

5、LOF非监督离群点检测

neighbors.LocalOutlierFactor

 

除此外,还有支撑这些模型的基本类

1、neighbors.NearestNeighbors 实施近邻搜索的非监督学习

2、neighbors.BallTree balltree树形数据结构

3、neighbors.KDTree KDtree树形数据结构

4、neighbors.DistanceMetric 距离度量标准

5、neighbors.kneighbors_graph k近邻矩阵图

6、neighbors.radius_neighbors_graph R近邻矩阵图

 

二、k近邻模型

1、k近邻分类 neighbors.KNeighborsClassifier

根据k近邻的多数决来进行分类

模型参数 

    n_neighbors : int, optional (default = 5)

      k值

    weights : str or callable, optional (default = ‘uniform’)

      k近邻的加权贡献度

      ● ‘uniform’ : 所有近邻点的权重一样

      ● ‘distance’:权重为距离的倒数。距离越近的点权值越大。

      ● [callable] :可以调用自定义函数

    algorithm : {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, optional

      计算最近邻的算法

      ● ‘ball_tree’ 使用BallTree类的据结构

      ● ‘kd_tree’ 使用KDTree类的数据结构

      ● ‘brute’  使用暴力搜索

      ● ‘auto’ 自动选择合适的算法

    leaf_size : int, optional (default = 30)

      Leaf_size参数将会传递给BallTree类或KDTree类。这会影响构建数据结构和查询时的速度,以及存储数的内存大小。最优值取决于实际问题。通常Leaf_size越大,数据结构创建

      的越快,但查询会变慢;反之Leaf_size越小,数据结构创建的越慢,但查询会变快。如果是暴力破解的话,不需要设置该参数。

    p : integer, optional (default = 2)

      闵可夫斯基距离度量时的p值。其他距离度量可以不需要设置该参数。当闵可夫斯基的p=2时,等价于欧几里得距离。

    metric : string or callable, default 'minkowski'

      计算最近邻所使用的距离度量标准。例如

      ● 'euclidean' 欧几里得距离

      ● 'manhattan' 曼哈顿距离

      详细,参考neighbors.DistancsMetric

    metric_params : dict, optional (default = None)

      采用的距离度量标准所需要的参数。通过字典方式传递参数。

    n_jobs : int, optional (default = 1)

      为近邻搜索运行的并行作业的数量。如果为-1,则并行作业数量设置为CPU核心数量。不影响 fit 方法。

 

模型方法

fit(Xy) 拟合数据,学习模型

参数:   X : {array-like, sparse matrix, BallTree, KDTree}

    y : {array-like, sparse matrix}

 

get_params(deep=True) 获得该模型的设置参数

参数:   deep : boolean, optional

      如果为True,会返回模型的参数以及子对象模型

 

kneighbors(X=Nonen_neighbors=Nonereturn_distance=True)

寻找一个或一组点的最近邻。返回的是每个点的最近邻与该点的距离和最近邻的索引目录。

参数: X : array-like, shape (n_query, n_features), or (n_query, n_indexed) if metric == ‘precomputed’

      要查询的点。如果没有提供,就是 fit 方法时,学习的点集。这种情况下,查询点不被认为是它自己的邻居。

    n_neighbors : int

      k值(默认为模型的k值)

    return_distance : boolean, optional. Defaults to True.

      如果为False,不会返回距离。

返回: dist : array

      最近邻与查询点的距离。只有当return_distance=True时才返回。

    ind : array

      最近邻的索引目录。

 

kneighbors_graph(X=Nonen_neighbors=Nonemode='connectivity')

k近邻矩阵图

参数: X : array-like, shape (n_query, n_features), or (n_query, n_indexed) if metric == ‘precomputed’

      要查询的点。如果没有提供,就是 fit 方法时,学习的点集。这种情况下,查询点不被认为是它自己的邻居。

    n_neighbors : int

      k值(默认为模型的k值)

    mode : {‘connectivity’, ‘distance’}, optional

      返回矩阵的类型。

      ● ‘connectivity’ :返回的是0,1矩阵

      ● ‘distance’:返回的是欧几里得距离矩阵

返回: A : sparse matrix in CSR format, shape = [n_samples, n_samples_fit]

      CSR格式。需要调用toarray方法,才能直接看到矩阵图。矩阵的每行代表该方法的每个样例,每一列代表模型训练样本里的每个样例与该方法样本里的关系(如果mode

      是‘connectivity’ ,则1代表就是最近邻;如果mode是‘distance’,则数字就代表是最近邻的欧几里得距离)

 

predict(X)

预测未知数据的类别。

参数: X : array-like, shape (n_query, n_features), or (n_query, n_indexed) if metric == ‘precomputed’

      测试数据

返回: y : array of shape [n_samples] or [n_samples, n_outputs]

      测试数据的预测类别

 

predict_proba(X)

返回未知数据属于每个类别的概率

参数: X : array-like, shape (n_query, n_features), or (n_query, n_indexed) if metric == ‘precomputed’

      测试数据

返回: p : array of shape = [n_samples, n_classes], or a list of n_outputs

      每行代表测试数据的每个样例,每列代表一个类别的概率。

 

score(Xysample_weight=None)

返回的是模型预测测试数据的精度

参数: X : array-like, shape = (n_samples, n_features)

      测试数据

    y : array-like, shape = (n_samples) or (n_samples, n_outputs)

      对于X真实的类别

    sample_weight : array-like, shape = [n_samples], optional

      样本权重

返回: score : float

      精度值

 

set_params(**params)

可以通过传入字典的方式,修改模型的参数值。

 

2、k近邻回归 neighbors.KNeighborsRegressor

基于k近邻的回归。根据k近邻的平均数来得到预测值。

参数和方法可参考k近邻分类的参数和方法,基本一致。不同点为:

1、去掉了方法predict_proba(X)

2、score(Xysample_weight=None) 返回的不是精度,而是样本可决系数:

1-u/v,其中u为残差平方和,而v为真实值与真实值平均值的差平方和。最好的成绩是1,样本可决系数可以为负数。

猜你喜欢

转载自www.cnblogs.com/fushengweixie/p/8973640.html