হাতে কলমে মেশিন লার্নিং
  • হাতেকলমে মেশিন লার্নিং
  • উৎসর্গ
  • প্রথম পাতা
  • মুখবন্ধ
  • কৃতজ্ঞতা
  • কাদের জন্য বইটা?
  • কাদের জন্য নয়
  • কিভাবে পড়বেন বইটা?
  • পর্ব ১: পাল্টে যাবার ঘটনা
    • ১.১. সিডিসি’র ওয়ার্নিং
    • ১.২. ইন্টারকানেকশন কস্ট মডেলিং
    • ১.৩. মানুষের পাশে ডাটা
    • ১.৪. গুগল ফটোজ, টেক্সট টু স্পিচ
    • ১.৫. সরকারি ওপেন ডাটা
    • ১.৬ প্রাইভেট সেক্টর + পাবলিক সেক্টর (ডাটা শেয়ারিং)
    • ১.৭. আর্টিফিসিয়াল ইন্টেলিজেন্স - মেশিন লার্নিংএর প্রসার
    • ১.৮. মেশিন লার্নিং ব্যবহারে এগিয়ে যে ইন্ডাস্ট্রিগুলো
  • পর্ব ২: ডাটা থেকে ভবিষ্যৎ দেখার ধারণা
    • ২.১. মেশিন লার্নিং হ্যাক
    • ২.২. ভবিষ্যৎ দেখার ধারণা + ডাটার গল্প বলার ক্ষমতা
    • ২.৩. মৃত্যু অ্যালগরিদম
    • ২.৪. দেশের নীতিনির্ধারণী ড্যাশবোর্ড
  • পর্ব ৩: মেশিন লার্নিং কি? (৩০ মিনিট)
    • ৩.১. মেশিন লার্নিং জিনিসটা কি?
    • ৩.২. কেন দরকার মেশিন লার্নিং?
    • ৩.৩. মেশিন লার্নিং এর কিছু ভাগ
    • ৩.৪. শুরুর ধারণা - ডাটা নিয়ে
    • ৩.৫. ডাটার তত্ব আর তার প্রসেস
    • ৩.৬. কিভাবে শিখবেন?
  • পর্ব ৪: ক্যাগল প্রতিযোগিতা (৪ সপ্তাহ-৬ সপ্তাহ)
    • ৪.১. ‘ক্যাগল’ কি? আর দরকারই বা কেন?
    • ৪.২. কি করতে হবে ক্যাগলে?
    • ৪.৩. থিওরি বাদ, কেন প্রজেক্ট দিয়ে শুরু?
    • ৪.৪. কেন শুরুতেই ‘আর’ প্রোগ্রামিং এনভায়রনমেন্ট?
    • ৪.৫. মেশিন লার্নিং কমিউনিটি
    • ৪.৬. ক্যাগল কার্নাল এবং অনলাইন হোস্টেড স্ক্রিপ্ট
  • পর্ব ৫: "আর" এনভায়রনমেন্ট
    • ৫.১. "আর" + "আর" ষ্টুডিও
    • ৫.২. "আর" ষ্টুডিওর কিছু খুঁটিনাটি
    • ৫.৩. প্রজেক্ট টাইটানিক + 'আর' ষ্টুডিও
    • ৫.৪. প্রজেক্টের গিটহাব স্ক্রিপ্ট
  • পর্ব ৬: প্রজেক্ট টাইটানিক: বিপর্যয়ে মেশিন লার্নিং
    • ৬.১. টাইটানিকের গল্প
    • ৬.২. কেন প্রজেক্ট" টাইটানিক "? ডাটা কোথায়?
    • ৬.৩. ‘ট্রেনিং’ আর ‘টেস্ট’ ডাটা সেট
    • ৬.৪. ক্যাগলের কোন কোন কার্নাল?
    • ৬.৫. "আর" স্টুডিওতে ডাটা লোড
    • ৬.৬. মেন্যু দিয়ে নাকি স্ক্রিপ্ট ভালো ?
  • পর্ব ৭: প্রেডিকশন
    • ৭.১. প্রথম প্রেডিকশন
    • ৭.২. ডাটা ভিজ্যুয়ালাইজেশন
    • ৭.৩. দ্বিতীয় প্রেডিকশন
    • ৭.৪. তৃতীয় প্রেডিকশন
    • ৭.৫. ডিসিশন ট্রি
    • ৭.৬. চতুর্থ প্রেডিকশন (মেশিন লার্নিং)
    • ৭.৭. পঞ্চম প্রেডিকশন (ফিচার ইঞ্জিনিয়ারিং)
    • ৭.৮. ডাটা প্রি-প্রসেসিং, ডাটা ক্লিনিং এবং ষষ্ঠ প্রেডিকশন
    • ৭.৯. সপ্তম প্রেডিকশন (র‌্যান্ডম ফরেস্ট)
  • পর্ব ৮: কি আছে সামনে?
    • ৮.১. কি শিখলাম আমরা?
    • ৮.২. কোথায় যাচ্ছি এর পর?
    • ৮.৩. সামনের বই
    • ৮.৪. যোগাযোগের মাধ্যম
  • পর্ব ৯: পাইথনে টাইটানিক প্রজেক্ট
    • জুপিটারে প্রজেক্ট টাইটানিক
  • একটা ট্রেনিং প্রোগ্রাম
