机器学习实战之knn算法pandas


Posted in Python onJune 22, 2019

机器学习实战之knn算法pandas,供大家参考,具体内容如下

开始学习机器学习实战这本书,打算看完了再回头看 周志华的 机器学习。机器学习实战的代码都是用numpy写的,有些麻烦,所以考虑用pandas来实现代码,也能回顾之前学的 用python进行数据分析。感觉目前章节的测试方法太渣,留着以后学了更多再回头写。

# coding: gbk
import pandas as pd
import numpy as np


def getdata(path):
 data = pd.read_csv(path, header=None, sep='\t')
 character = data.iloc[:, :-1]
 label = data.iloc[:, -1]
 chara_max = character.max()
 chara_min = character.min()
 chara_range = chara_max - chara_min
 normal_chara = (character - chara_min) / chara_range
 return normal_chara, label # 获得归一化特征值和标记


def knn(inX, normal_chara, label, k):
 data_sub = normal_chara - inX
 data_square = data_sub.applymap(np.square)
 data_sum = data_square.sum(axis=1)
 data_sqrt = data_sum.map(np.sqrt)
 dis_sort = data_sqrt.argsort()
 k_label = label[dis_sort[:k]]
 label_sort = k_label.value_counts()
 res_label = label_sort.index[0]
 return res_label # knn算法分类

小编为大家分享一段代码:机器学习--KNN基本实现

# _*_ coding _*_
import numpy as np
import math
import operator
 
def get_data(dataset):
 x = dataset[:,:-1].astype(np.float)
 y = dataset[:,-1]
 return x,y
# def cal_dis(a,b):
# x1,y1 = a[:]
# x2,y2 = b[:]
# dist = math.sqrt(math.pow(2,x2)-math.pow(2,x1))
 
def knnclassifer(dataset,predict,k=3):
 x,y = get_data(dataset)
 dic = {}
 distince = np.sum((predict-x)**2,axis=1)**0.5
 sorted_dict = np.argsort(distince)#[2 1 0 3 4]
 countLabel = {}
 for i in range(k):
 label = y[sorted_dict[i]]
 # print(i,sorted_dict[i],label)
 countLabel[label] = countLabel.get(label,0)+1
 new_dic = sorted(countLabel,key=operator.itemgetter(0),reverse=True)
 return new_dic[0][0]
 
if __name__ == '__main__':
 dataset = np.loadtxt("dataset.txt",dtype=np.str,delimiter=",")
 
 predict = [2,2]
 label = knnclassifer(dataset,predict,3)
 print(label)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 算法 排序实现快速排序
Jun 05 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
分享一个简单的python读写文件脚本
Nov 25 Python
python中yaml配置文件模块的使用详解
Apr 27 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
Feb 28 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
Python竟然能剪辑视频
May 25 Python
python 命令行传参方法总结
May 25 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 #Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 #Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 #Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 #Python
十行代码使用Python写一个USB病毒
Jun 21 #Python
Python pandas DataFrame操作的实现代码
Jun 21 #Python
Python pandas.DataFrame调整列顺序及修改index名的方法
Jun 21 #Python
You might like
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
让你的网站可编辑的实现js代码
2009/10/19 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
Python查找相似单词的方法
2015/03/05 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Python数据结构之单链表详解
2017/09/12 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
18岁生日感言
2014/01/12 职场文书
法律七进实施方案
2014/03/15 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技