机器学习实战之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的Flask框架中构建Web表单的教程
Jun 04 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
Centos部署django服务nginx+uwsgi的方法
Jan 02 Python
pandas 层次化索引的实现方法
Jul 06 Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 Python
Python3 翻转二叉树的实现
Sep 30 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 Python
简单了解python关键字global nonlocal区别
Sep 21 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 include的妙用,实现路径加密
2008/07/29 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
Python中用于计算对数的log()方法
2015/05/15 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
Python常见字典内建函数用法示例
2018/05/14 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
详解python调用cmd命令三种方法
2019/07/08 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
sort命令的作用和用法
2012/11/04 面试题
暑假实习求职信范文
2013/09/22 职场文书
网游商务专员求职信
2013/10/15 职场文书
关于安全的演讲稿
2014/05/09 职场文书
售后服务承诺书模板
2014/05/21 职场文书
学校食堂标语
2014/10/06 职场文书
工作年限证明模板
2014/11/01 职场文书
实习计划书范文
2015/01/16 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
分享Python异步爬取知乎热榜
2022/04/12 Python