Powered by GitBook
On this page
  • ডাটা প্রি-প্রসেসিং, ডাটা ক্লিনিং এবং ষষ্ঠ প্রেডিকশন
  • ব্যবহৃত গিটহাব স্ক্রিপ্ট (অনলাইন)

Was this helpful?

  1. পর্ব ৭: প্রেডিকশন

৭.৮. ডাটা প্রি-প্রসেসিং, ডাটা ক্লিনিং এবং ষষ্ঠ প্রেডিকশন

ডাটা প্রি-প্রসেসিং, ডাটা ক্লিনিং এবং ষষ্ঠ প্রেডিকশন

আমার প্রিয় চ্যাপ্টার

ডাটা নিয়ে কাজ করতে গিয়ে দেখলাম দুটো সমস্যা। ১. ডাটা’র অভাব ২. ডাটা থাকলেও সেটা পরিপূর্ণ নয়। হয় ডাটা ভুল, অথবা অনেক ডাটা মিসিং। এদিকে আগেই বলেছিলাম ডাটা না থাকা আর ডাটা’র ঘরে "শুন্য" থাকা - দুটো দু জিনিস। তবে আসল কথা হচ্ছে - ডাটা না থাকলে "প্রেডিক্ট" করবো কিভাবে?

ডাটা থাকবে না এটাই স্বাভাবিক। আশা করি একটা “পারফেক্ট ওয়ার্ল্ডে” থাকি আমরা, কিন্তু আসল কথা হচ্ছে প্রতিনিয়ত নতুন চ্যালেঞ্জ নিতে হয় আমাদের। যতই চিন্তা করি, আজকে বউ ঝগড়া করবেনা আমার সাথে, ততোই যেন ঝগড়া উড়ে উড়ে আসে। আর সেটাই স্বাভাবিক। যতোই ধারণা করি বস আমাকে বুঝবে ঠিকমতো - ততোই জিনিস উল্টোয়। এর মানে হচ্ছে - আমরা অনেক কিছুই চিন্তা করি, কিন্তু বাস্তবে হয় অন্য।

সেরকমভাবে আমরা যখন ডাটা নিয়ে কাজ করি, বেশিরভাগই সময়ে পুরো ডাটা পাইনা। আর যেটাও বা পাই় সেটাও থাকে ভুলে ভরা। মোদ্দা কথা হচ্ছে, পুরো ডাটা পাওয়া যাবে না। আর - পাওয়া গেলেও সেটা থাকবে অসম্পূর্ণ। তো অসম্পূর্ণ ডাটা থাকলে কি বসে থাকব আমরা? সেখানেই মানুষের মুনশিয়ানা। প্রতিটা ডাটা কিন্তু একে অপরের সাথে সম্পর্কযুক্ত। আমরা একে বলি “কো রিলেটেড” ডাটা।

একটা উদাহরণ টানি বরং। বাবা এবং মা’র কেবিন নাম্বারটা ডাটা সেটে থাকলেও তাদের পাঁচ বছরের সন্তানের ডাটা মিসিং। এখন সেই সন্তানের কেবিন নাম্বার কি হবে? সোজা উত্তর। বাবা আর মা’র কেবিন নাম্বারটাই হবে তাদের সন্তানের। সেটাই তো স্বাভাবিক। তাই নয় কি?

