机器学习实战之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编写生成树状结构的文件目录的脚本的教程
May 04 Python
python中引用与复制用法实例分析
Jun 04 Python
在Django的session中使用User对象的方法
Jul 23 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 Python
python绘制圆柱体的方法
Jul 02 Python
PyQt5重写QComboBox的鼠标点击事件方法
Jun 25 Python
连接pandas以及数组转pandas的方法
Jun 28 Python
Python单元测试模块doctest的具体使用
Feb 10 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
Mar 09 Python
Django跨域资源共享问题(推荐)
Mar 09 Python
Python基于time模块表示时间常用方法
Jun 18 Python
golang特有程序结构入门教程
Jun 02 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
mysq GBKl乱码
2006/11/28 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
JS前端笔试题分析
2016/12/19 Javascript
JavaScript闭包和范围实例详解
2016/12/19 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
整理Python最基本的操作字典的方法
2015/04/24 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
理工科学生的自我评价
2013/12/15 职场文书
部队学习十八大感言
2014/01/11 职场文书
政府法律服务方案
2014/06/14 职场文书
企业整改报告范文
2014/11/08 职场文书
保安2014年终工作总结
2014/12/06 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
SQL语句多表联合查询的方法示例
2022/04/18 MySQL