机器学习sklearn之KNN的实现_sklearn实现knn_朴素.无恙的博客-程序员宅基地

技术标签: knn评价指标  sklearn  Machine Learning  

机器学习之KNN的实现

本片文章主要写了针对一个csv数据,目标是对其数据进行分类,怎样用knn实现
在此问题中将该问题分为三个步骤:

  1. 数据处理:对csv数据进行处理做出适合knn的数据集,包括划分测试集及训练集
  2. 数据拟合:对数据集数据进行拟合
  3. 数据预测及评价指标:对所训练得到的结果进行预测以及评价
  • 数据处理

  • 本实例中的数据集如下图所示:
    在这里插入图片描述
    第一列为数据集的标签,第一行为数据集的title,首先要做的处理是将数据集的数据以及标签提取出来。即特征与标签类别

     # -*- coding: utf-8 -*-
     """
     Created on Tue Nov 27 17:47:44 2018
     
     @author: Administrator
     """
     
     import csv
     
     
     from sklearn import neighbors
     
     knn = neighbors.KNeighborsClassifier()#(n_neighbors=10)
     from numpy import genfromtxt
     a = open('list.csv', 'r+')
     reader = csv.reader(a)#按行读取内容
     headers = next(reader)#打印出为title那行
     print(headers)
    

在这里插入图片描述
该title第一列为数字序列,后七列为特征名称,其次是提取标签以及数据

    dataPath = r"list.csv"
    featureList = genfromtxt(dataPath, skip_header=1,delimiter=',',usecols=(1,2,3,4,5,6,7))
    #转化为txt,[genfromtxt用法](https://blog.csdn.net/weixin_40123108/article/details/84531460)得到后7列数据
    labelList = genfromtxt(dataPath, skip_header=1,delimiter=',',usecols=(0))#得到标签
    
    x= featureList[:]
    print(len(x))
    #print (x)
    #print ("labelList")
    y = labelList[:]
    #print (y)

划分数据集及训练集

    from sklearn.model_selection import train_test_split#分割数据集
    X_train, X_test, y_train, y_test = train_test_split(
        x, y, test_size=0.25)

    print(X_train.shape)
    print(X_test.shape)

在这里插入图片描述
**

  • 数据拟合

**
knn = neighbors.KNeighborsClassifier()#(n_neighbors=10)knn参数用法
knn.fit(X_train,y_train)

**

  • 数据预测及评价指标

**

    y_predict = knn.predict(X_test) 
     #调用该对象的测试方法,主要接收一个参数:测试数据集
    probility=knn.predict_proba(X_test)  
     #计算各测试样本基于概率的预测

    score=knn.score(X_test,y_test,sample_weight=None)
    #调用该对象的打分方法,计算出准确率
    
    print('y_predict = ')  
    print(y_predict)  
    #输出测试的结果
    
    print('y_test = ')
    print(y_test)    
    #输出原始测试数据集的正确标签,以方便对比
    print ('Accuracy:',score ) 
    #输出准确率计算结果
    print ('probility:',probility)

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40123108/article/details/84573746

智能推荐

Algorithm_程序员椰子橙的博客-程序员宅基地

基本原理: n&(n-1)作用:将n的二进制表示中的最低位为1的改为0,先看一个简单的例子: n = 10100(二进制),则(n-1) = 10011 ==》n&(n-1) = 10000 可以看到原本最低位为1的那位变为0。请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%...

SpringMVC与Spring的父子容器关系_weixin_34185320的博客-程序员宅基地

问题:在整合框架的时候有人也许会产生一个问题:能不能只配置一个扫描包加载实现类的扫描驱动,即在根目录下扫描所有的注解(@Controller、@Service、@Repository、@Compnent),如这样配置:<!-- 扫描加载所有的被注解的对象 --><context:component-scan base-package="com"></con...

AWS——扩展linux根目录_aws 扩容根_有始无终_Sun的博客-程序员宅基地

需求:创建一个centos6.5镜像,镜像根目录40g问题描述: 使用aws社区ami(镜像),创建的镜像根目录只有5g,且不是lvm分区,不符合要求,或者存在30g的镜像,但不是纯净版解决过程: 1.扩展磁盘,在aws中新建实例时,将根目录扩展为40g 2.进入实例,查看实例状态 --> 根目录仍为5g[root@ip_aws 扩容根

hadoop+zookeeper高可用_西北西北!!的博客-程序员宅基地

实验所需主机环境确保server1-5都安装好jpk和hadoop创建用户[root@server1 ~]# useradd -u 1000 hadoop[root@server1 ~]# passwd hadoop安装配置##切换到hadoop用户解压安装包[root@server1 ~]# mv hadoop-3.0.3.tar.gz jdk-8u181-linux-x64.t...

webpack vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin_付出总会有收获的博客-程序员宅基地

npm run dev 报以下错误:webpack vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin解决方案(官方):现在你需要一个插件Vue Loader v15 现在需要配合一个 webpack 插件才能正确使用:// webpack.con...

Axure长页面滚动拖动制作_axure滚动页面怎么做-程序员宅基地

关于Axure的长页面制作_axure滚动页面怎么做

随便推点

Android Studio 解决Could not resolve com.android.tools.build:gradle:7.4.2问题_Alex老夫子的博客-程序员宅基地

昨天用老版本的Android Studio 新建了一个Kotlin项目,. 之类的提示没有,应该是环境问题,就升级了Android Studio到最新的电鳗版本,新建kotlin项目就报上述错误。好了,又可以愉快的玩耍了。

UNIX环境高级编程-文件I/O_int open (const char *__path, int __oflag,_hixiaoxiaoniao的博客-程序员宅基地

相关api列表#include &lt;fcntl.h&gt; int open(const char *path, int oflag, /* mode_t mode */ ); int openat(int fd, const char *path, int oflag, /* mode_t mode */ ); //返回文件描述符 STDIN_FILENO ..._int open (const char *__path, int __oflag,

springboot2.0.4对接redis3.2.12版本哨兵模式-程序员宅基地

redis 哨兵模式的创建1. 下载redis3.2.12版本。https://codeload.github.com/antirez/redis/zip/3.2.122. 解压后放到/usr/local/src/目录下面。3. 拷贝三份 cp -R redis-3.2.13 redis1,cp -R redis-3.2.13 redis2,cp -R redis-3.2.13 r...

理解js的事件循环Event Loop_范天缘的博客-程序员宅基地

前端业务或者面试中经常会碰见js的执行先后顺序,里面的坑很多,这时候就是在考察你有没有理解事件循环了那么什么是事件循环Event Loop呢?因为js是单进程的,所以有了异步,同步异步出现后就有了事件执行的先后顺序简单说,就是在程序中设置两个线程:一个负责程序本身的运行,称为"主线程";另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被称为"Event Loop线程"(可以译为"消息线程")。异步分为宏任务和微任务宏任务:整体的Script setTimeout setInterval

STM32代码移植_../../../../../pios/stm32f4xx/libraries/stm32f4xx__CodeForCoffee的博客-程序员宅基地

注意这里的两个目录:UserStdPeriph_Driver也就是工程目录下的这里../User把被文件夹中的文件放到移植文件夹中的这里../Libraries../Libraries/STM32F4xx_StdPeriph_Driver/src同样把被文件夹中的文件放到移植文件夹中的这里最后在Keil中的Add existing files里把相关文件添加一下即可..._../../../../../pios/stm32f4xx/libraries/stm32f4xx_stdperiph_driver/src/stm32

推荐文章

热门文章

相关标签