রিভিশন ৪
আসলে আমাদের ডেটার ভেতরে কী আছে সেটা না জানলে এর থেকে প্রেডিকশন বের করবো কী করে? সেকারণে এই এক্সপ্লোরেশন। ডেটা নিয়ে একটু ঘাঁটাঘাঁটি করলে এর ভেতরের অনেক ধারণা পাওয়া যায় যেটা মডেল সিলেকশন অথবা ফীচারগুলো বুঝতে সুবিধা হয়। আগের চ্যাপ্টারের ভেতরে কিছুটা "এক্সপ্লোরেটরি ডেটা অ্যানালাইসিস" করলেও এখানে সেটাকে আরেকটু খোলাসা করছি।
n_samples, n_features = iris.data.shape
n_samples
n_features
print("Shape of data:", iris['data'].shape)
কোন ডাটা মিসিং নেই
len(iris.target) == n_samples
ওপরের ছবিতে চারটা ফিচারের নাম দেখেছি। চলুন দেখি সেগুলো আমাদের ডাটাসেট অবজেক্টে। iris এর পর ডট নোটেশন ব্যবহার করে ডাকি একটা "কী" ভ্যালুকে। feature_names হচ্ছে আমাদের iris.keys() থেকে পাওয়া একটা অ্যাট্রিবিউট।
iris.feature_names
print(iris['feature_names'])
অনেকভাবেই করা সম্ভব। তবে print ফরম্যাটিং এ ভালো কাজ করে।
iris.target_names
print(iris.target_names)
list(iris.target_names)
print("Target names:", iris['target_names'])
এখানে অ্যারে নিয়ে কাজ হচ্ছে। iris.dataতে সেই চারটা ১. পেটাল দৈর্ঘ্য, ২. পেটাল প্রস্থ, ৩. সিপাল দৈর্ঘ্য, ৪. সিপাল প্রস্থ মাপগুলো পাশাপাশি দেয়া আছে। শুরুতে দেখি প্রথম রেকর্ড। এরপর পুরো রেকর্ড।
iris.data[0]
iris.data
iris.target
আমাদের "ফিচার" আর "রেসপন্স" অর্থাৎ "টার্গেট" কি ধরণের কন্টেইনারে আছে, সেটা জানতে চাইলাম এখানে। ঠিক ধরেছেন। "নামপাই অ্যারে"।
print(type(iris.data))
print(type(iris.target))
ফিচারের ম্যাট্রিক্স কি? (১ম ডাইমেনশন = অবজার্ভেশনের সংখ্যা, ২য় = ফিচারের সংখ্যা)
print(iris.data.shape)
টার্গেট ম্যাট্রিক্স কি? (১ম ডাইমেনশন = লেবেল, টার্গেট, রেসপন্স)
print(iris.target.shape)
print("Shape of target:", iris['target'].shape)
এখানে "ফিচার" এবং "রেসপন্স" দুটো আলাদা অবজেক্ট (আমাদের এখানে দেখুন, "ফিচার" এবং "রেসপন্স" মানে "টার্গেট" আলাদা অবজেক্ট)
"ফিচার" এবং "রেসপন্স" দুটোকেই সংখ্যা হতে হবে (আমাদের এখানে দুটোই সংখ্যার, দুটোর ম্যাট্রিক্স ডাইমেনশন হচ্ছে (১৫০ x ৪) এবং (১৫০ x ১)
"ফিচার" এবং "রেসপন্স" দুটোকেই "নামপাই অ্যারে" হতে হবে। (আমাদের দুটো ফিচারই আছে "নামপাই অ্যারে"তে, বাকি ডাটা ডাটাসেট দরকার হলে সেটাকেও লোড করে নিতে হবে "নামপাই অ্যারে"তে)
"ফিচার" এবং "রেসপন্স" দুটোকেই স্পেসিফিক shape হতে হবে
# ফিচার ম্যাট্রিক্স স্টোর করছি বড় "X"এ, মনে আছে f(x)=y কথা? x ইনপুট হলে y আউটপুট
X = iris.data
# রেসপন্স ভেক্টর রাখছি "y" তে
y = iris.target
X
y