关于可视化:

《机器学习实战》书中的一个小错误,P22的datingTestSet.txt这个文件,根据网上的源代码,应该选择datingTestSet2.txt这个文件。主要的区别是最后的标签,作者原来使用字符串‘veryLike’作为标签,但是Python转换会出现ValueError: invalid literal for int() with base 10: 'largeDoses'的错误。所以改成后面的文件就可以了。后面直接用1 2 3 代表not like, general like, very like。这个错误一开始用百度查不到,改用Google(反向代理),第二个链接就是。哎。。。国内啊。。。

  1. from numpy import *
  2. import operator
  3. #创建数据集
  4. def createDataSet():
  5. group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
  6. labels = ['A', 'A', 'B', 'B']
  7. return group, labels
  8. #根据输入测试实例进行k-近邻分类
  9. def classify0(inX, dataSet, labels, k):
  10. dataSetSize = dataSet.shape[0]
  11. diffMat = tile(inX, (dataSetSize, 1)) - dataSet
  12. sqDiffMat = diffMat ** 2
  13. sqDistances = sqDiffMat.sum(axis=1)
  14. distances = sqDistances**0.5
  15. sortedDistIndicies = distances.argsort()
  16. classCount = {}
  17. for i in range(k):
  18. voteIlabel = labels[sortedDistIndicies[i]]
  19. classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
  20. sortedClassCount = sorted(classCount.iteritems(), key = operator.itemgetter(1), reverse=True)
  21. return sortedClassCount[0][0]
  22. #处理输入格式问题,从文件中读取数据
  23. def file2matrix(filename, dim2):
  24. fr = open(filename)
  25. arrayOLines = fr.readlines()
  26. numberOfLines = len(arrayOLines)
  27. returnMat = zeros((numberOfLines, dim2))
  28. classLabelVector = []
  29. index = 0
  30. for line in arrayOLines:
  31. line = line.strip()
  32. listFromLine = line.split('\t')
  33. returnMat[index, :] = listFromLine[0:dim2]
  34. classLabelVector.append(int(listFromLine[-1]))
  35. index += 1
  36. return returnMat, classLabelVector
  1. >>>import kNN
  2. >>> reload(kNN)
  3. <module 'kNN' from 'kNN.pyc'>
  4. >>> datingDataMat, datingLabels = kNN.file2matrix('datingTestSet2.txt', 3)

得到了约会网站的数据之后,我们可以可视化出来。

利用Matplotlib创建散点图,python(x, y)内嵌这个,直接import即可。

  1. >>> mimport matplotlib.pyplot as plt
  2. >>> fig = plt.figure()
  3. >>> ax = fig.add_subplot(111) >>> ax.scatter(datingDataMat[:,1], datingDataMat[:,2])
  4. >>> plt.show()

这个是“玩视频游戏消耗时间比”和“每周所消费的冰淇淋公升数”的二维图。

需要不同的颜色来得到更好的可视化效果。

scatter函数的使用。

  1. ax.scatter(datingDataMat[:,1], datingDataMat[:, 2], 15.0*array(datingLabels), 15.0*array(datingLabels))

这句代码替换前面的对应代码,如果出现name 'array' is not defined ,请在前面加这句:

  1. from numpy import *

下面是青色,暗红色,黑色三种点,是利用了15 * datingLabels的1, 2, 3作为不同点的颜色和尺寸。

