৬.৬. মেন্যু দিয়ে নাকি স্ক্রিপ্ট ভালো ?

মেন্যু দিয়ে নাকি স্ক্রিপ্ট ভালো?

মেন্যু থেকে যখন আমরা ওয়ার্কিং ডাইরেক্টরিটা সেট করব, তখন আমরা আসলে দেখিয়ে দেবো ওই টাইটানিক ফোল্ডারটাকে। আমরা যখন বিভিন্ন ডাটাসেট ইমপোর্ট করতে চাইবো - সেগুলো তখন নিয়ে আসবো সেই ওয়ার্কিং ডাইরেক্টরি থেকে।
ছবি: ওয়ার্কিং ডাইরেক্টরি
আমরা যদি মেন্যু দিয়ে ডাটা সেট ইমপোর্ট করতে চাই, তাহলে এই ছবির মতো করে প্রথমে আমরা নেব train.csv ডাটাসেটটা। যখন যেটা ইম্পোর্ট করছি সেটার একটা প্রিভিউ কপি আসবে আমাদের সামনে। আমরা “সেট” করে নেব সবকিছুই “ডিফল্ট” হিসেবে। মেন্যু দিয়ে ইম্পোর্ট এবং ওয়ার্কিং ডিরেক্টরি দেখানো সবকিছুই পরীক্ষা করতে পারেন যে কোন সময়। তবে, সেটা করে নেওয়া ভালো আমাদের গিটহাবের স্ক্রিপ্ট লোড করার আগে। আগেও বলেছি মেন্যু দিয়ে অনেক কিছু করা গেলেও আমরা মেন্যু দিয়ে যাব না শুরু থেকেই। স্ক্রিপ্ট ব্যবহারের সুবিধার্থে।

স্ক্রিপ্ট লোড করে নেবার পদ্ধতি

