1. #准备数据:归一化数值
  2. def autoNorm(dataSet): #autoNorm()函数可以自动将数字特征值转换为0到1的区间
  3. minVals = dataSet.min(0)
  4. maxVals = dataSet.max(0) #ddataSet.max(0)中的参数0使得函数可以从列中选取最小值
  5. ranges = maxVals - minVals
  6. normDataSet = zeros(shape(dataSet))
  7. m = dataSet.shape[0]
  8. #newValue = (oldValue-min)/(max-min),该公式可以将任意取值范围的特征值转换为0到1区间内的值
  9. #tile()函数将变量内容复制成输入矩阵同样大小的矩阵(具体特征值相除)
  10. #在numpy库中,矩阵除法需要使用函数linalg.solve(matA,matB)
  11. normDataSet = dataSet - tile(minVals, (m,1))
  12. normDataSet = normDataSet/tile(ranges, (m,1))
  13. return normDataSet, ranges, minVals

运行结果:

  1. >>>normMat, ranges, minVals = kNN.autoNorm(datingDataMat)
  2. >>>normMat
  3. array([[1., 1., 1.],
  4. [0., 0., 0.],
  5. [0., 0., 0.],
  6. ...,
  7. [0., 0., 0.],
  8. [0., 0., 0.],
  9. [0., 0., 0.]])
  10. >>>ranges
  11. array([4.092000e+04, 8.326976e+00, 9.539520e-01])
  12. >>>minVals
  13. array([0., 0., 0.])

出现的错误:

  1. >>>normMat, ranges, minVals = kNN.autoNorm(datingDataMat)
  2. Traceback (most recent call last):
  3. File "<input>", line 1, in <module>
  4. NameError: name 'kNN' is not defined
  5.  
  6. >>>normMat, ranges, minVals = kNN.autoNorm(datingDataMat)
  7. Traceback (most recent call last):
  8. File "<input>", line 1, in <module>
  9. AttributeError: module 'kNN' has no attribute 'autoNorm'

解决办法:

  个人解决办法:重启PyCharm,运行kNN.py,重新完整的输入运行命令,问题就解决了

  1. >>>from numpy import *
  2. >>>random.rand(4,4)
  3. >>>randMat = mat(random.rand(4,4))
  4. >>>randMat.I
  5. >>>invRandMat = randMat.I
  6. >>>myEye = randMat*invRandMat
  7. >>>myEye - eye(4)
  8. >>>group,labels = kNN.createDataSet()
  9. >>>group
  10. >>>labels
  11. >>>kNN.classify0([0,0], group, labels, 3)
  12. >>>datingDataMat,datingLabels = kNN.file2matrix('datingTestSet.txt')
  13. >>>datingDataMat
  14. >>>datingLabels[0:16]
  15. >>>import matplotlib
  16. >>>import matplotlib.pyplot as plt
  17. >>>fig = plt.figure()
  18. >>>ax = fig.add_subplot(111)
  19. >>>ax.scatter(datingDataMat[:,1], datingDataMat[:,2])
  20. >>>plt.show()
  21. >>>normMat, ranges, minVals = kNN.autoNorm(datingDataMat)
  22. >>>normMat
  23. array([[1., 1., 1.],
  24. [0., 0., 0.],
  25. [0., 0., 0.],
  26. ...,
  27. [0., 0., 0.],
  28. [0., 0., 0.],
  29. [0., 0., 0.]])
  30. >>>ranges
  31. array([4.092000e+04, 8.326976e+00, 9.539520e-01])
  32. >>>minVals
  33. array([0., 0., 0.])

k-近邻算法(kNN)准备数据:归一化数值的更多相关文章

  1. k近邻算法(KNN)

    k近邻算法(KNN) 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. from sklearn.model_selection ...

  2. 机器学习(四) 分类算法--K近邻算法 KNN (上)

    一.K近邻算法基础 KNN------- K近邻算法--------K-Nearest Neighbors 思想极度简单 应用数学知识少 (近乎为零) 效果好(缺点?) 可以解释机器学习算法使用过程中 ...

  3. 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!

    1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...

  4. 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)

    六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocess ...

  5. k近邻算法(knn)的c语言实现

    最近在看knn算法,顺便敲敲代码. knn属于数据挖掘的分类算法.基本思想是在距离空间里,如果一个样本的最接近的k个邻居里,绝大多数属于某个类别,则该样本也属于这个类别.俗话叫,"随大流&q ...

  6. 《机器学习实战》---第二章 k近邻算法 kNN

    下面的代码是在python3中运行, # -*- coding: utf-8 -*- """ Created on Tue Jul 3 17:29:27 2018 @au ...

  7. 最基础的分类算法-k近邻算法 kNN简介及Jupyter基础实现及Python实现

    k-Nearest Neighbors简介 对于该图来说,x轴对应的是肿瘤的大小,y轴对应的是时间,蓝色样本表示恶性肿瘤,红色样本表示良性肿瘤,我们先假设k=3,这个k先不考虑怎么得到,先假设这个k是 ...

  8. 07.k近邻算法kNN

    1.将数据分为测试数据和预测数据 2.数据分为data和target,data是矩阵,target是向量 3.将每条data(向量)绘制在坐标系中,就得到了一系列的点 4.根据每条data的targe ...

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

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

  10. 机器学习(1)——K近邻算法

    KNN的函数写法 import numpy as np from math import sqrt from collections import Counter def KNN_classify(k ...

随机推荐

  1. 理解CSS中position的各个值

    static position的默认值,没有定位,元素在normal flow中: fixed 相对于浏览器左上角定位: relative 相对定位元素,其位置根据其在normal flow中的位置来 ...

  2. 小程序页面间传值(处理传值为对象,简单传值直接用options.XX的形式获取)

    bookgoods:function(){ var Json = JSON.stringify(this.data.goods) wx.navigateTo({ url: '/pages/bookgo ...

  3. 实验吧 Web的WriteUp

    每次看别人的Writeup都有一种感觉,为什么有了WriteUp我还是不会,每次都打击自己的积极性,所以自己尝试写一篇每个萌新都能看懂的Writeup. 0x01 天下武功唯快不破 题目提示 : 看看 ...

  4. Vmware 15 新建虚拟机黑屏

    win10 的磁盘大小设置60的倍数 centos 使用 40g

  5. MySQL 基准测试

    这是<高性能 MySQL(第三版)>第二章的读书笔记. 基准测试(benchmark)是针对系统的压力测试,用于掌握系统行为或重新系统的某个状态.sysbench 是常用的 MySQL 基 ...

  6. iframe父窗口和子窗口的调用方法

    iframe 父窗口和子窗口的调用方法父窗口调用子窗口 iframe_name.iframe_document_object.object_attribute = attribute_value 例子 ...

  7. 阻塞进程函数 wait()和waitpid()

    1.  wait()和waitpid()函数说明 wait() 进程一旦调用了wait(), 就立即阻塞自己,由wait自动分析是否有当前进程的某个子进程已经退出,如果让它找到了一个已经变成僵尸的子进 ...

  8. HTML5--sessionStorage、localStorage、manifest

    sessionStroage: <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  9. Hibernate入门2

    实体类的编写规则 要求实体类的属性是私有的 要求实体类中的私有属性有公开的get和set方法(设置器和访问器) 要求实体类有一个属性作为唯一值(一般使用id值) 实体类属性建议不使用基本数据类型,使用 ...

  10. inclusion_tag 基本使用

    inclusion_tag的用途 inclusion_tag可以实现从后台往前端传递绑定数据的样式,一般用来动态显示模板页面中显示固定格式的数据. inclusion_tag的用法 step1: 编写 ...