অথবা, একই পরিবারের তিন জনের জাহাজ ভাড়ার ডাটা থাকলেও আরেকজনেরটা মিসিং। তো কি হবে এখানে? ধারণার সাথে মিলিয়ে একই ভাড়ার তথ্যটা ঢুকিয়ে দেবো তার ওখানে। এছাড়াও গড় ভ্যালুটা ঢুকিয়ে দেয়া যেতে পারে সেখানে। বোঝা গেছে তো ব্যাপারটা? ফিরে যাই আমাদের ডাটা সেটে। আমরা সামনে নিয়ে আসছি ডাটা “প্রি-প্রসেসিং” নিয়ে। আমাদেরকে “ক্লিন” করতে হবে অসম্পূর্ন ডাটা। ভরতে হবে বিশ্বাসযোগ্য ডাটা দিয়ে। ডাটাকে তৈরি করতে হবে নতুন নতুন টেকনিকের জন্য ঠিক করে।

> summary(combined_set$Age)

Min. 1st Qu. Median Mean 3rd Qu. Max. NA's

0.17 21.00 28.00 29.88 39.00 80.00 263

সোজা পথ আছে একটা। আমাদের বয়স ভ্যারিয়েবলটা দেখি বরং। এখানে দেখছি “NA's” ই আছে ১৬৩টা। “NA” মানে নট এভেইল্যাবল। মানে বয়স দেয়া নেই আমাদের ২৬৩টা রেকর্ডে। মানে প্রায় ২০%! ভয়ংকর অবস্থা। কেমন হয় বাকি সব বয়সের গড় বের করে ভর্তি করি ফাঁকা রেকর্ডে? আসলেই তাই। নাই মামা থেকে কানা মামা ভালো। আর ব্যাপারটা তো মিথ্যে নয়। সবার গড় বয়স দিয়ে রিপ্লেস করে দেবো মিসিং ভ্যালুগুলো। মানে সব “NA's”গুলো।

দ্বিতীয় পন্থা আরো মজার। মনে আছে “ডিসিশন ট্রি’র কথা? “ডিসিশন ট্রি’ তো জানে অন্য ডাটার কথা। সেখান থেকে মিলিয়ে দেবে সে। কেমন হয় সেটা? কৈ এর কৈ ভাঁজা। “is.na()” এর উল্টোটা হচ্ছে “!is.na()”। মানে “NA” হওয়া যাবে না। method="anova", আমরা ক্লাসিফাই করছি না - বরং দরকার আমাদের কন্টিনিউয়াস ভ্যারিয়েবল। চলুন বাড়তে দেই আমাদের নতুন ডিসিশন ট্রি। বাকি বয়সগুলো থেকে তৈরি করি আমাদের নতুন বয়স। বিশেষ করে যেখানে বয়সের ঘর ফাঁকা। মজা না?

> FillAge <- rpart(Age ~ Pclass + Mother + FamilySize + Sex + SibSp + Parch + Deck + Fare + Embarked + Title + FamilyID + FamilySize + FamilySizeGroup, data=combined_set[!is.na(combined_set$Age),], method="anova")

ডিসিশন ট্রি’র আউটপুট নিয়ে সেটা পাঠিয়ে দিলাম প্রেডিক্ট ফাংশনে। এরপর সেটাকে ভর্তি করতে বললাম যেখানে কোন ভ্যালু নেই।

> combined_set$Age[is.na(combined_set$Age)] <- predict(FillAge, combined_set[is.na(combined_set$Age),])

আবার সামারি কমান্ড দিয়ে দেখলে দেখবেন সব ফকফকা। মানে, সব “NA” গায়েব। সেখানে এসে ঢুকে গেছে নতুন প্রেডিক্টেড ভ্যালু। খুব স্মার্ট না?

> summary(combined_set$Age)

Min. 1st Qu. Median Mean 3rd Qu. Max.

0.17 22.00 28.86 29.70 36.50 80.00

এখন দেখি, পুরো ডাটাসেটের কি অবস্থা?

> summary(combined_set)

