//2019.08.02下午
#机器学习算法中的超参数与模型参数
1、超参数:是指机器学习算法运行之前需要指定的参数,是指对于不同机器学习算法属性的决定参数。通常来说,人们所说的调参就是指调节超参数。
2、模型参数:是指算法在使用过程中需要学习得到的参数,即输入与输出之间映射函数中的参数,它需要通过对于训练数据集训练之后才可以得到。
3、对于KNN算法,它是没有模型参数的,它的k参数就属于典型的超参数。


4、好的超参数的选择主要取决于三个方面:
(1)领域知识
(2)经验数值
(3)实验搜索
5、K近邻算法常用的三大超参数:k、weights=("uniform","distance")以及在weights=distance的情况下p参数。


6、K近邻算法超参数调节寻找最优的方法:网络搜索方式举例如下:
#对于KNN算法寻找最佳的超参数k的值以及另外一个超参数weights=uniform/distances,以及在distance的情况下选择出最佳的超参数p的值的大小:
import numpy as np
import matplotlib.pyplot as plt #导入相应的数据可视化模块

#根据训练得到模型的准确率来进行寻找最佳超参数k肯weights
best_method=""
best_score=0.0    
best_k=0
s=[]          #初始定义所需要寻找的超参数
from sklearn.neighbors import KNeighborsClassifier
for method in ["uniform","distance"]:
    for k in range(1,11):              #采用for循环来进行寻找最优的超参数
    KNN=KNeighborsClassifier(n_neighbors=k,weights=method)
    KNN.fit(x_train,y_train) #进行原始数据的训练
    score=KNN.score(x_test,y_test) #直接输出相应的准确度
    s.append(score)
    if score>best_score:
        best_score=score
        best_k=k
        best_method=method        
#数据验证
print("best_method=",best_method)
print("best_k=",best_k)
print("best_score=",best_score)
plt.figure(2)
x=[i for i in range(1,21)]
plt.plot(x,s,"r")
plt.show()

#根据训练得到模型的准确率来进行寻找最佳超参数k以及在weights=distance的情况下寻找最优的参数p
best_p=0
best_score=0.0
best_k=0
s=[]                   #初始化超参数
from sklearn.neighbors import KNeighborsClassifier
for k in range(1,11):
     for p in range(1,6):
     KNN=KNeighborsClassifier(n_neighbors=k,weights="distance",p=p)
     KNN.fit(x_train,y_train) #进行原始数据的训练
     score=KNN.score(x_test,y_test) #直接输出相应的准确度
     s.append(score)
    if score>best_score:
       best_score=score #利用网络搜索方式来寻找最高准确率下的最佳超参数
       best_k=k
       best_p=p
#数据验证
print("best_p=",best_p)
print("best_k=",best_k)
print("best_score=",best_score)
plt.figure(2)
s1=[]
x=[i for i in range(1,6)]
for i in range(1,11):
   s1=s[(i*5-5):(5*i)]
   plt.plot(x,s1,label=i)
   plt.legend(loc=2)
plt.show()

输出结果如下所示:(不同的k和p参数情况下的准确度输出结果)

