(1)k-近邻算法是分类数据最简单最有效的方法。
(2)在将数据输入到分类器之前,必须将待处理数据的格式改变为分类器可以接受的格式。
(3)所有的推荐模型都可以使用这个算法,只要将结果量化就行了,主要是要考虑权重的设计。
# -*- coding:utf-8 -*-
#数字型聚类分析

from numpy import *
import operator

def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group,labels

group,labels = createDataSet() #这里的group不能直接用,需要这样子返回参数

def classify0(inX,dataSet,labels,k):
dataSetSize = dataSet.shape[0] #shape[0]就是读取矩阵第一维度的长度
diffMat = tile(inX,(dataSetSize,1)) - dataSet
#>>> tile(1,2) >>>array([1, 1])
#
>>> tile((1,2,3),3) >>>array([1, 2, 3, 1, 2, 3, 1, 2, 3])
    sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1) #我们平时用的sum应该是默认的axis=0 就是普通的相加,而当加入axis=1以后就是将一个矩阵的每一行向量相加
    distances = sqDistances**0.5
sortedDistIndicies = distances.argsort() #排序


classCount={} #classCount={} 这是一个dict,用于存储不同标签出现的次数;
    for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0)+1
sortedClassCount = sorted(classCount.iteritems(),
key=operator.itemgetter(1),reverse=True)
return sortedClassCount[0][0]

classify0([0,0],group,labels,3)

【python】kNN基础算法--分类和推荐系统的更多相关文章

  1. 【python】kNN基础算法--推荐系统

    虽然把text转成全部量化是可以的,但是还是需要把text转成numpy的形式(这个是必须掌握的) 在将数据输入到分类器之前,必须将待处理数据的格式改变为分类器可以接受的格式. 数据规范化.数据归一化 ...

  2. 【python】kNN基础算法--推荐系统(辅助研究)

    # -*- coding:utf-8 -*- # import numpy as np #import numpy 和from numpy import *是不一样的 # # # import num ...

  3. poj和hdu部分基础算法分类及难度排序

    最近想从头开始刷点基础些的题,正好有个网站有关于各大oj的题目分类(http://www.pythontip.com/acm/problemCategory),所以写了点脚本把hdu和poj的一些题目 ...

  4. Python之基础算法介绍

    一.算法介绍 1. 算法是什么 算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输 ...

  5. python函数基础算法简介

    一.多层语法糖本质 """ 语法糖会将紧挨着的被装饰对象名字当参数自动传入装饰器函数中""" def outter(func_name): ...

  6. Python机器学习基础教程-第1章-鸢尾花的例子KNN

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  7. kNN算法:K最近邻(kNN,k-NearestNeighbor)分类算法

    一.KNN算法概述 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它 ...

  8. 数学建模:2.监督学习--分类分析- KNN最邻近分类算法

    1.分类分析 分类(Classification)指的是从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类的分析方法. 分类问题的应用场景:分 ...

  9. Opencv学习之路—Opencv下基于HOG特征的KNN算法分类训练

    在计算机视觉研究当中,HOG算法和LBP算法算是基础算法,但是却十分重要.后期很多图像特征提取的算法都是基于HOG和LBP,所以了解和掌握HOG,是学习计算机视觉的前提和基础. HOG算法的原理很多资 ...

随机推荐

  1. 计算机电子书 2020 CDNDrive 备份(预览版)

    下载方式 pip install CDNDrive # 或 # pip install git+https://github.com/apachecn/CDNDrive cdrive download ...

  2. 最长公共子序列-LIS

    题目描述 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个长为\(n\)的序列,求它的最长上升子序列的长度. 输入格式 输入第一行包含一个整数\(n\). 第二行包含\(n\)个整数\ ...

  3. CF1581

    其实是手速场,但因为 \(\rm D, E\) 数据范围时限太阴间卡住了. D \(\rm Hint:\) 本题常数极小加适当剪枝可以 \(\mathcal{O}(n ^ 5)\) 过 \(100\) ...

  4. HTTP消息头(HTTP headers)-HTTP请求头与HTTP响应头

    感谢大佬:https://itbilu.com/other/relate/E1T0q4EIe.html HTTP协议将传输的信息分隔为两部分:HTTP信息头.HTTP信息体.通过HTTP头信息,使客户 ...

  5. IDEA:修改JAVA文件自动引入import.*包

    感谢大佬:https://blog.csdn.net/fly910905/article/details/90208744 问题描述 Intellij Idea工具在java文件中,经常会自动导入im ...

  6. Netty入门使用教程

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11827026.html 本文介绍Netty的使用, 结合我本人的一些理解和操作来快速的让初学者 ...

  7. Shell条件练习题

    Shell条件练习题 目录 Shell条件练习题 1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限 2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的 ...

  8. latex知识点

    sensors期刊下载的laTex模板错误修改 把上面的那个删了,原因是什么那,请看下文...... 如何使用endnote + latex 1.使用word将文献按照word引用顺序导出成一个新的e ...

  9. LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说明

    目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说 ...

  10. ios开发 Rsa签名 base64转码

    因为公司要求做了一个加密  网上的资料少有可用的  于是我看到了一位大神的曙光 但是未介绍使用方法 然后另一位大神给予了使用方法 但是没有把库给出来   我整理了一下  希望大家看的有些启发 证书生成 ...