শীর্ষ ফ্লাইট ট্র্যাকিং অ্যাপ, ফ্লাইটি, মেশিন লার্নিংয়ের পাশাপাশি বিমান কর্তৃপক্ষের ডেটা ব্যবহার করছে এখন বিলম্বের প্রাথমিক সতর্কতা সংকেত পরিবেশন করতে এবং বিলম্বের সঠিক কারণ চিহ্নিত করতে। এই সর্বশেষ প্রকাশের সাথে, অ্যাপটি এখন বিলম্বের দুটি বৃহত্তম কারণ চিহ্নিত করতে সক্ষম - দেরিতে বিমান এবং আকাশপথের সমস্যাগুলি - ব্যবহারকারীদের এয়ারলাইন্সগুলি করার আগে বিলম্বের বিষয়ে উন্নত সতর্কতা প্রদান করে৷ আপডেটের পিছনের ধারণাটি হল আপনাকে এমন তথ্য দিয়ে আপনার ভ্রমণ পরিকল্পনা সম্পর্কে আরও সচেতন সিদ্ধান্ত নিতে সাহায্য করা যা সাধারণত এয়ারলাইনগুলি করে না।
উদাহরণস্বরূপ, একটি এয়ারলাইন আপনার ভ্রমণকে আধা ঘণ্টা, তারপর এক ঘণ্টা ইত্যাদি বিলম্বিত করতে পারে। ফ্লাইটি আপনাকে সময়ের আগে সতর্ক করতে পারে যে আপনার বিমানবন্দরে অফিসিয়াল গ্রাউন্ড স্টপ বা আবহাওয়া সংক্রান্ত সমস্যার কারণে আপনার ফ্লাইট কমপক্ষে পাঁচ ঘন্টা বিলম্বিত হতে পারে। আপনি আবার বুকিং বা বিমানবন্দরে যাওয়ার জন্য একটু অপেক্ষা করার মতো পদক্ষেপ নিতে চাইতে পারেন।
আমরা Flighty-এর নতুন বৈশিষ্ট্যের পিছনের মেকানিক্সের গভীরে যাব এবং আপনার প্রকল্পে এই শক্তিশালী বৈশিষ্ট্যটি যোগ করার মাধ্যমে আপনাকে নেতৃত্ব দেব: LSTM ব্যবহার করে ফ্লাইট বিলম্বের পূর্বাভাস।
ফ্লাইট বিলম্বের পূর্বাভাস খুবই চ্যালেঞ্জিং হতে পারে কারণ যেগুলি বিলম্বের একটি প্রভাবক কারণ হতে পারে, বেশিরভাগই আবহাওয়া, বিমান চলাচল এবং প্রযুক্তিগত সমস্যার সাথে সম্পর্কিত। এই ধরনের ভবিষ্যদ্বাণী মডেলগুলি এয়ারলাইনগুলিকে অপারেশন অপ্টিমাইজ করতে, যাত্রীদের সন্তুষ্টি উন্নত করতে এবং কম অপারেশনাল খরচে সহায়তা করতে গুরুত্বপূর্ণ হতে পারে।
একটি কার্যকর ফ্লাইট বিলম্ব পূর্বাভাস মডেল তৈরি করতে, বিলম্বকে প্রভাবিত করতে পারে এমন বিভিন্ন বৈশিষ্ট্য ব্যবহার করা অপরিহার্য। এই নিবন্ধে, আমরা নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করব:
FL_DATE
: ফ্লাইটের তারিখ।DEP_DELAY
: মিনিটে ছাড়ার বিলম্ব।ORIGIN_CITY_NAME
: যে শহর থেকে ফ্লাইটটি ছেড়ে যায়।DEST_CITY_NAME
: গন্তব্য শহর।CRS_DEP_TIME
: নির্ধারিত প্রস্থানের সময়।DISTANCE
: ফ্লাইটের দূরত্ব মাইলে।ডেটা প্রস্তুতি একটি মেশিন-লার্নিং মডেল তৈরির প্রক্রিয়ার একটি প্রধান পদক্ষেপ। আমরা ফ্লাইট সম্পর্কে কিছু ঐতিহাসিক ডেটা ব্যবহার করব এবং কয়েকটি প্রিপ্রসেসিং ধাপ সম্পাদন করব: অনুপস্থিত মানগুলি পরিচালনা করা, শ্রেণীগত বৈশিষ্ট্যগুলিকে এনকোড করা এবং ডেটা স্বাভাবিক করা৷
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 নেটওয়ার্ক, যা বিশেষভাবে টাইম সিরিজ ডেটাতে দীর্ঘমেয়াদী নির্ভরতা শেখার জন্য ডিজাইন করা হয়েছে। প্রথমত, LSTM ব্যবহার করে ডেটা পয়েন্টগুলির একটি ক্রম তৈরি করা প্রয়োজন।
# 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)
এর পরে, আমরা মডেলের কর্মক্ষমতা মূল্যায়ন করার জন্য প্রশিক্ষণ এবং পরীক্ষার সেটগুলিতে ক্রমগুলিকে বিভক্ত করি।
# 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 মডেল সংজ্ঞায়িত এবং প্রশিক্ষণ. মডেলটিতে ওভারফিটিং প্রতিরোধ করার জন্য ড্রপআউট স্তর সহ দুটি LSTM স্তর রয়েছে এবং একটি ঘন আউটপুট স্তর রয়েছে।
# 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))
মডেলটি প্রশিক্ষণের পরে, আমরা পরীক্ষার ডেটাতে ভবিষ্যদ্বাণী করতে এবং ফলাফলগুলি কল্পনা করতে এটি ব্যবহার করতে পারি।
# 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
উপরের প্লটটি প্রকৃত এবং পূর্বাভাসিত বিলম্ব দেখায়। যদি দুটি লাইন খুব কম বিচ্যুতি দেখায়, তাহলে মডেলটি বিলম্বের পূর্বাভাস দেওয়ার জন্য একটি সূক্ষ্ম কাজ করছে। যাইহোক, সূক্ষ্ম-টিউনিং হাইপারপ্যারামিটার বা আরও বৈশিষ্ট্য যোগ করে বা আরও উন্নত স্থাপত্য ব্যবহার করে মডেলের উন্নতির জন্য সবসময় জায়গা থাকে।
সুবিধা থাকা সত্ত্বেও, বেশ কয়েকটি চ্যালেঞ্জ এবং বিবেচনা রয়েছে:
সাধারণভাবে, ফ্লাইট বিলম্বের পূর্বাভাস দেওয়ার ক্ষেত্রে মেশিন লার্নিং একটি অত্যন্ত শক্তিশালী হাতিয়ার; এটি এয়ারলাইনসকে তাদের ক্রিয়াকলাপে বিশাল দক্ষতা আনতে সাহায্য করতে পারে এবং যাত্রীদের একটি ভাল ভ্রমণ অভিজ্ঞতা প্রদান করতে পারে। একটি ফ্লাইট বিলম্বের পূর্বাভাস দেওয়ার জন্য আপনার নিজের মডেলটি বাস্তবায়ন করতে এবং এই ডোমেনে কাজ করার মেশিন লার্নিংয়ের শক্তির অনুভূতি পেতে এই নিবন্ধে দেওয়া উদাহরণগুলি দেখুন।
এটি ফ্লাইটির নতুন বৈশিষ্ট্যগুলির মধ্যে একটি, যা বাস্তব-বিশ্বের সমস্যাগুলি সমাধান করার জন্য মেশিন লার্নিং দিয়ে কী সম্ভব তা হাইলাইট করে৷ প্রযুক্তিগত এবং ডেটা বিজ্ঞানের অগ্রগতির প্রক্রিয়ায়, এই ধরণের মডেলটি তার নির্ভুলতা এবং যে ধরণের সমস্যাগুলির জন্য এটি প্রয়োগ করা যেতে পারে তাতে উন্নতি করতে থাকবে, যা আরও স্মার্ট এবং আরও দক্ষ বিমান ভ্রমণের পথ প্রশস্ত করবে।
যারা তাদের মডেলকে আরও উন্নত করতে আগ্রহী তাদের জন্য, নিম্নলিখিতগুলি বিবেচনা করুন:
ক্রমাগত পুনরাবৃত্তি এবং উন্নতির মাধ্যমে, আরও নির্ভরযোগ্য ভবিষ্যদ্বাণীর জন্য উচ্চ নির্ভুলতা অর্জন করা যেতে পারে, তাই মসৃণ এবং আরও দক্ষ বিমান ভ্রমণ।