k-近邻算法采用for循环调参方法的更多相关文章

  1. 1.K近邻算法

    (一)K近邻算法基础 K近邻(KNN)算法优点 思想极度简单 应用数学知识少(近乎为0) 效果好 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 图解K近邻算法 上图是以 ...

  2. <转>从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

    转自 http://blog.csdn.net/likika2012/article/details/39619687 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章待写:1.KD树:2.神经 ...

  3. 从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

    转载自:http://blog.csdn.net/v_july_v/article/details/8203674/ 从K近邻算法.距离度量谈到KD树.SIFT+BBF算法 前言 前两日,在微博上说: ...

  4. 【机器学习】k近邻算法(kNN)

    一.写在前面 本系列是对之前机器学习笔记的一个总结,这里只针对最基础的经典机器学习算法,对其本身的要点进行笔记总结,具体到算法的详细过程可以参见其他参考资料和书籍,这里顺便推荐一下Machine Le ...

  5. 02机器学习实战之K近邻算法

    第2章 k-近邻算法 KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法是一种基本分类与回归方法,我们这里只讨论分类问题中的 k-近邻算法. 一句话总结:近朱者赤近墨者黑! k ...

  6. 2.在约会网站上使用k近邻算法

    在约会网站上使用k近邻算法 思路步骤: 1. 收集数据:提供文本文件.2. 准备数据:使用Python解析文本文件.3. 分析数据:使用Matplotlib画二维扩散图.4. 训练算法:此步骤不适用于 ...

  7. 第4章 最基础的分类算法-k近邻算法

    思想极度简单 应用数学知识少 效果好(缺点?) 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 distances = [] for x_train in X_train ...

  8. 基本分类方法——KNN(K近邻)算法

    在这篇文章 http://www.cnblogs.com/charlesblc/p/6193867.html 讲SVM的过程中,提到了KNN算法.有点熟悉,上网一查,居然就是K近邻算法,机器学习的入门 ...

  9. 从K近邻算法谈到KD树、SIFT+BBF算法

    转自 http://blog.csdn.net/v_july_v/article/details/8203674 ,感谢july的辛勤劳动 前言 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章 ...

随机推荐

  1. 在自定义的widget中引入图表后,运行时出现TypeError #1009错误

    本人网上查找了很多资料,其中大部分都是关于Flash中的动画效果问题,与这里的问题关系型不太大.故把问题的解决方法写在这里,与人方便,与己方便. 方法一: 1.在自定义的widget中添加如下两个方法 ...

  2. 堆(c++)

    5分钟速成堆 FBI⚠WARNING 本文要素过多 吐槽 堆是我迄今为止学过最简单的数据结构 我还没学会最小生成树.最短路时就学会了 堆实用高效,值得推荐 (如果你看完了这篇文章还不会,你可以直接Co ...

  3. wc、grep 、 cut、paste 和 tr 命令的用法

    1 wc 命令 wc 命令是一个统计的工具,主要用来显示文件所包含的行.字和字节数. wc 命令是 word count 的缩写. (1)命令格式 wc [选项] [文件] (2)常用参数 参数 描述 ...

  4. VS release模式下进行调试设置

    工程项目上右键 打开 属性界面 1.c++ ---  常规 ---- 调试信息格式 选  程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi) 2.c/c++ ---- 优化 ---- ...

  5. SpringMVC——SSM整合

    1.环境要求: IDEA MySQL 5.1.19 Tomcat 9 Maven 3.6.1 2.数据库环境搭建 创建一个存放书籍的数据库表 CREATE DATABASE `ssmbuild`; U ...

  6. c数据结构链式存储

    #include "stdafx.h" #include "stdio.h" #include "string.h" #include &q ...

  7. DRF项目之序列化器和视图重写方法的区别

    我们,都知道,DRF框架是一款高度封装的框架. 我们可以通过重写一些方法来实现自定义的功能. 今天,就来说说在视图中重写和序列化器中重写方法的区别. 在视图中重写方法: 接收请求,处理数据(业务逻辑) ...

  8. Entity Framework Migrations 数据迁移

    在使用Entity Framework 过程中,经常会遇到需要变更model 的状况,此时可以使用Migrations ,将每次变更记录以便后续更换机器或是运行在生产环境,持久层可保持一致. 在Pac ...

  9. 利用kali自带的msfvenom工具生成远程控制软件(木马)

    2.生成一个简单的木马 3. 4. 5. 6.接下来生成的winx64muma.exe实际演示 7.将生成的winx64muma.exe在受害者机器上运行 8.在kali下输入msfconsole 9 ...

  10. 使用forin循环时的注意事项

    由于遍历的对象为nil,从而导致的现象是里面的循环体根本就没有执行,并且编译器和运行期都不会报错.因为,OC语法是运行向nil发送消息的. for (WSFActivitySelectSpaceCel ...