换道
import numpy as np
import pandas as pd
import random
f=pd.read_csv("./CL_train41.csv")
ff=pd.read_csv("./trajectories-0750.csv")
f
f=f.rename(columns={'Preceeding':'Preceding'})
num1=int(len(f)/41)
id_max=max(ff.Vehicle_ID.values)
time_point=0
point_list=[]
for i in range(num1):
point_list.append(time_point+41*i)
point_list
f1=f.iloc[point_list]
f2=f1[['Vehicle_ID','Preceding','Following']].values
index=[]
for i in range(num1):
if f2[i][1]>id_max or f2[i][2]>id_max:
index.append(i)
index_row=[]
for i in index:
index_row.extend(a for a in range(i*41,i*41+41))
f=f.drop(index_row)
f=f.reset_index(drop=True)
f.Vehicle_ID=f.Vehicle_ID.astype('object')
f.Preceding=f.Preceding.astype('object')
f.Following=f.Following.astype('object')
f=f.astype('object')
f
num2=int(len(f)/41)
point_list2=[]
for i in range(num2):
point_list2.append(time_point+41*i)
f3=f.iloc[point_list2]
f4=f3[['Vehicle_ID','Frame_ID','Preceding','Following']].values
f4
row41=[]
for i in range(num2):
row41.append(41*i+40)
df=f.drop(row41)
df=df.reset_index(drop=True)
df
pd41=f.loc[row41]
pd41
aim_lane=pd41.Lane_ID.values
aim_lane
aim_lane_list=[]
for i in aim_lane:
for a in range(40):
aim_lane_list.append(i)
aim_lane_list
aim_lane_data=pd.DataFrame(data=aim_lane_list,columns={'aim_lane'})
aim_lane_data
df_new=pd.concat([df,aim_lane_data],axis=1)
df_new
def choose_frame(arr):
Pre = pd.DataFrame(columns=['Vehicle_ID','Frame_ID','Total_Frames','Global_Time','Local_X','Local_Y','Global_X','Global_Y','v_Length','v_Width','v_Class','v_Vel','v_Acc','Lane_ID','Preceding','Following','Space_Headway','Time_Headway'])
Fol = pd.DataFrame(columns=['Vehicle_ID','Frame_ID','Total_Frames','Global_Time','Local_X','Local_Y','Global_X','Global_Y','v_Length','v_Width','v_Class','v_Vel','v_Acc','Lane_ID','Preceding','Following','Space_Headway','Time_Headway'])
shape=np.shape(arr)
for i in range(shape[0]):
a=ff[ff.Vehicle_ID.isin([arr[i][2]])]
b=a[a.Frame_ID.isin([arr[i][1]])]
b['Vehicle_ID1']=arr[i][0]
c=ff[ff.Vehicle_ID.isin([arr[i][3]])]
d=c[c.Frame_ID.isin([arr[i][1]])]
d['Vehicle_ID1']=arr[i][0]
Pre=pd.concat([Pre,b], ignore_index=True)
Fol=pd.concat([Fol,d], ignore_index=True)
return Pre,Fol
Pre1,Fol1=choose_frame(f4)
Fol1.Vehicle_ID1=Fol1.Vehicle_ID1.astype('object')
Pre1.Vehicle_ID1=Pre1.Vehicle_ID1.astype('object')
Pre1=Pre1[['Vehicle_ID','Frame_ID','Local_X','Local_Y','v_Vel','Vehicle_ID1']]
Fol1=Fol1[['Vehicle_ID','Frame_ID','Local_X','Local_Y','v_Vel','Vehicle_ID1']]
Pre1.columns=['Preceding','Frame_ID','Pre1_Local_X','Pre1_Local_Y','Pre1_v_Vel','Vehicle_ID']
Fol1.columns=['Following','Frame_ID','Fol1_Local_X','Fol1_Local_Y','Fol1_v_Vel','Vehicle_ID']
pd1=pd.merge(df_new,Pre1, how='left', on=['Frame_ID','Preceding','Vehicle_ID'])
pd2=pd.merge(pd1,Fol1, how='left', on=['Frame_ID','Following','Vehicle_ID'])
pd3=pd2.dropna(axis=0,how='any')
pd2
pd3
useful_pd=pd3[['Vehicle_ID','Frame_ID','Local_X','Local_Y','v_Vel','Lane_ID','aim_lane']]
useful_list=useful_pd.values
useful_pd
useful_list
def NB(arr):
shape=np.shape(arr)
Pre2=[]
Fol2=[]
prev2=[]
folv2=[]
for i in range(shape[0]):
x=[]
y=[]
v_pre=[]
v_fol=[]
a=ff[ff.Frame_ID.isin([arr[i][1]])]
b=a[a.Lane_ID.isin([arr[i][6]])]
c=b.Local_Y.values
vc=b.v_Vel.values
for valuey in range(len(c)):
d=c[valuey]-arr[i][3]
vd=vc[valuey]-arr[i][4]
if d>0:
x.append(d)
v_pre.append(vd)
if d<0:
y.append(d)
v_fol.append(vd)
if x!=[]:
pre_x=np.min(x)
vx_index=x.index(pre_x)
pre_v=v_pre[vx_index]
else:
pre_x=100
pre_v=40
if y!=[]:
fol_y=np.max(y)
vy_index=y.index(fol_y)
fol_v=v_fol[vy_index]
else:
fol_y=-100
fol_v=5
Pre2.append(pre_x)
prev2.append(pre_v)
Fol2.append(fol_y)
folv2.append(fol_v)
return Pre2,Fol2,prev2,folv2
Pre2,Fol2,prev2,folv2=NB(useful_list)
Pr2=pd.DataFrame(columns=['y3'], data =Pre2)
Fo2=pd.DataFrame(columns=['y4'], data =Fol2)
v3=pd.DataFrame(columns=['v3'], data =prev2)
v4=pd.DataFrame(columns=['v4'], data =folv2)
pd4=pd3[['Local_Y','Pre1_Local_Y','Fol1_Local_Y','v_Vel','Pre1_v_Vel','Fol1_v_Vel']]
y_list=pd4.Local_Y.values
y1_list=pd4.Pre1_Local_Y.values
y2_list=pd4.Fol1_Local_Y.values
v_list=pd4.v_Vel.values
v1_list=pd4.Pre1_v_Vel.values
v2_list=pd4.Fol1_v_Vel.values
y1=y1_list-y_list
y2=y2_list-y_list
v1=v_list-v1_list
v2=v_list-v2_list
Pr1=pd.DataFrame(columns=['y1'], data =y1)
Fo1=pd.DataFrame(columns=['y2'], data =y2)
pre_v=pd.DataFrame(columns=['v1'], data =v1)
fol_v=pd.DataFrame(columns=['v2'], data =v2)
pd5=pd3[['Vehicle_ID','Frame_ID']]
pd5=pd5.reset_index(drop=True)
pd6=pd.concat([pd5,pre_v,fol_v,v3,v4,Pr1,Fo1,Pr2,Fo2],axis=1)
pd6
pd6['label']=1
pd6
pd6.to_csv("./biandao_new.csv",index=0)
直行
import numpy as np
import pandas as pd
import random
f=pd.read_csv("./KL_train40.csv")
ff=pd.read_csv("./trajectories-0750.csv")
f
f=f.rename(columns={'Preceeding':'Preceding'})
num1=int(len(f)/40)
id_max=max(ff.Vehicle_ID.values)
time_point=0
point_list=[]
for i in range(num1):
point_list.append(time_point+40*i)
point_list
f1=f.iloc[point_list]
f2=f1[['Vehicle_ID','Preceding','Following']].values
index=[]
for i in range(num1):
if f2[i][1]>id_max or f2[i][2]>id_max:
index.append(i)
index_row=[]
for i in index:
index_row.extend(a for a in range(i*40,i*40+40))
f=f.drop(index_row)
f=f.reset_index(drop=True)
f.Vehicle_ID=f.Vehicle_ID.astype('object')
f.Preceding=f.Preceding.astype('object')
f.Following=f.Following.astype('object')
f=f.astype('object')
f
num2=int(len(f)/40)
point_list2=[]
for i in range(num2):
point_list2.append(time_point+40*i)
f3=f.iloc[point_list2]
f4=f3[['Vehicle_ID','Frame_ID','Preceding','Following']].values
f4
def choose_frame(arr):
Pre = pd.DataFrame(columns=['Vehicle_ID','Frame_ID','Total_Frames','Global_Time','Local_X','Local_Y','Global_X','Global_Y','v_Length','v_Width','v_Class','v_Vel','v_Acc','Lane_ID','Preceding','Following','Space_Headway','Time_Headway'])
Fol = pd.DataFrame(columns=['Vehicle_ID','Frame_ID','Total_Frames','Global_Time','Local_X','Local_Y','Global_X','Global_Y','v_Length','v_Width','v_Class','v_Vel','v_Acc','Lane_ID','Preceding','Following','Space_Headway','Time_Headway'])
shape=np.shape(arr)
for i in range(shape[0]):
a=ff[ff.Vehicle_ID.isin([arr[i][2]])]
b=a[a.Frame_ID.isin([arr[i][1]])]
b['Vehicle_ID1']=arr[i][0]
c=ff[ff.Vehicle_ID.isin([arr[i][3]])]
d=c[c.Frame_ID.isin([arr[i][1]])]
d['Vehicle_ID1']=arr[i][0]
Pre=pd.concat([Pre,b], ignore_index=True)
Fol=pd.concat([Fol,d], ignore_index=True)
return Pre,Fol
Pre1,Fol1=choose_frame(f4)
Fol1.Vehicle_ID1=Fol1.Vehicle_ID1.astype('object')
Pre1.Vehicle_ID1=Pre1.Vehicle_ID1.astype('object')
Pre1
Pre1=Pre1[['Vehicle_ID','Frame_ID','Local_X','Local_Y','v_Vel','Vehicle_ID1']]
Fol1=Fol1[['Vehicle_ID','Frame_ID','Local_X','Local_Y','v_Vel','Vehicle_ID1']]
Pre1.columns=['Preceding','Frame_ID','Pre1_Local_X','Pre1_Local_Y','Pre1_v_Vel','Vehicle_ID']
Fol1.columns=['Following','Frame_ID','Fol1_Local_X','Fol1_Local_Y','Fol1_v_Vel','Vehicle_ID']
Pre1
pd1=pd.merge(f,Pre1, how='left', on=['Frame_ID','Preceding','Vehicle_ID'])
pd2=pd.merge(pd1,Fol1, how='left', on=['Frame_ID','Following','Vehicle_ID'])
pd3=pd2.dropna(axis=0,how='any')
pd3
useful_pd=pd3[['Vehicle_ID','Frame_ID','Local_X','Local_Y','v_Vel','Lane_ID']]
useful_list=useful_pd.values
useful_pd
useful_list
def NB(arr):
shape=np.shape(arr)
Pre2=[]
Fol2=[]
prev2=[]
folv2=[]
for i in range(shape[0]):
x=[]
y=[]
v_pre=[]
v_fol=[]
a=ff[ff.Frame_ID.isin([arr[i][1]])]
if arr[i][5]==1:
b=a[a.Lane_ID.isin([2])]
else:
b=a[a.Lane_ID.isin([arr[i][5]-1])]
c=b.Local_Y.values
vc=b.v_Vel.values
for valuey in range(len(c)):
d=c[valuey]-arr[i][3]
vd=vc[valuey]-arr[i][4]
if d>0:
x.append(d)
v_pre.append(vd)
if d<0:
y.append(d)
v_fol.append(vd)
if x!=[]:
pre_x=np.min(x)
vx_index=x.index(pre_x)
pre_v=v_pre[vx_index]
else:
pre_x=100
pre_v=40
if y!=[]:
fol_y=np.max(y)
vy_index=y.index(fol_y)
fol_v=v_fol[vy_index]
else:
fol_y=-100
fol_v=5
Pre2.append(pre_x)
prev2.append(pre_v)
Fol2.append(fol_y)
folv2.append(fol_v)
return Pre2,Fol2,prev2,folv2
np.shape(useful_list)
Pre2,Fol2,prev2,folv2=NB(useful_list)
np.shape(Pre2)
Pre2
Fol2
Pr2=pd.DataFrame(columns=['y3'], data =Pre2)
Fo2=pd.DataFrame(columns=['y4'], data =Fol2)
v3=pd.DataFrame(columns=['v3'], data =prev2)
v4=pd.DataFrame(columns=['v4'], data =folv2)
v3
pd4=pd3[['Local_Y','Pre1_Local_Y','Fol1_Local_Y','v_Vel','Pre1_v_Vel','Fol1_v_Vel']]
pd4
y_list=pd4.Local_Y.values
y1_list=pd4.Pre1_Local_Y.values
y2_list=pd4.Fol1_Local_Y.values
v_list=pd4.v_Vel.values
v1_list=pd4.Pre1_v_Vel.values
v2_list=pd4.Fol1_v_Vel.values
y1=y1_list-y_list
y2=y2_list-y_list
v1=v_list-v1_list
v2=v_list-v2_list
Pr1=pd.DataFrame(columns=['y1'], data =y1)
Fo1=pd.DataFrame(columns=['y2'], data =y2)
pre_v=pd.DataFrame(columns=['v1'], data =v1)
fol_v=pd.DataFrame(columns=['v2'], data =v2)
pd5=pd3[['Vehicle_ID','Frame_ID']]
pd5=pd5.reset_index(drop=True)
pd6=pd.concat([pd5,pre_v,fol_v,v3,v4,Pr1,Fo1,Pr2,Fo2],axis=1)
pd6
pd6['label']=0
pd6
pd6.to_csv("./zhixing_new.csv",index=0)
变道和直行数据合并得到最终的结果数据
import numpy as np
import pandas as pd
import random
f1=pd.read_csv("./Doubel_label.csv")
f2=pd.read_csv("./zhixing_new.csv")
f3=pd.read_csv("./biandao_new.csv")
f1=f1.rename(columns={'label':'label1'})
f1
pd2=pd.concat([f2,f3])
pd2.to_csv('./v1-y4_new.csv',index=0)
pd2
pd3=pd.merge(f1,pd2, how='left', on=['Frame_ID','Vehicle_ID'])
pd3
pd4=pd3.dropna()
pd4.label=pd4.label.astype('object')
pd5=pd4.reset_index(drop=True)
pd5
pd5.to_csv("./result11.csv",index=0)