Train এবং Test Dataset তৈরি করা in R
মেশিন লার্নিং মডেল তৈরির জন্য ডেটাকে দুটি অংশে ভাগ করা খুবই গুরুত্বপূর্ণ: একটি train dataset এবং একটি test dataset। Train dataset ব্যবহৃত হয় মডেল ট্রেনিংয়ের জন্য, এবং test dataset ব্যবহৃত হয় মডেলটির কার্যকারিতা (performance) পর্যালোচনা করতে।
R-এ ট্রেন এবং টেস্ট ডেটাসেট তৈরি করার জন্য বেশ কয়েকটি পদ্ধতি রয়েছে। নিচে আমরা দুটি জনপ্রিয় পদ্ধতি আলোচনা করব।
১. Using sample() Function for Train-Test Split
sample() ফাংশন ব্যবহার করে আপনি একটি ডেটাসেটের কিছু অংশকে র্যান্ডমভাবে নির্বাচিত করতে পারেন, এবং সেই অংশটি train dataset হিসেবে ব্যবহার করতে পারেন, বাকি অংশটি test dataset হিসেবে।
Step-by-Step Example:
- ডেটা তৈরি করা:
# একটি ডেটাসেট তৈরি করা (উদাহরণস্বরূপ Iris dataset)
data(iris)
head(iris)- ডেটা র্যান্ডমলি ট্রেন এবং টেস্ট সেটে ভাগ করা:
# Train-Test Split (70% train, 30% test)
set.seed(123) # র্যান্ডম সিড সেট করা, যাতে পুনরাবৃত্তিতে একই ফলাফল পাওয়া যায়
sample_index <- sample(1:nrow(iris), 0.7 * nrow(iris)) # 70% ইনডেক্স নির্বাচন
# Train dataset
train_data <- iris[sample_index, ]
# Test dataset
test_data <- iris[-sample_index, ]
# ট্রেন এবং টেস্ট ডেটা চেক করা
print(head(train_data))
print(head(test_data))এখানে:
sample(1:nrow(iris), 0.7 * nrow(iris)):irisডেটাসেটের ৭০% র্যান্ডমলি নির্বাচন করা হয়।train_data: ৭০% ডেটা থাকবে।test_data: বাকি ৩০% ডেটা থাকবে।
Benefits of This Method:
- সহজ এবং দ্রুত ট্রেন এবং টেস্ট ডেটা ভাগ করার উপায়।
- র্যান্ডম স্যাম্পলিং ব্যবহার করা হয়েছে, তাই ডেটা সেটের মধ্যে বৈচিত্র্য থাকে।
২. Using caret Package for Train-Test Split
caret প্যাকেজটি মেশিন লার্নিংয়ের জন্য অনেক কার্যকরী ফাংশন সরবরাহ করে। এর মাধ্যমে আপনি সহজেই ট্রেন এবং টেস্ট ডেটাসেট তৈরি করতে পারেন।
Step-by-Step Example Using caret:
caretপ্যাকেজ ইনস্টল এবং লোড করা:
# caret প্যাকেজ ইনস্টল করা (যদি আগে ইনস্টল না করে থাকেন)
install.packages("caret")
# caret প্যাকেজ লোড করা
library(caret)- ডেটা তৈরি এবং Train-Test Split করা:
# Iris dataset ব্যবহার করা
data(iris)
# Create a partition: 70% train, 30% test
set.seed(123) # র্যান্ডম সিড সেট করা
train_index <- createDataPartition(iris$Species, p = 0.7, list = FALSE)
# Train dataset
train_data <- iris[train_index, ]
# Test dataset
test_data <- iris[-train_index, ]
# ট্রেন এবং টেস্ট ডেটা চেক করা
print(head(train_data))
print(head(test_data))এখানে:
createDataPartition()ফাংশনটি ব্যবহার করে একটি পার্টিশন তৈরি করা হয়েছে যা ৭০% ট্রেন ডেটা এবং ৩০% টেস্ট ডেটা নির্ধারণ করে।iris$Species: এখানেSpeciesকলামটি টার্গেট ভেরিয়েবল হিসেবে নেওয়া হয়েছে এবং তার ভিত্তিতে পার্টিশন করা হয়েছে।
Benefits of This Method:
createDataPartition()ফাংশনটি সাধারণত stratified sampling (প্রতিটি শ্রেণীর প্রোপর্শন ঠিক রেখে) ব্যবহার করে, যা ভারসাম্যপূর্ণ ডেটা সেট তৈরি করতে সাহায্য করে।- বিশেষ করে class imbalance (যেমন, অনেক বেশি একটি শ্রেণী, কম অন্য শ্রেণী) হলে এটি খুব কার্যকরী।
৩. Using rsample Package for Train-Test Split
rsample প্যাকেজটি টাইম সিরিজ ডেটা এবং অন্যান্য প্রকারের ডেটার জন্য train-test split করার একটি সহজ উপায় প্রদান করে।
Step-by-Step Example Using rsample:
rsampleপ্যাকেজ ইনস্টল এবং লোড করা:
# rsample প্যাকেজ ইনস্টল করা (যদি আগে ইনস্টল না করে থাকেন)
install.packages("rsample")
# rsample প্যাকেজ লোড করা
library(rsample)- Train-Test Split Using
initial_split():
# Iris dataset ব্যবহার করা
data(iris)
# Train-test split (70% train, 30% test)
set.seed(123) # র্যান্ডম সিড সেট করা
split <- initial_split(iris, prop = 0.7) # prop = 0.7 মানে ৭০% ট্রেন ডেটা
# Train dataset
train_data <- training(split)
# Test dataset
test_data <- testing(split)
# ট্রেন এবং টেস্ট ডেটা চেক করা
print(head(train_data))
print(head(test_data))এখানে:
initial_split()ফাংশনটি ডেটাকে ৭০% ট্রেন এবং ৩০% টেস্ট সেটে ভাগ করে।training()এবংtesting()ফাংশন ব্যবহার করে ট্রেন এবং টেস্ট ডেটা আলাদা করা হয়।
Benefits of This Method:
rsampleপ্যাকেজে stratified sampling ব্যবহার করা হয়, বিশেষ করে যখন ডেটা সাইজ ছোট হয় বা শ্রেণীভিত্তিক বিভাজন প্রয়োজন হয়।- টাইম সিরিজ ডেটার জন্যও কার্যকরী।
Summarizing the Methods
| Method | Function/Package | Pros | Cons |
|---|---|---|---|
Using sample() | sample() | Simple, fast | Does not guarantee stratified sampling |
Using caret package | createDataPartition() | Stratified sampling, handles class imbalance | Requires caret package, more complex |
Using rsample package | initial_split(), training(), testing() | Stratified sampling, handles different data types | Requires rsample package |
Conclusion
- Train and Test Split হল মেশিন লার্নিং মডেল ট্রেনিং এবং ভ্যালিডেশনের জন্য একটি গুরুত্বপূর্ণ ধাপ।
- R-এ আপনি
sample(),caret, অথবাrsampleপ্যাকেজের মাধ্যমে সহজেই ডেটাকে ট্রেন এবং টেস্ট সেটে ভাগ করতে পারেন। - Stratified Sampling গুরুত্বপূর্ণ যদি ডেটায় ক্যাটাগোরির ভারসাম্য না থাকে (class imbalance)।
Read more