knn算法介绍与参数调优.docxVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
KNN算法介绍与参数调优 K近邻法(k-nearest neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自 主的应用。比方,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出了。 这里就运用了 KNN的思想。KNN方法既可以做分类,也可以做回归,这点和决策树算法相同。 KNN做回归和分类的主要区别在于最后做预测时候的决策方式不同。KNN做分类预测时,一般是选 择多数表决法,即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别。而KNN 做回归时,一般是选择平均法,即最近的K个样本的样本输出的平均值作为回归预测值。由于两者区别不 大,虽然本文主要是讲解KNN的分类方法,但思想对KNN的回归方法也适用。由于scikit-learn里只使 用了蛮力实现(brute-force) , KD树实现(KDTree)和球树(BallTree)实现,本文只讨论这几种算法的实现原 理。 1. KNN算法三要素 KNN算法我们主要要考虑三个重要的要素,对于固定的训练集,只要这三点确定了,算法的预测方式 也就决定了。这三个最终的要素是k值的选取,距离度量的方式和分类决策规那么。 对于分类决策规那么,一般都是使用前面提到的多数表决法。所以我们重点是关注与k值的选择和距离 的度量方式。 对于k值的选择,没有一个固定的经验,一般根据样本的分布,选择一个较小的值,可以通过交叉验 证选择一个合适的k值。 选择较小的k值,就相当于用较小的领域中的训练实例进行预测,训练误差会减小,只有与输入实例 较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是泛化误差会增大,换句话说,K值 的减小就意味着整体模型变得复杂,容易发生过拟合; 选择较大的k值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少泛化误差,但缺点 是训练误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误, 且K值的增大就意味着整体的模型变得简单。 一个极端是k等于样本数m ,那么完全没有分类,此时无论输入实例是什么,都只是简单的预测它属于 在训练实例中最多的类,模型过于简单。 对于距离的度量,我们有很多的距离度量方式,但是最常用的是欧式距离,即对于两个n维向量x和 y,两者的欧式距离定义为: D(x,y) =-%产 小=1 大多数情况下,欧式距离可以满足我们的需求,我们不需要再去操心距离的度量。 当然我们也可以用他的距离度量方式。比方曼哈顿距离,定义为: D(x,y)=分出 --i=l 更加通用点,比方闵可夫斯基距离(Minkowski Distance),定义为: 3 .涉及核心内容 自定义scoring的使用1.自定义评价函数评价函数的输入是实际的label(y_true)和模型的输出label(y_pred)def my_custom_loss_func(y_true, y_pred): f f f :param yjtriie:实际 label :param y_pred:预测的 label:return: ,,, r2 =().5* r2_score(y_true,y_pred) return r22.scoring函数的制作 通过greater_is_better参数设定scoring的值的优化方向通过greater_is_better参数设定scoring的值的优化方向”’score 二 make_scorer(my_custom_loss_func, greater_is_bettei -1rue) from sklearn.datasets import load_bostonfrom sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScalerimport numpy as npfrom sklearn.neighbors import KNeighborsRegressorfrom sklearn.model_selection import GridSearchCV from sklearn.metrics import r2_score,mean_absolute_error.mean_squared_error,make_scorerdel search_best_param(clf,X,y,param_base,param_grid,scoring=r2): clf.set_params(**param_base) gs = GridSearchCV(estimator=clf,param_gricl=param_g

文档评论(0)

贤阅论文信息咨询 + 关注
官方认证
服务提供商

在线教育信息咨询,在线互联网信息咨询,在线期刊论文指导

认证主体成都贤阅网络信息科技有限公司
IP属地四川
统一社会信用代码/组织机构代码
91510104MA68KRKR65

1亿VIP精品文档

相关文档