Лучший формат данных для статистики местоположений и прогнозов - PullRequest
0 голосов
/ 10 марта 2020

У меня есть набор данных (данные морской навигации), который включает в себя идентификатор судна, время, широту, длину, скорость и курс. Я хотел бы провести статистический анализ вместе с некоторыми ML, чтобы увидеть, как мы можем построить модель для прогнозирования будущего местоположения на основе заданных атрибутов. Я уверен, что многим людям приходилось делать это, но я не могу найти много и хочу быть уверен, что я использую лучший формат данных и тот, который оптимизирован для большого набора данных. Я ввожу данные с помощью запроса, который дает мне список диктов, а затем преобразую их в pandas фрейм данных:

  for ais_entry in ais_query:

    # data format as https://www.navcen.uscg.gov/?pageName=AISMessagesA
    ais_mmsi = str(ais_entry['properties']['attributes']['user_id'])
    ais_timestamp=ais_entry['properties']['item_date']
    ais_lon = ais_entry['geometry']['coordinates'][0] #West negative, East positive
    ais_lat = ais_entry['geometry']['coordinates'][1] #North positive, South negative

    ais_type = str(ais_entry['properties']['item_type'][1]) #Is this class A (every 2 to 10s underway or 3mins at anchor vs Class B
    ais_navstat = str(ais_entry['properties']['attributes']['nav_status_str'])
    # under way using engine, not under command, restricted maneuverability, constrained by her draught, moored, aground,
    # engaged in fishing, under way by sailing; a couple reserved, towing?
    ais_sog = convert_knots(ais_entry['properties']['attributes']['sog_knots']) #speed over ground converted to m/s
    ais_cog = ais_entry['properties']['attributes']['cog_degrees'] #course over ground degrees
    ais_true_heading = ais_entry['properties']['attributes']['true_heading'] #heading is where boat is pointed - can differ from cog due to wind/waves/currents
    ais_pos_acc = str(ais_entry['properties']['attributes']['position_accuracy']) #low < 10m, high > 10m
    ais_rot = ais_entry['properties']['attributes']['rot']
    # 0 to +126 turning right at up to 708 deg per min; 0 to -128 turning left

ais_data.append([ais_mmsi,ais_timestamp,ais_lon,ais_lat,ais_type,ais_navstat, 
   ais_sog, ais_cog, ais_true_heading, ais_pos_acc, ais_rot])

   df = pd.DataFrame(ais_data)

Насколько я могу судить, мне придется добавить много строк с исходное время и местоположение и все последующие (отсортированные по времени) времена, широты и долготы. Это позволит мне вычислить прогнозируемое местоположение и увидеть ошибку в истинном местоположении. Например, у меня будет:

   row1, t1, lat1, lon1, t2, lat2, lon2, lat_Calc12, lon_Calc12
   row2, t1, lat1, lon1, t3, lat3, lon3, lat_Calc13, lon_Calc13
   row3, t2, lat2, lon2, t3, lat3, lon3, lat_Calc23, lon_Calc23

для каждой записи, которая связана с одним и тем же идентификатором / сегментом.

Набор данных станет очень большим, и единственный способ, которым я смогу Подумайте, чтобы сделать это, чтобы перебрать кадр данных, который, я знаю, осуждается. Есть еще идеи Pythoni c? Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...