机器学习实战之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的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
分享几道你可能遇到的python面试题
Jul 24 Python
python逆向入门教程
Jan 15 Python
python验证码识别教程之滑动验证码
Jun 04 Python
python random从集合中随机选择元素的方法
Jan 23 Python
python 一个figure上显示多个图像的实例
Jul 08 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
Python xlrd模块导入过程及常用操作
Jun 10 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
Dec 16 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
js Event对象的5种坐标
2011/09/12 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
Vue组件中slot的用法
2018/01/30 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
Python 中的with关键字使用详解
2016/09/11 Python
深入理解python中的atexit模块
2017/03/07 Python
关于python3中setup.py小概念解析
2019/08/22 Python
DIY手工制作经营店创业计划书
2014/02/01 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
环境卫生标语
2014/06/09 职场文书
学前教育专业求职信
2014/09/02 职场文书
六五普法心得体会2016
2016/01/21 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
mysql的Buffer Pool存储及原理
2022/04/02 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL