paint-brush
Flighty Uygulaması Artık Uçuş Gecikmelerini Tahmin Edebiliyor: Makine Öğrenimini Kullanarak Bunu Nasıl Yapabileceğinizi Öğreninile@kisican
430 okumalar
430 okumalar

Flighty Uygulaması Artık Uçuş Gecikmelerini Tahmin Edebiliyor: Makine Öğrenimini Kullanarak Bunu Nasıl Yapabileceğinizi Öğrenin

ile Can Kisi6m2024/08/13
Read on Terminal Reader

Çok uzun; Okumak

Flighty artık gecikmelerin ardındaki kesin nedeni belirleyebilir. Gecikmenin en büyük iki nedenini belirleyebilir: geç uçak ve hava sahası sorunları. Ayrıca kullanıcılara havayollarından önce gecikmeler hakkında önceden uyarı verecektir. Bu tür tahmin modelleri, havayollarının operasyonları optimize etmesine, yolcu memnuniyetini artırmasına ve operasyonel maliyetleri düşürmesine yardımcı olmakta önemli olabilir.
featured image - Flighty Uygulaması Artık Uçuş Gecikmelerini Tahmin Edebiliyor: Makine Öğrenimini Kullanarak Bunu Nasıl Yapabileceğinizi Öğrenin
Can Kisi HackerNoon profile picture
0-item
1-item

En iyi uçuş izleme uygulaması Flighty, makine öğreniminin yanı sıra havacılık otoritelerinden gelen verileri kullanarak artık gecikmelerin erken uyarı sinyallerini veriyor ve gecikmelerin ardındaki kesin nedeni belirliyor. Bu son sürümle birlikte uygulama artık gecikmenin en büyük iki nedenini belirleyebiliyor: geç uçak ve hava sahası sorunları. Böylece kullanıcılar havayolları bunu yapmadan önce gecikmeler hakkında önceden uyarı alıyor. Güncellemenin arkasındaki fikir, havayollarının genellikle vermediği bilgileri size vererek seyahat planlarınız hakkında daha bilinçli kararlar almanıza yardımcı olmak.


Örneğin, bir havayolu seyahatinizi yarım saat, sonra bir saat ve benzeri şekilde erteleyebilir. Flighty, uçuşunuzun havalimanınızdaki resmi bir yer durağı veya hava durumu sorunları gibi bir şey nedeniyle en az beş saat ertelenmesinin muhtemel olduğunu önceden size bildirebilir. Yeniden rezervasyon yaptırmak veya havalimanına gitmek için biraz daha beklemek gibi adımlar atmak isteyebilirsiniz.


Flighty'nin yeni özelliğinin ardındaki mekaniği derinlemesine inceleyeceğiz ve bu güçlü özelliği projenize eklemenize yardımcı olacağız: LSTM kullanarak uçuş gecikmelerini tahmin etme.

Uçuş Gecikmesi Tahminine Giriş

Uçuş gecikmesi tahmini, çoğunlukla hava durumu, hava trafiği ve teknik sorunlarla ilgili gecikmelerin etkili bir nedeni olabilecek çok sayıda faktör nedeniyle oldukça zorlayıcı olabilir. Bu tür tahmin modelleri, havayollarının operasyonları optimize etmesine, yolcu memnuniyetini artırmasına ve operasyonel maliyetleri düşürmesine yardımcı olmakta önemli olabilir.

Uçuş Gecikmesi Tahmininde Temel Özellikler

Etkili bir uçuş gecikmesi tahmin modeli oluşturmak için gecikmeleri etkileyebilecek çeşitli özellikleri kullanmak esastır. Bu makalede aşağıdaki özellikleri kullanacağız:


  • FL_DATE : Uçuşun tarihi.
  • DEP_DELAY : Dakika cinsinden kalkış gecikmesi.
  • ORIGIN_CITY_NAME : Uçuşun kalkacağı şehir.
  • DEST_CITY_NAME : Hedef şehir.
  • CRS_DEP_TIME : Planlanan kalkış saati.
  • DISTANCE : Uçuşun mil cinsinden mesafesi.

