K最近邻算法:简单高效的分类和回归方法(三)

这篇具有很好参考价值的文章主要介绍了K最近邻算法:简单高效的分类和回归方法(三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍀引言

本节以KNN算法为主,简单介绍一下训练集和测试集超参数


🍀训练集和测试集

训练集和测试集是机器学习和深度学习中常用的概念。在模型训练过程中,通常将数据集划分为训练集和测试集,用于训练和评估模型的性能。

训练集是用于模型训练的数据集合。模型通过对训练集中的样本进行学习和参数调整来提高自身的预测能力。训练集应该尽可能包含各种不同的样本,以使模型能够学习到数据集中的模式和规律,并能够适应新的数据。

测试集是用于评估模型性能的数据集合。模型训练完成后,使用测试集中的样本进行预测,并与真实标签进行对比,以评估模型的精度、准确度和其他性能指标。测试集应该与训练集相互独立,以确保对模型的泛化能力进行准确评估。

一般来说,训练集和测试集的划分比例是80:20或者70:30。有时候还会引入验证集,用于在训练过程中调整模型的超参数。训练集、验证集和测试集是机器学习中常用的数据集拆分方式,以确保模型的准确性和泛化能力。

接下来我们回顾一下KNN算法的简单原理,选取离待预测最近的k个点,再使用投票进行预测结果

from sklearn.neighbors import KNeighborsClassifier
knn_clf = KNeighborsClassifier()
from sklearn.datasets import load_iris  # 因为我们并没有数据集,所以从库里面调出来一个
iris = load_iris()
X = iris.data
y = iris.target
knn_clf.fit(X,y)
knn_clf.predict()

那么我们如何评价KNN模型的好坏呢?

这里我们将数据集分为两部分,一部分为训练集,一部分为测试集,因为这里的训练集和测试集都是有y的,所以我们只需要将训练集进行训练,然后产生的模型应用到测试集,再将预测的y和原本的y进行对比,这样就可以了

接下来进行简易代码演示讲解

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

我们可以把y打印出来看看
K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习
这里我们不妨思考一下,如果训练集和测试集是8:2的话,测试集的y岂不是都是2了,那么还有啥子意义,所以我们需要将其打乱一下下,当然我们这里打乱的是index也就是下标,可不要自以为是的将y打乱了

import numpy as np
indexs = np.random.permutation(len(X))

导入必要的库后,我们将数据集下标进行打乱并保存于indexs中,接下来迎来重头戏分割数据集

test_ratio = 0.2
test_size = int(len(X) * test_ratio)
test_indexs = shuffle_indexs[:test_size] # 测试集
train_indexs = shuffle_indexs[test_size:] # 训练集

不信的小伙伴可以使用如下代码进行检验

test_indexs.shape
train_indexs.shape

K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习
接下来将打乱的下标进行分别赋值

X_train = X[train_indexs]
y_train = y[train_indexs]
X_test = X[test_indexs]
y_test = y[test_indexs]

分割好数据集后,我们就可以使用KNN算法进行预测了

from sklearn.neighbors import KNeighborsClassifier
knn_clf = KNeighborsClassifier()
knn_clf.fit(X_train,y_train)
y_predict = knn_clf.predict(X_test)

我们这里可以打印一下y_predict和y_test进行肉眼对比一下
K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习
K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习
最后一步就是将精度求出来

np.sum(np.array(y_predict == y_test,dtype='int'))/len(X_test)

K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习


🍀sklearn中封装好的train_test_split

上面我们只是简单演示了一下,接下来我们使用官方的train_test_split

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y) # 注意这里返回四个结果

这里你可以试着看一眼,分割的比例与之前手动分割的比例大不相同
最后按部就班来就行

knn_clf = KNeighborsClassifier()
knn_clf.fit(X_train,y_train)
knn_clf.predict(X_test) 
knn_clf.score(X_test,y_test)

K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习


🍀超参数

什么是超参数,可以点击链接查看

在pycharm中我们可以查看一些参数
K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习

接下来通过简单的演示来介绍一下

from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
knn_clf = KNeighborsClassifier(weights='distance') 
from sklearn.model_selection import train_test_split
iris = load_iris()
X = iris.data
y = iris.target
X_train,X_test,y_train,y_test = train_test_split(X,y)

上面是老熟人了就不一一赘述了,但是注意这里面有个超参数(weights),这个参数有两种,一个是distance一个是uniform,前者和距离有关联,后者无关


首先测试一下n_neighbors这个参数代表的就行之前的那个k,邻近点的个数

%%time
best_k = 0
best_score = 0.0
best_clf = None
for k in range(1,21):
    knn_clf = KNeighborsClassifier(n_neighbors=k)
    knn_clf.fit(X_train,y_train)
    score = knn_clf.score(X_test,y_test)
    if score>best_score:
        best_score = score
        best_k = k
        best_clf = knn_clf
print(best_k)
print(best_score)
print(best_clf)

K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习
测试完参数n_neighbors,我们再来试试weights

%%time
best_k = 0
best_score = 0.0
best_clf = None
best_method = None
for weight in ['uniform','distance']:
    for k in range(1,21):
        knn_clf = KNeighborsClassifier(n_neighbors=k,weights=weight)
        knn_clf.fit(X_train,y_train)
        score = knn_clf.score(X_test,y_test)
        if score>best_score:
            best_score = score
            best_k = k
            best_clf = knn_clf
            best_method = weight
print(best_k)
print(best_score)
print(best_clf)
print(best_method)

