机器学习实战之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 获取进程pid号的方法
Mar 10 Python
Python中列表元素转为数字的方法分析
Jun 14 Python
Python3 replace()函数使用方法
Mar 19 Python
python二进制文件的转译详解
Jul 03 Python
Python3+Appium安装使用教程
Jul 05 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
Python中join()函数多种操作代码实例
Jan 13 Python
python实现门限回归方式
Feb 29 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
用Python的绘图库(matplotlib)绘制小波能量谱
Apr 17 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
May 31 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判断网页是否gzip压缩
2013/06/25 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
Symfony的安装和配置方法
2016/03/17 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
2020/03/11 Javascript
Python类属性的延迟计算
2016/10/22 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
python软件都是免费的吗
2020/06/18 Python
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
护理职业生涯规划书
2014/01/24 职场文书
业绩考核岗位职责
2014/02/01 职场文书
五好党支部事迹材料
2014/02/06 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL