主页 M

监督学习实例:室内定位

2019-01-14 网页编程网 网页编程网

背景介绍

使用监督学习,利用在位置上获取wifi列表的强度,来预测当前所处的房间。是一个多分类的监督学习例子。

数据准备

locating_data.csv 用来训练的数据

locating_test.csv 用来测试预测结果准确率,在本网站页脚软件下载中下载此二csv文件。

准备了一份wifi强度的数据,同时打上了area(区域数据), shanghai(上海房),zhuhai(珠海房), man(男厕), women(女厕)标签。

也就是将室内分为四个房间的数据和四个房间以外的数据。

工具准备:Jupyter Notebook

a数据读取与处理

#引入包
import pandas as pd
# 设置输出所有的变量
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
#读取数据
train_data = pd.read_csv('locating_data.csv')
test_data = pd.read_csv('locating_test.csv')
train_data = train_data.fillna(0) #将空值进行填充为0
test_data = test_data.fillna(0)  #测试数据做相同处理
train_data.head() #输出查看结果
监督学习

b提取特征,13个wifi的强度作为训练的特性

train_x = train_data[['wifi1','wifi2','wifi4','wifi5','wifi6','wifi7','wifi8','wifi9','wifi10','wifi11','wifi12','wifi13']]
train_y = train_data['result']
# test data
test_x = test_data[['wifi1','wifi2','wifi4','wifi5','wifi6','wifi7','wifi8','wifi9','wifi10','wifi11','wifi12','wifi13']]
test_y = test_data['result']
train_x.head(2)
train_y.head(2)
监督学习

c使用sklearn的多分类算法进行训练

from sklearn.multiclass import OutputCodeClassifier
from sklearn.svm import LinearSVC
clf = OutputCodeClassifier(LinearSVC(random_state=0),
                          code_size=2, random_state=0)
clf.fit(train_x,train_y); #喂入训练输入和输出数据

d将测试数据输入进行预测结果

preds = clf.predict(test_x)
preds.head()

e计算结果正确率,将准备好的正确结果test_y和预测到的结果preds,进行计算

from sklearn.metrics import accuracy_score
score = accuracy_score(test_y, preds)
print(score)
监督学习

f将预测结果以csv格式导出

submission = pd.DataFrame({
    'label': preds
})
submission.to_csv('predit_result.csv', index=False)

以上是一个简单的监督学习的例子,使用13个wifi的强度进行位置的预测。

阅读原文
阅读 4162
123 显示电脑版