葡萄牙波尔图市出租车分析KNN分类部分

在前面对数据用Mean-Shift方法对样本数据的轨迹进行了聚类后,这一步将用KNN方法按K=1对数据进行训练和预测,样本数据接近10w条,我们按9:1选取训练数据和测试数据,其中,对于所有数据进行标签的过程在excel中已经完成。

from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn.externals import joblib
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
import matplotlib.pyplot as plt 
import os 
import pandas as pd
import datetime 
import xlrd
import csv
import random 
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
os.chdir(r'E:\CDA培训\CDA项目数据\葡萄牙波尔图市出租车分析')
df=pd.read_csv('6_KNN_sample_0.001.csv')  #查看我们在excel里处理完后的数据形式
df.head()

在这里插入图片描述

df.info()

在这里插入图片描述

#GPS用10个点来预测
X_train_10=np.array([np.array(eval(i)).flatten() for i in df.loc[:90000,'GPS_10']])
Y_train_10=np.array([i for i in df.loc[:90000,'label']])
print(X_train_10.shape)
print(Y_train_10.shape)

在这里插入图片描述

X_test_10=np.array([np.array(eval(i)).flatten() for i in df.loc[90000:,'GPS_10']])
Y_test_10=np.array([i for i in df.loc[90000:,'label']])
print(X_test_10.shape)
print(Y_test_10.shape)

在这里插入图片描述

#调用KNN算法对训练数据进行训练
knn_10= KNeighborsClassifier(n_neighbors = 1)
knn_10.fit(X_train_10, Y_train_10)

在这里插入图片描述

#用测试样本进行预测
predict_10=knn_10.predict(X_test_10)
print(predict_10)

在这里插入图片描述

score_10=knn_10.score(X_test_10, Y_test_10)
print(score_10) #打印出预测结果

在这里插入图片描述
注意:这里的预测精度不高,很大程度是由于在对终点进行聚类时选取的Mean-Shift带宽过小造成的(Bandwidth=0.001),当我们把Bandwidth调整为0.005时,预测的精度上升到89%左右。下图是我们使用不同的带宽和不同GPS点预测后的结果,另外,具体成果展示将在下一步ppt展示中阐述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值