搜索
写经验 领红包
 > 财经

监督分类方法(监督分类定义)

导语:监督学习之分类

监督分类方法(监督分类定义)

K近邻分类器(KNN)

KNN:通过计算待分类数据点,与

已有数据集中的所有数据点的距离。取

距离最小的前K个点,根据“少数服从

多数“的原则,将这个数据点划分为出

现次数最多的那个类别。

sklearn中的K近邻分类器

在sklearn库中,可以使用sklearn.neighbors.KNeighborsClassifier

创建一个K近邻分类器,主要参数有:

• n_neighbors:用于指定分类器中K的大小(默认值为5,注意与

kmeans的区别)

• weights:设置选中的K个点对分类结果影响的权重(默认值为平均

权重“uniform”,可以选择“distance”代表越近的点权重越高,

或者传入自己编写的以距离为参数的权重计算函数)

sklearn中的K近邻分类器

它的主要参数还有:

• algorithm:设置用于计算临近点的方法,因为当数据量很大的情况

下计算当前点和所有点的距离再选出最近的k各点,这个计算量是很

费时的,所以(选项中有ball_tree、kd_tree和brute,分别代表不

同的寻找邻居的优化算法,默认值为auto,根据训练数据自动选择)

K近邻分类器的使用

创建一组数据 X 和它对应的标签 y:

使用 import 语句导入 K 近邻分类器。

>>> X = [[0], [1], [2], [3]]

>>> y = [0, 0, 1, 1]

>>> from s sklearn.neighbors t import KNeighborsClassifier

K近邻分类器的使用

参数 n_neighbors 设置为 3,即使用最近的3个邻居作为分类的依据,其他参

数保持默认值,并将创建好的实例赋给变量 neigh。

调用 fit() 函数,将训练数据 X 和 标签 y 送入分类器进行学习。

>>> neigh = KNeighborsClassifier(n_neighbors=3)

>>> neigh.fit(X, y)

K近邻分类器的使用

调用 predict() 函数,对未知分类样本 [1.1] 分类,可以直接并将需要分类

的数据构造为数组形式作为参数传入,得到分类标签作为返回值。

样例输出值是 0,表示K近邻分类器通过计算样本 [1.1] 与训练数据的距离,

取 0,1,2 这 3 个邻居作为依据,根据“投票法”最终将样本分为类别 0。

>>> print(neigh.predict([[1.1]]))

[0]

KNN的使用经验

在实际使用时,我们可以使用所有训练数据构成特征 X 和标签 y,使用

fit() 函数进行训练。在正式分类时,通过一次性构造测试集或者一个一个输入

样本的方式,得到样本对应的分类结果。有关K 的取值:

• 如果较大,相当于使用较大邻域中的训练实例进行预测,可以减小估计误差,

但是距离较远的样本也会对预测起作用,导致预测错误。

• 相反地,如果 K 较小,相当于使用较小的邻域进行预测,如果邻居恰好是噪

声点,会导致过拟合。

• 一般情况下,K 会倾向选取较小的值,并使用交叉验证法选取最优 K 值。

本文内容由快快网络小凡整理编辑!