sklearn.neighbors.KNeighborsClassifier?
class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, *, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None, **kwargs)
分類器執行k最近鄰投票。
在用戶指南中閱讀更多內容。
參數 | 說明 |
---|---|
n_neighbors | int, default=5 默認情況下用于kneighbors查詢的近鄰數 |
weights | {‘uniform’, ‘distance’} or callable, default=’uniform’ 預測中使用的權重函數。 可能的值: “uniform”:統一權重。 每個鄰域中的所有點均被加權。 “distance”:權重點與其距離的倒數。 在這種情況下,查詢點的近鄰比遠處的近鄰具有更大的影響力。 [callable]:用戶定義的函數,該函數接受距離數組,并返回包含權重的相同形狀的數組。 |
algorithm | {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, default=’auto’ 用于計算最近臨近點的算法: “ ball_tree”將使用BallTree kd_tree”將使用KDTree “brute”將使用暴力搜索。 “auto”將嘗試根據傳遞給fit方法的值來決定最合適的算法。 注意:在稀疏輸入上進行擬合將使用蠻力覆蓋此參數的設置。 |
leaf_size | int, default=30 葉大小傳遞給BallTree或KDTree。 這會影響構造和查詢的速度,以及存儲樹所需的內存。 最佳值取決于問題的性質。 |
p | int, default=2 Minkowski指標的功率參數。 當p = 1時,這等效于對p = 2使用manhattan_distance(l1)和euclidean_distance(l2)。對于任意p,使用minkowski_distance(l_p)。 |
metric | str or callable, default=’minkowski’ 樹使用的距離度量。 默認度量標準為minkowski,p = 2等于標準歐幾里德度量標準。 有關可用度量的列表,請參見DistanceMetric的文檔。 如果度量是“預先計算的”,則X被假定為距離矩陣,并且在擬合過程中必須為平方。 X可能是一個稀疏圖,在這種情況下,只有“非零”元素可以被視為臨近點。 |
metric_params | dict, default=None 度量功能的其他關鍵字參數。 |
n_jobs | int, default=None 為臨近點搜索運行的并行作業數。 除非在joblib.parallel_backend上下文中,否則None表示1。 -1表示使用所有處理器。 有關更多詳細信息,請參見詞匯表。 不會影響擬合方法。 |
屬性 | 說明 |
---|---|
classes_ | array of shape (n_classes,) 分類器已知的類標簽 |
effective_metric_ | str or callble 使用的距離度量。 它將與度量參數相同或與其相同,例如 如果metric參數設置為“ minkowski”,而p參數設置為2,則為“ euclidean”。 |
effective_metric_params_ | dict 度量功能的其他關鍵字參數。 對于大多數指標而言,它與metric_params參數相同,但是,如果將valid_metric_屬性設置為“ minkowski”,則也可能包含p參數值。 |
outputs_2d_ | bool 在擬合期間,當y的形狀為(n_samples,)或(n_samples,1)時為False,否則為True。 |
另見
注意
有關算法選擇和leaf_size的討論,請參見在線文檔中的最近鄰。
警告:關于最近臨近點算法,如果發現兩個臨近點(臨近點k + 1和k)具有相同的距離但標簽不同,則結果將取決于訓練數據的順序。
https://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm
示例
>>> X = [[0], [1], [2], [3]]
>>> y = [0, 0, 1, 1]
>>> from sklearn.neighbors import KNeighborsClassifier
>>> neigh = KNeighborsClassifier(n_neighbors=3)
>>> neigh.fit(X, y)
KNeighborsClassifier(...)
>>> print(neigh.predict([[1.1]]))
[0]
>>> print(neigh.predict_proba([[0.9]]))
[[0.66666667 0.33333333]]
方法
方法 | 說明 |
---|---|
fit (, X, y) |
使用X作為訓練數據和y作為目標值擬合模型 |
get_params ([, deep]) |
獲取此估計量的參數。 |
kneighbors ([, X, n_neighbors, …]) |
查找點的K臨近點。 |
kneighbors_graph ([, X, n_neighbors, mode]) |
計算X中點的k臨近點的(加權)圖 |
predict (, X) |
預測提供的數據的類標簽。 |
predict_proba (, X) |
測試數據X的返回概率估計。 |
score (, X, y[, sample_weight]) |
返回給定測試數據和標簽上的平均準確度。 |
set_params (, **params) |
設置此估算器的參數。 |
__init__(n_neighbors=5, *, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None, **kwargs)
[源碼]
初始化. 請參閱help(type())以獲得準確的說明。
fit(X, y)
[源碼]
使用X作為訓練數據和y作為目標值擬合模型
參數 | 說明 |
---|---|
X | {array-like, sparse matrix, BallTree, KDTree} 訓練數據。 如果是數組或矩陣,則將其形狀設置為[n_samples,n_features],如果是metric =“ precomputed”,則為[n_samples,n_samples]。 |
y | {array-like, sparse matrix} 形狀的目標值= [n_samples]或[n_samples,n_outputs] |
get_params(deep=True)
獲取此估計量的參數。
參數 | 說明 |
---|---|
deep | bool, default=True 如果為True,則將返回此估算器和作為估算器的所包含子對象的參數。 |
返回值 | 說明 |
---|---|
params | mapping of string to any 參數名稱映射到其值。 |
kneighbors(X=None, n_neighbors=None, return_distance=True)
[源碼]
查找點的K臨近點。 返回每個點的臨近點的索引和與之的距離。
參數 | 說明 |
---|---|
X | array-like, shape (n_queries, n_features), or (n_queries, n_indexed) if metric == ‘precomputed’ 查詢點。 如果未提供,則返回每個索引點的臨近點。 在這種情況下,查詢點不被視為其自己的臨近點。 |
n_neighbors | int 要獲取的臨近點數(默認值為傳遞給構造函數的值)。 |
return_distance | boolean, optional. Defaults to True. 如果為False,則不會返回距離 |
返回值 | 說明 |
---|---|
neigh_dist | array, shape (n_queries, n_neighbors) 表示點的長度的數組,僅在return_distance = True時存在 |
neigh_ind | array, shape (n_queries, n_neighbors) 總體矩陣中最近點的索引。 |
示例
在下面的示例中,我們從代表我們的數據集的數組構造一個NearestNeighbors類,并詢問誰最接近[1,1,1]
>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(n_neighbors=1)
>>> neigh.fit(samples)
NearestNeighbors(n_neighbors=1)
>>> print(neigh.kneighbors([[1., 1., 1.]]))
(array([[0.5]]), array([[2]]))
如您所見,它返回[[0.5]]和[[2]],這意味著該元素位于距離0.5處,并且是樣本的第三個元素(索引從0開始)。 您還可以查詢多個點:
>>> X = [[0., 1., 0.], [1., 0., 1.]]
>>> neigh.kneighbors(X, return_distance=False)
array([[1],
[2]]...)
[源碼]
計算X中點的k臨近點的(加權)圖形
參數 | 說明 |
---|---|
X | array-like, shape (n_queries, n_features), or (n_queries, n_indexed) if metric == ‘precomputed’ 查詢點。 如果未提供,則返回每個索引點的臨近點。 在這種情況下,查詢點不被視為其自己的臨近點。 |
n_neighbors | int 每個樣本的臨近點數。 (默認值為傳遞給構造函數的值)。 |
mode | {‘connectivity’, ‘distance’}, optional 返回矩陣的類型:“連通性”將返回具有1和0的連通性矩陣,在“距離”中,邊為點之間的歐幾里得距離。 |
返回值 | 說明 |
---|---|
A | sparse graph in CSR format, shape = [n_queries, n_samples_fit] n_samples_fit是擬合數據中的樣本數A [i,j],分配了將i連接到j的邊的權重。 |
另見:
示例
>>> X = [[0], [3], [1]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(n_neighbors=2)
>>> neigh.fit(X)
NearestNeighbors(n_neighbors=2)
>>> A = neigh.kneighbors_graph(X)
>>> A.toarray()
array([[1., 0., 1.],
[0., 1., 1.],
[1., 0., 1.]])
predict(X)
[源碼]
預測提供的數據的類標簽。
參數 | 說明 |
---|---|
X | array-like of shape (n_queries, n_features), or (n_queries, n_indexed) if metric == ‘precomputed’ 測試樣品。 |
返回值 | 說明 |
---|---|
y | ndarray of shape (n_queries,) or (n_queries, n_outputs) 每個數據樣本的類標簽。 |
predict_proba(X)
[源碼]
測試數據X的返回概率估計。
參數 | 說明 |
---|---|
X | array-like of shape (n_queries, n_features), or (n_queries, n_indexed) if metric == ‘precomputed’ 測試樣品。 |
返回值 | 說明 |
---|---|
p | ndarray of shape (n_queries, n_classes), or a list of n_outputs 如果n_outputs> 1,則為此類數組。輸入樣本的類概率。 類按字典順序排序。 |
score(X, y, sample_weight=None)
[源碼]
返回給定測試數據和標簽上的平均準確度。
在多標簽分類中,這是子集準確性,這是一個嚴格的指標,因為您需要為每個樣本正確預測每個標簽集。
參數 | 說明 |
---|---|
X | array-like of shape (n_samples, n_features) 測試樣本 |
y | array-like of shape (n_samples,) or (n_samples, n_outputs) X的真實標簽。 |
sample_weight | array-like of shape (n_samples,), default=None 樣品權重。 |
返回值 | 說明 |
---|---|
score | float .predict(X) wrt. y.的平均準確度 |
set_params( **params)
[源碼]
設置此估算器的參數。
該方法適用于簡單的估計器以及嵌套對象(例如管道)。 后者的參數格式為
參數 | 說明 |
---|---|
params | dict 估算器參數。 |
返回值 | 說明 |
---|---|
self | object 估算器實例。 |