首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习中一个不需要什么数学基础的算法,非常适合入门

今天主要讲一个最适合机器学习入门的算法——KNN(K-Nearest Neighbor)算法(也叫K近邻算法)以及模型评估方面的内容。

KNN算法

该算法的原理非常直观:要想预测一个新数据,只需把它放到训练数据集中(“旧数据”),看它离哪些数据近,就把它预测为这些数据的类别(分类);或者把它预测为这些数据的均值(回归)。所以k近邻算法既可以做分类,又可以做回归。

Python的scikit-learn库中自带了很多公开的数据集,这里用乳腺癌数据集来说明k近邻算法。

首先,加载该数据集

然后,把该数据集分成两部分。一部分用来训练我们的模型,另一部分用来测试模型的精度。

其中,train_test_split可以将数据按25%的比例分成训练集和测试集。X_train、y_train为训练样本和标签,占75%;X_test、y_test为测试样本和标签,占比25%。

接着,加载我们的模型

这里的n_neighbors和k的含义一样,都是指邻居的个数。也就是说,我们要找到最近的3个邻居,来对预测做出判断。

然后,把数据“喂”给我们的模型,让模型得到训练。

训练完成后,我们测试一下模型的精度

也就是说,模型的精度达到了91.6%。

这就是第一个机器学习算法以及它实现的过程,怎么样,是不是有点cool?

模型的泛化能力

我们用数据训练模型的目的,就是希望它在未知的新数据集中有很好的表现,我们把这种能力就叫做泛化。

我们总是希望泛化精度尽可能高,但有时候,你对旧数据进行过度训练,模型在训练集中表现的非常好,以至于将一些无关的噪声点都拟合了进来。

这时,模型的泛化能力反而会降低,我们称之为过拟合。

与此同时,假如你没有对数据进行有效的训练,产生的模型也比较粗糙,那么对于新的数据集,模型同样不会有好的结果。我们称之为欠拟合。

在模型训练过程中,既不能训练过少,也不能过度训练。过拟合和欠拟合都是需要我们避免的。

KNN模型重要参数

k近邻算法主要有2个参数。

其一就是邻居的个数k。邻居过少,只会预测与新数据最近的那个样本;邻居过多,会预测所有数据的平均,算法失去意义。

其二是新数据与旧样本之间的距离。我们一般用欧式距离,或者叫L2范数。

KNN模型的优缺点

优点:模型易于理解,不需要什么数学基础。参数也不多,调参很容易。

缺点:如果训练数据的特征很多,而且样本也很大,那么k近邻算法的预测速度和精度都会有大幅下降。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190824A06I1600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券