背景介绍:
使用监督学习,利用在位置上获取wifi列表的强度,来预测当前所处的房间。是一个多分类的监督学习例子。
数据准备:
locating_data.csv 用来训练的数据
locating_test.csv 用来测试预测结果准确率
准备了一份wifi强度
的数据,同时打上了area(区域数据), shanghai(上海房),zhuhai(珠海房), man(男厕), women(女厕)标签。
也就是将室内分为四个房间的数据和四个房间以外的数据。
工具准备: Jupyter Notebook
- 数据读取与处理
1
2
3
4
5
6
7
8
9
10
11#引入包
import pandas as pd
# 设置输出所有的变量
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
#读取数据
train_data = pd.read_csv('conver_locating_data.csv')
test_data = pd.read_csv('conver_locating_result.csv')
train_data = train_data.fillna(0) #将空值进行填充为0
test_data = test_data.fillna(0) #测试数据做相同处理
train_data.head() #输出查看结果
- 提取
特征
,13个wifi的强度
作为训练的特性
1 | train_x = train_data[['wifi1','wifi2','wifi4','wifi5','wifi6','wifi7','wifi8','wifi9','wifi10','wifi11','wifi12','wifi13']] |
- 使用
sklearn
的多分类算法进行训练
1 | from sklearn.multiclass import OutputCodeClassifier |
- 将测试数据输入进行预测结果
1 | preds = clf.predict(test_x) |
- 计算结果
正确率
,将准备好的正确结果test_y和预测到的结果preds,进行计算
1 | from sklearn.metrics import accuracy_score |
- 将预测结果以
csv格式导出
1 | submission = pd.DataFrame({ |
以上是一个简单的监督学习的例子,使用13个wifi的强度进行位置的预测。
作者: Jessy Hong