Veri Hazırlama

Veri Hazırlama, bir makine öğrenme modeli oluşturma sürecindeki en önemli adımlardan biridir. Uçuşlar hakkında bazı geçmiş verileri kullanacağız ve birkaç ön işleme adımı gerçekleştireceğiz: eksik değerleri işleme, kategorik özellikleri kodlama ve verileri normalleştirme.


 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense, Dropout # Load the flight data flights_df = pd.read_csv('path_to_your_flight_data.csv') # Convert FL_DATE to datetime and set as index flights_df['FL_DATE'] = pd.to_datetime(flights_df['FL_DATE']) flights_df.set_index('FL_DATE', inplace=True) # Select relevant columns and drop rows with NaN values features = ['DEP_DELAY', 'ORIGIN_CITY_NAME', 'DEST_CITY_NAME', 'CRS_DEP_TIME', 'DISTANCE'] flights_df = flights_df[features].dropna() # Convert categorical features to dummy variables flights_df = pd.get_dummies(flights_df, columns=['ORIGIN_CITY_NAME', 'DEST_CITY_NAME']) # Normalize the data scaler = MinMaxScaler() scaled_data = scaler.fit_transform(flights_df) 


LSTM için Dizi Oluşturma

Tekrarlayan sinir ağlarının bir türü, zaman serisi verilerindeki uzun vadeli bağımlılıkları öğrenmek için özel olarak tasarlanmış olan uzun kısa vadeli bellek veya LSTM ağıdır. İlk olarak, LSTM kullanarak bir veri noktası dizisi oluşturmak gerekecektir.

 # Create sequences def create_sequences(data, seq_length): sequences = [] for i in range(len(data) - seq_length): seq = data[i:i+seq_length] target = data[i+seq_length][0] # DEP_DELAY is the target sequences.append((seq, target)) return sequences seq_length = 30 sequences = create_sequences(scaled_data, seq_length)

Tren-Test Ayrımı

Daha sonra, modelin performansını değerlendirmek için dizileri eğitim ve test kümelerine ayırdık.

 # Split into train and test sets train_size = int(len(sequences) * 0.8) train_sequences = sequences[:train_size] test_sequences = sequences[train_size:] # Prepare the input and output X_train, y_train = zip(*train_sequences) X_train, y_train = np.array(X_train), np.array(y_train) X_test, y_test = zip(*test_sequences) X_test, y_test = np.array(X_test), np.array(y_test)

LSTM Modelinin Oluşturulması

Daha sonra bir LSTM modeli tanımlayıp eğitiyoruz. Model, aşırı uyumu önlemek için dropout katmanları ve yoğun bir çıktı katmanı içeren iki LSTM katmanı içerir.

 # Build the LSTM model model = Sequential() model.add(LSTM(50, return_sequences=True, input_shape=(seq_length, X_train.shape[2]))) model.add(Dropout(0.2)) model.add(LSTM(50)) model.add(Dropout(0.2)) model.add(Dense(1)) model.compile(optimizer='adam', loss='mean_squared_error') # Train the model model.fit(X_train, y_train, epochs=20, batch_size=32, validation_data=(X_test, y_test)) 


Tahminler Yapmak

