RNN এবং LSTM দিয়ে প্রজেক্ট তৈরি

Recurrent Neural Networks (RNN) - পাইটর্চ (Pytorch) - Machine Learning

313

Recurrent Neural Networks (RNNs) এবং Long Short-Term Memory (LSTM) দুটি ডিপ লার্নিং আর্কিটেকচার যা টাইম সিরিজ ডেটা বা সিকোয়েন্সিয়াল ডেটার সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। এটি প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP), শব্দ বা বাক্য পূর্বাভাস, স্টক প্রাইস প্রেডিকশন, এবং অন্যান্য সিকোয়েন্সিয়াল ডেটা প্রজেক্টে ব্যবহৃত হয়।

এখানে একটি উদাহরণ দেওয়া হলো যেখানে RNN এবং LSTM ব্যবহার করে একটি সহজ প্রজেক্ট তৈরি করা হবে। আমরা একটি স্টক প্রাইস প্রেডিকশন প্রজেক্ট তৈরি করব, যেখানে আমরা টাইম সিরিজ ডেটা ব্যবহার করব এবং RNN ও LSTM দিয়ে ভবিষ্যতের স্টক প্রাইস প্রেডিক্ট করব।


প্রজেক্ট: স্টক প্রাইস প্রেডিকশন (Stock Price Prediction)

ধাপ ১: ডেটা সংগ্রহ

প্রথমে, স্টক প্রাইস ডেটা সংগ্রহ করা প্রয়োজন। আপনি স্টক প্রাইস ডেটা সংগ্রহ করতে Yahoo Finance API বা Alpha Vantage API ব্যবহার করতে পারেন।

এখানে আমরা Yahoo Finance API ব্যবহার করে ডেটা সংগ্রহ করব।

!pip install yfinance

import yfinance as yf

# স্টক টিকার (যেমন, AAPL - Apple) ডেটা সংগ্রহ করা
stock_data = yf.download('AAPL', start='2010-01-01', end='2021-01-01')

# ডেটা দেখুন
stock_data.head()

ধাপ ২: ডেটা প্রক্রিয়াকরণ (Data Preprocessing)

স্টক প্রাইস ডেটা প্রক্রিয়াকরণের জন্য, আমরা সাধারণত Close Price ব্যবহার করি। ডেটাকে স্কেল করতে MinMaxScaler ব্যবহার করতে হবে যাতে সমস্ত ভ্যালু ০ এবং ১ এর মধ্যে থাকে।

from sklearn.preprocessing import MinMaxScaler

# কেবল Close Price নিয়ে কাজ করা
data = stock_data['Close'].values
data = data.reshape(-1, 1)

# ডেটা স্কেল করা
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)

ধাপ ৩: ডেটা ট্রেনিং এবং টেস্টিং সেটে ভাগ করা

ট্রেনিং এবং টেস্টিং ডেটা ভাগ করার জন্য আমরা সাধারণত ৮০% ডেটাকে ট্রেনিং সেট হিসেবে এবং ২০% ডেটাকে টেস্ট সেট হিসেবে ব্যবহার করি।

train_size = int(len(scaled_data) * 0.8)
train_data = scaled_data[:train_size]
test_data = scaled_data[train_size:]

# X_train, y_train তৈরি
X_train, y_train = [], []
for i in range(60, len(train_data)):
    X_train.append(train_data[i-60:i, 0])
    y_train.append(train_data[i, 0])

X_train, y_train = np.array(X_train), np.array(y_train)

# X_train reshape করা যাতে এটি RNN/LSTM এর জন্য উপযুক্ত হয়
X_train = X_train.reshape(X_train.shape[0], X_train.shape[1], 1)

ধাপ ৪: RNN এবং LSTM মডেল তৈরি

এখন আমরা RNN এবং LSTM মডেল তৈরি করব এবং ট্রেন করব।

RNN মডেল:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import SimpleRNN, Dense

