新闻中心

九游会·(j9)官方网站因为它获胜影响模子的性能和泛化才能-九游会·(j9)官方网站

发布日期:2024-10-06 05:36    点击次数:134

KNN算法

KNN算法,全称K-Nearest Neighbors(K-最隔邻)算法,是一种在模式识别、机器学习和数据挖掘中粗拙欺诈的非参数监督学习方法。它不错用于分类和追念任务,尽管它更常被用于分类。

KNN算法的基愉快趣是,关于一个新的输入样本,算法会把柄特征空间中最近的侦查样正本瞻望这个样本的类别或数值。

具体设施如下:

1.收受K值:领先细目一个正整数K,它默示将考虑的最隔邻居的数目。

2.联想距离:使用某种距离度量(如欧氏距离、曼哈顿距离等),联想待分类样本与侦查鸠集的每一个样本之间的距离。

3.找到K个最隔邻:从距离列表中选出距离最近的K个侦查样本。

4.决议规定:

- 分类任务:对这K个最隔邻的类别进行投票,其中出现次数最多的类别被赋予给待分类样本。

- 追念任务:将这K个最隔邻的主义值进行平均(或其他团聚阵势),手脚待瞻望样本的输出值。

KNN算法的优点包括:

- 表面上粗浅直不雅,易于调节和终端。

- 无需侦查模子,只需要存储侦查数据,因此不错惩处非线性可分的数据集。

- 对荒谬值明锐度较低,因为它是基于无数投票的。

但是,KNN算法也有一些过失:

- 跟着数据集的增大,联想量会权臣加多,因为需要联想新样本与通盘侦查样本的距离。

- K值的收受可能会影响最终铁心,收受不妥可能会导致过拟合或欠拟合。

- 它关于特征法子明锐,需要对特征进行法子化或归一化惩处,以幸免某些特征因法子较大而主导距离联想。

- 在高维空间中,距离度量可能变得不那么挑升想真义,导致算法性能下落,这是所谓的“维度糟糕”。

在本色欺诈中,收受合适的K值、距离度量和预惩处设施皆是确保KNN算法有用性的要津身分。

K值录取的留隐衷项

在KNN(K-Nearest Neighbors)算法中,K值的收受至关关键,因为它获胜影响模子的性能和泛化才能。K值的收受需要注意以下几点:

1.K值的奇偶性:在分类任务中,收受奇数K值不错幸免投票时出现平局的情况,尤其是在二分类问题中。举例,如若K值为偶数,当最隔邻中有疏通数目的两个不同类别时,算法将无法决定分类铁心。

2.K值与模子复杂度:K值较小意味着模子愈加复杂,对侦查数据的拟合进度更高,但容易过拟合,即模子在侦查数据上的推崇很好,但在未见过的新数据上推崇较差。相背,较大的K值不错使模子更粗浅,泛化才能更强,但可能会裁减模子的局部明锐性,导致欠拟合。

3.K值与数据集范围:在大范围数据集上,较大的K值不错更好地捕捉数据的全体趋势,但如若数据集自己较小,较大的K值可能导致过度平滑,忽略掉数据的细节特征。

4.K值与数据散布:如若数据散布荒谬均匀,较小的K值可能仍是豪阔;但如若数据散布不均,可能需要较大的K值来确保豪阔的代表性。

5.K值与联想成果:K值越大,联想量也会相应加多,因为需要联想与更多的邻居的距离。在大数据集上,这可能会权臣加多瞻望时辰。

6.交叉考据:频繁保举使用交叉考据(Cross-validation)来收受最优的K值。通过将数据集分红侦查集和考据集,尝试不同的K值,收受使考据集上舛错最小化的K值。

7.边界常识:就怕,边界常识也不错指挥K值的收受。举例,在某些欺诈中,可能但愿模子对新数据点的局部特征愈加明锐,这时不错收受较小的K值。

总之,K值的收受是一个衡量的过程,需要在模子复杂度、联想成果、泛化才能和数据特质之间找到均衡。在本色欺诈中,频繁需要通过践诺和交叉考据来细目最相宜特定数据集和任务的K值。

案例:终端KNN算法

要用Python终端一个粗浅的KNN算法案例,咱们不错使用scikit-learn库,它提供了高效且易于使用的KNN终端。不外,为了展示基愉快趣,咱们也不错手动终端KNN算法。底下是一个手动终端KNN分类器的例子,使用了Iris数据集进行演示:

import numpy as np

from collections import Counter

from sklearn.model_selection import train_test_split

from sklearn.datasets import load_iris

from sklearn.metrics import accuracy_score

# 加载数据集

data = load_iris()

X = data.data

y = data.target

# 永诀数据集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# KNN分类器

class KNNClassifier:

def __init__(self, k=3):

self.k = k

def fit(self, X_train, y_train):

self.X_train = X_train

self.y_train = y_train

def predict(self, X_test):

predictions = []

for row in X_test:

# 联想距离

distances = np.sqrt(np.sum((self.X_train - row)**2, axis=1))

# 找到最近的k个邻居

k_indices = np.argsort(distances)[:self.k]

k_nearest_labels = [self.y_train[i] for i in k_indices]

# 无数表决

most_common = Counter(k_nearest_labels).most_common(1)

predictions.append(most_common[0][0])

return np.array(predictions)

# 实例化KNN分类器

knn = KNNClassifier(k=3)

# 侦查模子

knn.fit(X_train, y_train)

# 瞻望

predictions = knn.predict(X_test)

# 联想准确率

print("Accuracy:", accuracy_score(y_test, predictions))

代码解说

在这个例子中,咱们领先加载了Iris数据集并将其永诀为侦查集和测试集。然后,咱们界说了一个KNNClassifier类,它包含了fit和predict方法。在fit方法中,咱们仅仅粗浅地存储了侦查数据和标签,而在predict方法中,咱们终端了KNN的中枢逻辑:联想距离、找到最近的邻居并进行无数表决。

终末,咱们使用accuracy_score函数来评估模子的准确性,望望咱们的KNN分类器在测试集上的推崇怎样。

这个粗浅的终端展示了KNN算法的基本使命经由,但在本色欺诈中,你可能会想要使用更高档的库如scikit-learn,因为它提供了更多的功能,如交叉考据、网格搜索等,以及更高效的终端。

#python数据分析札记#

想了解更多精彩内容九游会·(j9)官方网站,快来护理懒东说念主编程