Modeli eğittikten sonra, test verileri üzerinde tahminlerde bulunmak ve sonuçları görselleştirmek için kullanabiliriz.

 # Make predictions predictions = model.predict(X_test) predictions = scaler.inverse_transform(np.concatenate((predictions, np.zeros((predictions.shape[0], scaled_data.shape[1] - 1))), axis=1))[:, 0] from sklearn.preprocessing import MinMaxScaler future_flight_data = { 'DEP_DELAY': 0, 'ORIGIN_CITY_NAME': 'San Francisco, CA', 'DEST_CITY_NAME': 'New York, NY', 'CRS_DEP_TIME': 1230, 'DISTANCE': 2904 } future_flight_df = pd.DataFrame([future_flight_data]) future_flight_df = pd.get_dummies(future_flight_df, columns=['ORIGIN_CITY_NAME', 'DEST_CITY_NAME']) scaler_columns = list(scaler.feature_names_in_) for col in scaler_columns: if col not in future_flight_df.columns: future_flight_df[col] = 0 future_flight_df = future_flight_df[scaler_columns] # Normalize the data using the fitted scaler scaled_future_flight = scaler.transform(future_flight_df) seq_length = 30 # Repeat the future flight data to create a sequence future_sequence = np.array([scaled_future_flight] * seq_length) future_sequence = future_sequence.reshape(1, seq_length, future_sequence.shape[2]) predicted_delay = model.predict(future_sequence) predicted_delay = scaler.inverse_transform( np.concatenate( (predicted_delay, np.zeros((predicted_delay.shape[0], scaled_future_flight.shape[1] - 1))), axis=1 ) )[:, 0] print(f"Predicted delay for the specific future flight: {predicted_delay[0]:.2f} minutes")


 Predicted delay for the specific future flight: 4.10 minutes

Sonuçların Yorumlanması

Yukarıdaki grafik gerçek ve öngörülen gecikmeleri gösterir. İki çizgi çok az sapma gösteriyorsa, model gecikmeleri tahmin etmede iyi bir iş çıkarıyor demektir. Ancak, hiperparametreleri ince ayarlayarak veya daha fazla özellik ekleyerek ya da daha gelişmiş mimariler kullanarak modelde her zaman iyileştirmeler için yer vardır.

Zorluklar ve Hususlar

Faydalarına rağmen, bazı zorluklar ve dikkate alınması gereken hususlar da vardır:

  • Veri Kalitesi : Verinin kalitesi ve eksiksizliği, tahminlerin ne kadar iyi olabileceğini büyük ölçüde etkiler.
  • Özellik Seçimi : Etkili bir modelin kurulması için doğru özelliklerin seçimi.
  • Model Karmaşıklığı : Bir modelin karmaşıklığı ne kadar yüksekse, o kadar fazla hesaplama gerektirir ve yorumlanması da o kadar zordur.

Çözüm

Genel olarak, uçuş gecikmesi tahmininde makine öğrenimi çok güçlü bir araçtır; havayollarının operasyonlarında muazzam verimlilik sağlamalarına ve yolculara daha iyi bir seyahat deneyimi sunmalarına yardımcı olabilir. Bu makalede verilen örnekleri inceleyerek kendi uçuş gecikmesi tahmincinizin modelini uygulayın ve bu alanda çalışan makine öğreniminin gücünü hissedin.


Bu, Flighty'nin daha yeni özelliklerinden sadece biri ve gerçek dünya sorunlarını çözmek için makine öğrenimiyle neler yapılabileceğini vurguluyor. Teknolojik ve veri bilimi ilerlemesi sürecinde, bu tür bir model doğruluğu ve uygulanabileceği sorun türleri açısından gelişmeye devam edecek ve daha akıllı ve daha verimli hava yolculuğuna giden yolu açacak.



Sonraki Adımlar

Modelinizi daha da geliştirmek isteyenler aşağıdakileri göz önünde bulundurabilirler:

  • Hiperparametre Ayarı : Modelinizin optimum hiperparametrelerini belirlemek için ızgara araması veya rastgele arama kullanın.
  • Özellik Mühendisliği : Hava koşulları, hava trafiği verileri ve uçak tipi gibi uçuş gecikmelerini etkileyen diğer özellikleri keşfedin.
  • Gelişmiş Mimariler : Bu verilerdeki daha karmaşık desenleri yakalamak için derin mimariler, dikkat mekanizmalarına sahip çift yönlü LSTM'ler veya GRU'lar ile deneyler tasarlayın.


Sürekli yineleme ve iyileştirme sayesinde daha güvenilir tahminler için daha yüksek doğruluk elde edilebilir ve dolayısıyla daha sorunsuz ve daha verimli bir hava yolculuğu sağlanabilir.