KNN回归在无线定位上的应用
来源:互联网 发布:樱井知香喷泉 编辑:程序博客网 时间:2024/06/05 16:44
KNN回归在无线定位上的应用
Python KNN 无线定位 回归
1.KNN无线指纹定位代码
#coding:utf-8import randomimport math# 提取训练集与测试集数据def extracted_data(): trainingSet=[] label=[] testSet=[] test_label=[] file_1=open("train1.csv","r") for line in file_1: data=line.split(",") train_label=[float(i) for i in data[-2:]] train_features=[float(i) for i in data[0:-2]] #该数据为已经处理过的数据 trainingSet.append(train_features) label.append(train_label) file_1.close() file_2=open("test1.csv","r") for line in file_2: data=line.split(",") testlabel=[float(i) for i in data[-2:]] testfeatures=[float(i) for i in data[0:-2]] #该数据为已经处理过的数据 testSet.append(testfeatures) test_label.append(testlabel) file_2.close() print'len train:',len(trainingSet),'len test:',len(testSet) print'len train1:',len(trainingSet[0]),'len test1:',len(test_label[0]) return trainingSet,label,testSet,test_labeldef euclideanDistance(instance1, instance2, length): distance = 0 #对应AP作差 for x in range(length): distance += pow(float(instance1[x] - instance2[x]), 2) return math.sqrt(distance)#求出最近的几个邻居点def Neighbors(trainingSet, testInstance, k): distances = [] label_ID=[] #生成训练数据集个数的序号label_ID=0,1,2,3,4,5,6,7.。。。。。。。 for ii in range(len(trainingSet)): label_ID.append(ii) length = len(testInstance)-1 #此处的length是代表函数 euclideanDistance内部的pow(float(instance1[x] - instance2[x])数组标号x, #遍历testInstance与trainingSet每个案例的欧式距离,所得距离值存入distances for x in range(len(trainingSet)): dist = euclideanDistance(testInstance, trainingSet[x], length) distances.append(dist) # for i in range(len(trainingSet)): # print("distance: ",distances[i],"labelID",label_ID[i],"i",i) #对distances进行冒泡升值排序,同时把对应的序号label_ID进行相应排序(训练集的顺序 是 固定的) for ii in range(len(trainingSet)-1): for jj in range(len(trainingSet)-ii-1): if distances[jj]>distances[jj+1]: distances[jj],distances[jj+1]=distances[jj+1],distances[jj] label_ID[jj],label_ID[jj+1]=label_ID[jj+1],label_ID[jj] #将最近的k个邻居样本存下来,上面的代码已经进行了排序因此最近的 就是 最前面的k个 neighbors = [] for x in range(k): neighbors.append(label_ID[x]) return neighborsdef Result(neighbors,label): length=len(neighbors) result_x=0 result_y=0 for i in range(length): result_x=result_x+label[neighbors[i]][0] result_y=result_y+label[neighbors[i]][1] # print("neb;",neighbors[i],"label:",label[neighbors[i]]) result_x=result_x/length result_y=result_y/length return result_x,result_ydef Accuracy(predictions_x,predictions_y,test_label): accuracy=0.0 for i in range(len(predictions_x)): accuracy+=math.sqrt(float((predictions_x[i]-test_label[i][0])**2)+float((predictions_y[i]-test_label[i][1])**2)) # print 'accuracy',accuracy/len(predictions_x) return accuracy/len(predictions_x)if __name__=='__main__': trainingSet,label,testSet,test_label=extracted_data() predictions_x=[] predictions_y=[] k = 3 for x in range(len(testSet)): neighbors = Neighbors(trainingSet, testSet[x], k) result_x,result_y=Result(neighbors,label) # print"result_x: ",result_x,"result_y:",result_y predictions_x.append(result_x) predictions_y.append(result_y) accuracy = Accuracy(predictions_x,predictions_y,test_label) print"x",x," accuracy:",accuracy,"result_x: ",result_x,"result_y:",result_y
、
阅读全文
0 0
- KNN回归在无线定位上的应用
- kNN在CIFAR10上的应用
- 【西瓜书】线性回归在回归,二分类,多分类问题上的应用与推导
- 车载卫星定位系统在交通运输业上的应用
- 机器学习:决策树cart算法在分类与回归的应用(上)
- SBC音频编解码算法在无线音频传输上的简单应用
- 决策树 逻辑回归 KNN 的原理
- KNN-用于回归的python实现
- 无线传感器网络在军事的应用
- LoRa模块在无线抄表上的应用
- 基于WiFi的室内定位在美团总部的实践与应用(上)
- 基于Wi-Fi的室内定位在美团总部的实践和应用(上)
- 基于Wi-Fi的室内定位在美团总部的实践和应用(上)
- 基于Wi-Fi的室内定位在美团总部的实践和应用(上)
- 基于余弦相似性的指纹匹配算法在WIFI室内定位上的应用
- 卫星定位导航系统在军事上的应用(摘中国3S人才网)
- 蓝牙4.0BLE之iBeacon 在ios上的应用-室内定位 [原创,多图,视频]
- 视觉定位系统在机器人全场定位的应用
- 课时20 Linux命令行文本处理工具
- 业余时间决定了你的人生
- Zemax中序列模式与非序列模式的区别
- 域名解析
- LINUX系统移植(史上最全最细,强烈推荐)
- KNN回归在无线定位上的应用
- iOS 一一 AutoLayout之XIB实现
- VSS、VDD 与 VCC 的区别
- SleepConditionVariableSRW线程最佳同步实现
- 爬虫第一天:环境配置
- HDU
- Piggy-Bank (完全背包 动态规划)
- 在window下 安装vue.js
- Python中list的extend方法