আবারো বলছি - নতুন করে, যা না করলেই নয়;
১. চালু করুন "আর ষ্টুডিও"
২. সেট করুন ওয়ার্কিং ডাইরেক্টরি
৩. "আর" স্টুডিওতে ক্লিক করি file → open file, চলে যাই আমাদের ওয়ার্কিং ডাইরেক্টরীতে। সিলেক্ট করি আমাদের দরকারি স্ক্রিপ্ট ফাইল। "আর" স্টুডিওর চার ভাগের ওপরের বাম ঘরটা হচ্ছে স্ক্রিপ্ট এডিটর। আমরা সবকিছু চালাবো এখন থেকে।
চলুন চোখ বুলাই আমাদের লোড করা স্ক্রিপ্টে। প্রথমেই সেট করা হয়েছে ওয়ার্কিং ডিরেক্টরি। মনে আছে তো কিভাবে চালাতে হবে স্ক্রিপ্ট? ওই লাইনটার ওপর কার্সার নিয়ে চাপুন কন্ট্রোল + এন্টার মানে "Ctrl + Enter"। অথবা ওপরের ওই 'রান' বাটন। দেখুন - টাইটানিক লেখাটার ওপরে, একটু ডানে। সঙ্গে সঙ্গে চালু হয়ে যাবে আমাদের স্ক্রিপ্ট।
বুঝতেই পারছেন এখানে setwd মানে "সেট ওয়ার্কিং ডিরেক্টরি"। মানে পরের লাইনে আমরা ইমপোর্ট করেছি train ডাটাসেট। “আর” অথবা স্ট্যাটিসটিক্স এর ভাষায় আমরা এই ডাটাসেটকে আসলে লোড করছি একটা দ্বিমাত্রিক ডাটাফ্রেমে। আচ্ছা ডাটাফ্রেমটা আবার কি?
ছবি: সেট ওয়ার্কিং ডিরেক্টরি
আমাদের ডাটাসেট থেকে যেভাবে প্রতিটা তথ্য "আর" এনভায়রনমেন্ট "ষ্টোর" করে, সেটাকে আমরা বলছি ডাটাফ্রেম। এটা "এক্সেল" এর মত দুই ডাইমেনশনের একটা আধার মানে কন্টেইনার। অর্থাৎ এখানে ‘রো’ এবং 'কলাম' আছে। মাইক্রোসফট এক্সেলে আপনারা কী দেখেছিলেন? সেটার মধ্যে ৮৯১টা ‘রো’ ছিল। এই ৮৯১টা রেকর্ডকে আমরা বলি ‘অবজারভেশন’। এবং এই training ডাটাফ্রেমে আপনারা দেখবেন কলাম আছে ১২টা। এই ১২টা ভেরিয়েবল কিন্তু একেকটা অবজারভেশনের বিভিন্ন তথ্য। আমাদের ডাটাসেটে একেকটা অবজারভেশন হচ্ছে এক একটা মানুষ। প্রতিটা রেকর্ড হিসেবে। সেখানে প্রতিটা মানুষের বিভিন্ন তথ্য দেয়া আছে একেকটা ভেরিয়েবলে (যেমন, নাম, বয়স, টিকেট নাম্বার, কোন ক্লাসের টিকেট ইত্যাদি)। ট্রেনিং আর টেস্ট ডাটাফ্রেমের মধ্যে একটা ভেরিয়েবল কম।
শেষমেশ কিন্তু জিনিসটা "ইমপোর্ট": করা হয়ে গেল train ডাটাসেট train.csv থেকে। সেটাকে "আর" ষ্টুডিও আবার স্টোর করল train ডাটাফ্রেমে। "<-" চিহ্ন মানে হচ্ছে জিনিসটাকে পাঠিয়ে "স্টোর" হলো ওই ডাটাফ্রেমে। টেক্সট এডিটরে স্ক্রিপ্টে train লেখাটায় কার্সার রেখে "কন্ট্রোল + এন্টার" চাপুন। আপনা আপনি - কমান্ডটা চলে যাবে কনসোলে। স্ক্রিপ্ট না থাকলে কনসোলে train লিখে এন্টার চাপুন। (স্ক্রিপ্ট ব্যবহার করার জন্য অনুরোধ করছি) দেখা গেলো পুরো ডাটাফ্রেম। আচ্ছা, কেমন হয় সেই ডাটাফ্রেমের স্ট্রাকচার দেখতে পারলে? চলুন দেখি তাহলে। স্ক্রিপ্টে নিচের লেখাটার ওপর কার্সার রেখে রান বাটন চাপ দিন।
str(train) <-- এর মানে হচ্ছে ট্রেইন ডাটাফ্রেমের স্ট্রাকচার দেখান
ছবি: ডাটাফ্রেমের স্ট্রাকচার
ভালো করে লক্ষ্য করলে দেখতে পারবেন, আমাদের ডাটাফ্রেমের স্ট্রাকচারটা দেয়া আছে এখানে। ডাটাফ্রেমে ৮৯১টা অবজারভেশন। সঙ্গে বারোটা ভেরিয়েবল। ডাটা টাইপগুলো খেয়াল করুন। Int হচ্ছে একটা পূর্ণ সংখ্যা। Num হচ্ছে আরেক ধরণের সংখ্যা যেখানে ডেসিমেল ভগ্নাংশ রাখা যায়। এর পরে আছে factor যেটা আসলে একটা ক্যাটেগরি। নামগুলো সব চলে এসেছে ফ্যাক্টরে। ভালোভাবে লক্ষ্য করলে দেখা যাবে এখানে ৮৯১টা লেভেল তৈরি হয়েছে। তার মানে আমাদের ৮৯১টা ক্যাটাগরি তৈরি হয়েছে নাম দিয়ে। যেহেতু কারো নামের সাথে অন্য কারো নাম মিলছে না, সেখানে এটা ভাগ হয়ে গেছে ৮৯১টা লেভেলে। এটা sex এর জন্য ঠিক আছে যার এখানে মাত্র দুটো ফ্যাক্টর, মহিলা এবং পুরুষ। "আর" স্টুডিওতে যখন আমরা কোনো ডাটাসেটকে দরকার মতো ইমপোর্ট করি, তখন সব ধরনের টেক্সট নিয়ে আসে লিংক ফ্যাক্টরে। এটাকে সে করে ডিফল্ট সেটিংস থেকে। আমাদের এখানে যেটা দরকার ফ্যাক্টর হিসেবে, সেটা সঠিক ভাবে চলে এসেছে sex ভ্যারিয়েবলে। বাকিগুলো নিয়ে এখন মাথা ঘামাবো না। দরকার মত পাল্টে নেব টেক্সট স্ট্রিংএ। ডাটা ম্যানিপুলেশনে।
train ডাটাফ্রেমে একবার ক্লিক করে দেখবেন? কি দেখছেন? এক্সেলের মতো আরেকটা শীট। ভালো করে দেখুন ভেতরে। এদিক ওদিক করে।

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