机器学习实战之k-近邻算法(3)---如何可视化数据的更多相关文章

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

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

  2. 机器学习实战笔记--k近邻算法

    #encoding:utf-8 from numpy import * import operator import matplotlib import matplotlib.pyplot as pl ...

  3. 《机器学习实战》——K近邻算法

    三要素:距离度量.k值选择.分类决策 原理: (1) 输入点A,输入已知分类的数据集data (2) 求A与数据集中每个点的距离,归一化,并排序,选择距离最近的前K个点 (3) K个点进行投票,票数最 ...

  4. 《机器学习实战》-k近邻算法

    目录 K-近邻算法 k-近邻算法概述 解析和导入数据 使用 Python 导入数据 实施 kNN 分类算法 测试分类器 使用 k-近邻算法改进约会网站的配对效果 收集数据 准备数据:使用 Python ...

  5. 机器学习实战python3 K近邻(KNN)算法实现

    台大机器技法跟基石都看完了,但是没有编程一直,现在打算结合周志华的<机器学习>,撸一遍机器学习实战, 原书是python2 的,但是本人感觉python3更好用一些,所以打算用python ...

  6. 机器学习03:K近邻算法

    本文来自同步博客. P.S. 不知道怎么显示数学公式以及排版文章.所以如果觉得文章下面格式乱的话请自行跳转到上述链接.后续我将不再对数学公式进行截图,毕竟行内公式截图的话排版会很乱.看原博客地址会有更 ...

  7. 机器学习随笔01 - k近邻算法

    算法名称: k近邻算法 (kNN: k-Nearest Neighbor) 问题提出: 根据已有对象的归类数据,给新对象(事物)归类. 核心思想: 将对象分解为特征,因为对象的特征决定了事对象的分类. ...

  8. 机器学习 Python实践-K近邻算法

    机器学习K近邻算法的实现主要是参考<机器学习实战>这本书. 一.K近邻(KNN)算法 K最近邻(k-Nearest Neighbour,KNN)分类算法,理解的思路是:如果一个样本在特征空 ...

  9. 机器学习:1.K近邻算法

    1.简单案例:预测男女,根据身高,体重,鞋码 import numpy as np import matplotlib import sklearn from skleran.neighbors im ...

  10. 机器学习实战笔记-2-kNN近邻算法

    # k-近邻算法(kNN) 本质是(提取样本集中特征最相似数据(最近邻)的k个分类标签). K-近邻算法的优缺点 例 优点:精度高,对异常值不敏感,无数据输入假定: 缺点:计算复杂度高,空间复杂度高: ...

随机推荐

  1. 一些关于Hibernate延迟加载的误区

    最近面试别人,正好出的笔试题中有道关于Hibernate延迟加载的问题,聊天过程中发现很多人对Hibernate的延迟加载有些理解误区,写 些东东在这里,希望对大家有所帮助. 首先是第一个误区:延迟加 ...

  2. 利用VS2015自带的报表制作报表

    我用的是VSEnterprise2015 注意:如果要用VS自带的报表,就需要在安装Microsoft SQL Server Data Tools 下面讲讲具体步骤: 1.添加winform界面 2. ...

  3. “瑞士军刀”Netcat使用方法总结

    前言 最近在做渗透测试的时候遇到了端口监听和shell的反弹问题,在这个过程中自己对Netcat这一款神器有了新的认识,现将一些Netcat的用法做一个小总结,希望对各位有帮助! Netcat简介 N ...

  4. C 遍历目录及其子目录

    遍历某一目录,获取该目录下所有文件路径的数组 #include <iostream> #include <dirent.h> #include <vector> v ...

  5. 透视jvm之垃圾回收

    JVM是JAVA世界的核心,了解它有助于我们更好调试,调优和开发程序,最近散仙在看JAVA特种兵一书,看完觉得,作者写的内容还是挺不错,大家感兴趣的,也可以购买本温故而知新下. 在JVM中,我们经常提 ...

  6. QVaraint类

    一.QVaraint简介     QVaraint类作为一个包含了大多数Qt普通类型的的联合体类.因为c++联合体没有构造函数和析构函数的,许多继承的Qt类不能够在联合体当中使用.(联合体当中的变量共 ...

  7. css---3链接伪类与动态伪类

    链接伪类link:表示作为超链接,并指向一个未访问的地址的所有锚 链接伪类不可以加在div上 <!DOCTYPE html> <html> <head> <m ...

  8. Jsp Layout 布局页

    本文章仅用于知识记录 /WEB-INF/tags/layout.tag <%@ tag language="java" pageEncoding="UTF-8&qu ...

  9. 「题解」:[AHOI2013]作业

    问题: 作业 时间限制: 10 Sec  内存限制: 512 MB 题面 题目描述 此时己是凌晨两点,刚刚做了Codeforces的小A掏出了英语试卷.英语作业其实不算多,一个小时刚好可以做完.然后是 ...

  10. DuiLib学习笔记1.编译运行demo

    c++中皮肤问题比较麻烦,MFC自带的太难用.DirectUI界面库就比较强大了,之前像skin++之类的基于DirectUI收费昂贵.DuiLib是基于DirectUI的界面库,可以将用户界面和处理 ...