K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习
最后我们测试一下参数p

%%time
best_k = 0
best_score = 0.0
best_clf = None
best_p = None
for p in range(1,6):
    for k in range(1,21):
        knn_clf = KNeighborsClassifier(n_neighbors=k,weights='distance',p=p)
        knn_clf.fit(X_train,y_train)
        score = knn_clf.score(X_test,y_test)
        if score>best_score:
            best_score = score
            best_k = k
            best_clf = knn_clf
            best_p = p
            
print(best_k)
print(best_score)
print(best_clf)
print(best_p)

或许大家不知道这个参数p的含义,下面我根据几个公式带大家简单了解一下
K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习

K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习
K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习

三张图分别代表欧拉距离曼哈顿距离明科夫斯基距离,细心的小伙伴就可以发现了,p=1位曼哈顿距离,p=2位欧拉距离,这里不做详细的说明,感兴趣的小伙伴可以翻阅相关数学书籍

K最近邻算法:简单高效的分类和回归方法(三),机器学习,近邻算法,分类,回归,机器学习

挑战与创造都是很痛苦的,但是很充实。文章来源地址https://www.toymoban.com/news/detail-650029.html

到了这里,关于K最近邻算法:简单高效的分类和回归方法(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习算法(一): 基于逻辑回归的分类预测

    逻辑回归的介绍 逻辑回归(Logistic regression,简称LR)虽然其中带有\\\"回归\\\"两个字,但逻辑回归其实是一个 分类 模型,并且广泛应用于各个领域之中。虽然现在深度学习相对于这些传统方法更为火热,但实则这些传统方法由于其独特的优势依然广泛应用于各个领域中。 而对于

    2024年01月15日
    浏览(39)
  • 机器学习基础之《回归与聚类算法(4)—逻辑回归与二分类(分类算法)》

    一、什么是逻辑回归 1、逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛 2、叫回归,但是它是一个分类算法 二、逻辑回归的应用场

    2024年02月07日
    浏览(33)
  • 【机器学习界的“Hello World“ 】Logistic 分类回归算法 (二元分类 & 多元分类)

    🤵‍♂️ 个人主页: @计算机魔术师 👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 该文章收录专栏 ✨— 机器学习 —✨ l o g i s t i c logistic l o g i s t i c (数理逻辑)回归算法(预测 离散值 y y y 的 非常常用的学习算法 假设有如下的八个点( y = 1 或 0 ) y=1 或 0) y

    2024年02月15日
    浏览(33)
  • 【AI底层逻辑】——篇章5(上):机器学习算法之回归&分类

    目录 引入 一、何为机器学习 1、定规则和学规则 2、算法的定义

    2024年02月16日
    浏览(41)
  • 机器学习 day24(多类分类模型,Softmax回归算法及其损失函数)

    1. 多类分类 多类分类问题仍然是分类问题,所以预测y的可能结果是少量的,而不是无穷多个,且对于多类分类它>2 如上图:左侧为二分类,右侧为多分类,可以通过决策边界来划分区域 2. Softmax回归算法 对逻辑回归模型,先计算z,再计算g(z)。此时可以将逻辑回归视为计算

    2024年02月13日
    浏览(31)
  • 机器学习算法基础--逻辑回归简单处理mnist数据集项目

    目录 1.项目背景介绍 2.Mnist数据导入 3.数据标签提取且划分数据集 4.数据特征标准化 5.模型建立与训练 6.后验概率判断及预测 7.处理模型阈值及准确率 8.阈值分析的可视化绘图 9.模型精确性的评价标准

    2024年02月07日
    浏览(34)
  • 【MATLAB第56期】#源码分享 | 基于MATLAB的机器学习算法单输入多输出分类预测模型思路(回归改分类)

    针对单输入多输出分类预测,可采用回归的方式进行预测。 本文采用BP神经网络进行演示。 数据为1输入,5输出,总共482个样本。 输出分为五个指标,每个指标共4个评分维度,即【0 10 20 30】 保持样本均匀多样性,可将数据打乱。 若不需要打乱,上面代码改成: 训练样本数

    2024年02月17日
    浏览(25)
  • 机器学习-k-近邻算法

    k-近邻算法是一种常用的监督学习算法,用于分类和回归任务。其思想为:如果一个样本在特征空间中的k个最近邻居中的大多数属于某个类别,那么该样本也属于这个类别(对于分类任务)或者可以通过这些最近邻居的标签来估计其目标值(对于回归任务)。 通过计算两点之

    2024年02月09日
    浏览(26)
  • 【机器学习】机器学习创建算法第2篇:K-近邻算法【附代码文档】

    机器学习(算法篇)完整教程(附代码资料)主要内容讲述:机器学习算法课程定位、目标,K-近邻算法,1.1 K-近邻算法简介,1.2 k近邻算法api初步使用定位,目标,学习目标,1 什么是K-近邻算法,1 Scikit-learn工具介绍,2 K-近邻算法API,3 案例,4 小结。K-近邻算法,1.3 距离度量学习目标

    2024年03月15日
    浏览(41)
  • 【机器学习实战】K- 近邻算法(KNN算法)

    K-近邻算法 ,又称为  KNN 算法 ,是数据挖掘技术中原理最简单的算法。 KNN  的工作原理:给定一个已知类别标签的数据训练集,输入没有标签的新数据后,在训练数据集中找到与新数据最临近的 K 个实例。如果这 K 个实例的多数属于某个类别,那么新数据就属于这个类别。

    2023年04月20日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包