【笔记】初探KNN算法(3)
KNN算法(3)
测试算法的目的就是为了帮助我们选择一个更好的模型
训练数据集,测试数据集方面
一般来说,我们训练得到的模型直接在真实的环境中使用
这就导致了一些问题
如果模型很差,未经改进就应用在现实环境下,那这样得到的预测结果必然是不好的,而且在真实环境中,是难以拿到真实的label(输出结果)的
因此,很明显,训练和测试同步进行是不恰当的,应该进行训练和测试数据分离,通过测试数据直接判断模型的好坏,在模型进入真实的环境中改进模型,不断的优化改进模型
先前的计算是将全部的X都当做了测试数据集

我们不能直接对其取前多少数据
因为在类别数组中,是已经排好序的数组,如果按照前多少多少来切,出来的肯定是不对的

因此我们只需要将其打乱顺序,再进行前多少多少的切片就可以了,但是由于X和y是分离的情况,是不可以分别对X和y进行随机化的,但是我们可以对索引进行乱序处理从而实现随机化
shuffle_indexes = np.random.permutation(len(X))

然后我们指定一下测试数据集的比例,设百分之20是测试数据集,因为有可能得到浮点数,因此有int来强制转换成整形
teat_ratio = 0.2
teat_size = int(len(X) * teat_ratio)

设前20%是测试数据集,后80%是训练数据集,当然,这是可以更改的

这样我们就完成了对训练数据集和测试数据集的分离

我们可以将其写入model_selection.py中
import numpy as np
def train_test_split(X, y, test_ratio=0.2, seed=None):
"""將数据X和y按照test_ratio分割成X_train, X_test, y_train, y_test"""
assert X.shape[0] == y.shape[0], \
"the size of X must be equal to the size of y"
assert 0.0 <= test_ratio <= 1.0, \
"test_ration must be valid"
if seed:
np.random.seed(seed)
shuffled_indexes = np.random.permutation(len(X))
test_size = int(len(X) * test_ratio)
test_indexes = shuffled_indexes[:test_size]
train_indexes = shuffled_indexes[test_size:]
X_train = X[train_indexes]
y_train = y[train_indexes]
X_test = X[test_indexes]
y_test = y[test_indexes]
return X_train, X_test, y_train, y_test
我们可以尝试使用使用自己的算法


对于求解预测准确率
只要将预测和测试进行比较,得出相同的数据个数,然后除以测试数据即可

sklearn中的train_test_split
train_test_split(X,y,test_size=0.2)
注意的是,不写test_size的话,默认值为0.2

如果我们想复现之前进行的拆分,那么我们就要传入一个随机的种子random_state
train_test_split(X,y,test_size=0.2,random_state=666)

【笔记】初探KNN算法(3)的更多相关文章
- 【笔记】初探KNN算法(2)
KNN算法(2) 机器学习算法封装 scikit-learn中的机器学习算法封装 在python chame中将算法写好 import numpy as np from math import sqr ...
- 【笔记】初探KNN算法(1)
KNN算法(1) 全称是K Nearest Neighbors k近邻算法: 思想简单 需要的数学知识很少 效果不错 可以解释机器学习算法使用过程中的很多细节问题 更加完整的刻画机器学习应用的流程 其 ...
- 机器学习实战(笔记)------------KNN算法
1.KNN算法 KNN算法即K-临近算法,采用测量不同特征值之间的距离的方法进行分类. 以二维情况举例: 假设一条样本含有两个特征.将这两种特征进行数值化,我们就可以假设这两种特种分别 ...
- 机器学习笔记(5) KNN算法
这篇其实应该作为机器学习的第一篇笔记的,但是在刚开始学习的时候,我还没有用博客记录笔记的打算.所以也就想到哪写到哪了. 你在网上搜索机器学习系列文章的话,大部分都是以KNN(k nearest nei ...
- kNN算法笔记
kNN算法笔记 标签(空格分隔): 机器学习 kNN是什么 kNN算法是k-NearestNeighbor算法,也就是k邻近算法.是监督学习的一种.所谓监督学习就是有训练数据,训练数据有label标好 ...
- 机器学习笔记--KNN算法2-实战部分
本文申明:本系列的所有实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. 一案例导入:玛利亚小姐最近寂寞了, ...
- 机器学习笔记--KNN算法1
前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的狐朋狗友算法---KNN算法,为什么叫狐朋狗友算法呢,在这里我先卖个关子,且听我慢慢道来. 一 K ...
- 算法学习笔记:knn理论介绍
阅读对象:了解指示函数,了解训练集.测试集的概念. 1.简介 knn算法是监督学习中分类方法的一种.所谓监督学习与非监督学习,是指训练数据是否有标注类别,若有则为监督学习,若否则为非监督学习.所谓K近 ...
- 机器学习简要笔记(三)-KNN算法
#coding:utf-8 import numpy as np import operator def classify(intX,dataSet,labels,k): ''' KNN算法 ''' ...
随机推荐
- js实现文字分割动画
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...
- .Net5 IdentityServer4下SqlServer和Mysql数据迁移
1.概念 以下概念从官网整理的,我也是看官网一步一步学习的 官网地址 https://identityserver4.readthedocs.io/en/latest/index.html 1.1 I ...
- oracle 大表在线删除列操作(alter table table_name set unused )
在某些情况下业务建的表某些列没有用到,需要进行删除,但是如果是数据量很大的大表,直接 alter table table_name drop column column_name;这种方法删除,那么将 ...
- DNS配置【正向解析】
DNS配置.正向解析 一.BIND域名服务基础 1)DNS的定义 2)域名结构 ...
- C语言:宏定义 本质及体现
- PyCharm代码区不能编辑的解决办法
问题: 修改之前的Python代码时发现代码区无法编辑,无意中输入i后又可以编辑了. 解决: 原因是打开了工具中的vim Emulator编辑模式,把vim Emulator前面的勾取消即可.
- C语言经典试题--指针
分享一道C语言的经典的题目.题目要求如下: 利用字符指针实现字符串1"I Love China"与字符串2"So do I"的输出.然后利用字符指针将字符串2的 ...
- DWA局部路径规划算法论文阅读:The Dynamic Window Approach to Collision Avoidance。
DWA(动态窗口)算法是用于局部路径规划的算法,已经在ROS中实现,在move_base堆栈中:http://wiki.ros.org/dwa_local_planner DWA算法第一次提出应该是1 ...
- PAT乙级:1082 射击比赛 (20分)
PAT乙级:1082 射击比赛 (20分) 题干 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找 ...
- Oracle19c 如何用rman duplicate 克隆一个数据库。(Backup-Based, achive log)
Oracle19c 如何用rman duplicate 克隆一个数据库.(Backup-Based, achive log) 首先克隆有两种方法,一种是Backup-Based,一种是Active方式 ...