# RNN মডেল তৈরি করা
model_rnn = Sequential()

# RNN স্তর
model_rnn.add(SimpleRNN(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
model_rnn.add(SimpleRNN(units=50, return_sequences=False))

# আউটপুট স্তর
model_rnn.add(Dense(units=1))

# মডেল কম্পাইল করা
model_rnn.compile(optimizer='adam', loss='mean_squared_error')

# মডেল ট্রেন করা
model_rnn.fit(X_train, y_train, epochs=5, batch_size=32)
LSTM মডেল:
from tensorflow.keras.layers import LSTM

# LSTM মডেল তৈরি করা
model_lstm = Sequential()

# LSTM স্তর
model_lstm.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
model_lstm.add(LSTM(units=50, return_sequences=False))

# আউটপুট স্তর
model_lstm.add(Dense(units=1))

# মডেল কম্পাইল করা
model_lstm.compile(optimizer='adam', loss='mean_squared_error')

# মডেল ট্রেন করা
model_lstm.fit(X_train, y_train, epochs=5, batch_size=32)

ধাপ ৫: টেস্ট ডেটা দিয়ে মডেল মূল্যায়ন (Model Evaluation)

টেস্ট ডেটা দিয়ে মডেলটির পারফরম্যান্স মূল্যায়ন করতে হবে।

# X_test এবং y_test তৈরি করা
X_test, y_test = [], []
for i in range(60, len(test_data)):
    X_test.append(test_data[i-60:i, 0])
    y_test.append(test_data[i, 0])

X_test, y_test = np.array(X_test), np.array(y_test)

# X_test reshape করা
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1], 1)

# RNN এর ভবিষ্যৎ প্রেডিকশন
predicted_stock_price_rnn = model_rnn.predict(X_test)
predicted_stock_price_rnn = scaler.inverse_transform(predicted_stock_price_rnn)

# LSTM এর ভবিষ্যৎ প্রেডিকশন
predicted_stock_price_lstm = model_lstm.predict(X_test)
predicted_stock_price_lstm = scaler.inverse_transform(predicted_stock_price_lstm)

ধাপ ৬: ফলাফল ভিজ্যুয়ালাইজেশন (Visualization)

এখন আমরা RNN এবং LSTM মডেলগুলির প্রেডিকশন ফলাফল এবং আসল স্টক প্রাইসের তুলনা করতে পারি।

import matplotlib.pyplot as plt

# আসল এবং প্রেডিক্টেড স্টক প্রাইস ভিজ্যুয়ালাইজেশন
plt.figure(figsize=(14,5))
plt.plot(stock_data['Close'].values[len(train_data)+60:], color='blue', label='Actual Stock Price')
plt.plot(predicted_stock_price_rnn, color='red', label='Predicted Stock Price (RNN)')
plt.plot(predicted_stock_price_lstm, color='green', label='Predicted Stock Price (LSTM)')
plt.title('Stock Price Prediction using RNN and LSTM')
plt.xlabel('Time')
plt.ylabel('Stock Price')
plt.legend()
plt.show()

সারাংশ

এটি একটি স্টক প্রাইস প্রেডিকশন প্রজেক্ট ছিল, যেখানে আমরা RNN এবং LSTM মডেল ব্যবহার করেছি। আমরা Yahoo Finance API থেকে স্টক ডেটা সংগ্রহ করেছি, তারপর ডেটা প্রক্রিয়াকরণ, মডেল ট্রেনিং, এবং প্রেডিকশন প্রক্রিয়া সম্পন্ন করেছি। এখানে RNN এবং LSTM এর মধ্যে তুলনা করতে গিয়ে, LSTM মডেল সাধারণত দীর্ঘমেয়াদি সম্পর্ক এবং ডিপ টাইম সিরিজ ডেটার জন্য ভালো পারফর্ম করে।

Content added By
Promotion

Are you sure to start over?

Loading...