আমাদের হাতে Embarked আর Fare ভ্যারিয়েবলগুলোর কিছু ঘর ফাঁকা আছে। দেখি তাহলে ভেতরে কি অবস্থা।

> summary(combined_set$Embarked)

       C           Q          S
  2   270         123        914

মনে আছে তো আগের ঘটনা?

embarked ----> কোথা থেকে উঠেছেন, বিশেষ করে কোন পোর্ট থেকে ------> C = Cherbourg, Q = Queenstown, S = Southampton

বোঝা যাচ্ছে দুটো প্যাসেঞ্জারের ঘর ফাঁকা আছে। এখানে একটা কথা না বললেই নয়। "NA" আর "ব্ল্যাংক" ঘরের মধ্যে পার্থক্য আছে। এখানে $Embarked ঘরটা আসলে ফাঁকা। ব্ল্যাংক। "NA" নয়। যাই হোক ক্লিন করতে বসে ঘোমটা দিয়ে থাকলে তো আর হবে না। ফেলে দেই দুটো ঘরকে। কোন দুটো ঘর তাহলে?

>which(combined_set$Embarked == '')

[1] 62 830 -------> দুটো ঘরে। আমাদের আগের হিসেবে দেখা গেছে S = Southampton থেকে মানুষ উঠেছেন বেশি।

combined_set$Embarked[c(62,830)] = "S" ------> তাহলে S = Southampton দিয়েই ভর্তি করি ফাঁকা ঘরটা।

combined_set$Embarked <- factor(combined_set$Embarked) --------> পাল্টে নিয়ে আসি আমাদের ফ্যাক্টরে।

$Fare এর মধ্যে একটা মাত্র "NA" আছে। আমাদের কষ্ট কমে গেল।

> summary(combined_set$Fare)

Min. 1st Qu. Median Mean 3rd Qu. Max. NA's

0.000 7.896 14.454 33.295 31.275 512.329 1

তো "NA"টা আছে কোথায়?

> which(is.na(combined_set$Fare))

[1] 1044 ------> ১০৪৪ এর ঘরে।

আমাদের সব প্যাসেঞ্জারদের ভাড়ার "গড়" ভ্যালুটা পাঠিয়ে দেই ওই ঘরে।

>combined_set$Fare[1044] <- median(combined_set$Fare, na.rm=TRUE)

চেক করার পালা। আগেই বলেছি - আমাদের পরের প্রেডিকশনে এমন টেকনিক ব্যবহার করছি যা কোন ধরণের ব্ল্যাংক বা "NA" ভ্যালু নিতে পারে না।

লোড করে নেই আমাদের mice প্যাকেজ।

library('mice')

library('lattice')

এরপর কমান্ড দেই প্যাটার্নের। কোন মিসিং ভ্যালু নেই আর। অল সেট আমরা!

আমাদের কাজ প্রায় শেষ। এখন একটা প্রেডিকশনের পালা। করবেন কি আপনি? পুরানো ডিসিশন ট্রি দিয়েই তবে নতুন "মিসিং ডাটা" ছাড়া ডাটা দিয়ে। আগে যা করেছি সেখানে অনেক ডাটা "মিসিং" ছিলো। গিটহাবের স্ক্রিপ্টটা দেখবেন ভালো করে। আসল ঘটনা ওই স্ক্রিপ্টে। সত্যি বলছি। অনেক কারুকাজ আছে ওখানে।

ব্যবহৃত গিটহাব স্ক্রিপ্ট (অনলাইন)

কি হলো? খুব একটা এগুতে পারিনি আমরা লিডারবোর্ডে। কেন? ডাটা তো সব ভর্তি। কি হলো তাহলে? সব ভ্যারিয়েবল কি নেয়া ঠিক হয়েছে?

Previous৭.৭. পঞ্চম প্রেডিকশন (ফিচার ইঞ্জিনিয়ারিং)Next৭.৯. সপ্তম প্রেডিকশন (র‌্যান্ডম ফরেস্ট)

Last updated 5 years ago

Was this helpful?

>md.pattern(combined_set)ছবি: কোন মিসিং ভ্যালু নেই এখানে

https://github.com/raqueeb/mltraining/blob/master/ML-workbook/6th-prediction.R