机器学习实战之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动态网页批量爬取
Feb 14 Python
基于python socketserver框架全面解析
Sep 21 Python
python之Character string(实例讲解)
Sep 25 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
对Python中plt的画图函数详解
Nov 07 Python
python如何获取当前文件夹下所有文件名详解
Jan 25 Python
python多线程并发实例及其优化
Jun 27 Python
Python模块的制作方法实例分析
Dec 21 Python
pytorch 自定义参数不更新方式
Jan 06 Python
Python pip 常用命令汇总
Oct 19 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 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程序之die调试法 快速解决错误
2009/09/17 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
js使用ajax读博客rss示例
2014/05/06 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
python编写分类决策树的代码
2017/12/21 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
2016/03/22 HTML / CSS
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
美国精油公司:Plant Therapy
2019/05/17 全球购物
竞选班干部演讲稿100字
2014/08/20 职场文书
应急管理工作总结2015
2015/05/04 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python
JavaScript原型链详解
2021/11/07 Javascript
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL