|
|
3 weeks ago | |
|---|---|---|
| .. | ||
| solution | 8 months ago | |
| README.md | 3 weeks ago | |
| assignment.md | 8 months ago | |
| notebook.ipynb | 1 year ago | |
README.md
Python এবং Scikit-learn দিয়ে রিগ্রেশন মডেলের সঙ্গে শুরু করুন
স্কেচনোট করেছেন Tomomi Imura
পূর্ব-লেকচার কুইজ
এই পাঠটি R এ পাওয়া যায়!
ভূমিকা
এই চারটি পাঠে, আপনি কীভাবে রিগ্রেশন মডেল তৈরি করতে হয় তা আবিষ্কার করবেন। আমরা শীঘ্রই আলোচনা করব এগুলো কী জন্য ব্যবহৃত হয়। কিন্তু আপনি যেকোনো কিছু করার আগে, নিশ্চিত করুন আপনার কাছে প্রক্রিয়া শুরু করার জন্য সঠিক সরঞ্জাম রয়েছে!
এই পাঠে, আপনি শিখবেন কীভাবে:
- লোকাল মেশিন লার্নিং কাজের জন্য আপনার কম্পিউটার কনফিগার করবেন।
- Jupyter নোটবুকের সাথে কাজ করবেন।
- Scikit-learn ব্যবহার করবেন, ইনস্টলেশনসহ।
- হাতে-কলমে একটি অনুশীলনের মাধ্যমে লিনিয়ার রিগ্রেশন বিনিয়োগ করবেন।
ইনস্টলেশন এবং কনফিগারেশন
🎥 আপনার কম্পিউটারকে ML জন্য কনফিগার করার কাজটি করার জন্য উপরের ছবিতে ক্লিক করুন একটি সংক্ষিপ্ত ভিডিওর জন্য।
- Python ইনস্টল করুন। নিশ্চিত করুন যে Python আপনার কম্পিউটারে ইনস্টল করা আছে। আপনি অনেক ডেটা সায়েন্স ও মেশিন লার্নিং কাজের জন্য Python ব্যবহার করবেন। বেশিরভাগ কম্পিউটার সিস্টেমে ইতোমধ্যে Python ইনস্টল থাকে। কিছু ব্যবহারকারীর জন্য সেটআপ সহজ করতে Python Coding Packsও পাওয়া যায়।
তবে Python-এর কিছু ব্যবহার এক সংস্করণের প্রয়োজন, এবং অন্যগুলো অন্য সংস্করণের। এজন্য, ভারচুয়াল এনভায়রনমেন্ট এর মধ্যে কাজ করা উপকারী।
-
Visual Studio Code ইনস্টল করুন। নিশ্চিত করুন আপনার কম্পিউটারে Visual Studio Code ইনস্টল আছে। বেসিক ইনস্টলেশনের জন্য এই নির্দেশাবলী অনুসরণ করুন Visual Studio Code ইনস্টল করুন। এই কোর্সে আপনি Visual Studio Code-এ Python ব্যবহার করবেন, তাই Python ডেভেলপমেন্টের জন্য Visual Studio Code কনফিগার করা কীভাবে করবেন তা রিভিউ করতে পারেন।
Python-এর সঙ্গে পরিচিত হতে এই লার্ন মডিউলগুলোর মাধ্যমে কাজ করুন
🎥 উপরের ছবিতে ক্লিক করুন একটি ভিডিওর জন্য: VS Code-এ Python ব্যবহার করা।
-
Scikit-learn ইনস্টল করুন, এই নির্দেশাবলী অনুসরণ করে। আপনাকে নিশ্চিত করতে হবে আপনি Python 3 ব্যবহার করছেন, তাই ভার্চুয়াল এনভায়রনমেন্ট ব্যবহারের পরামর্শ দেওয়া হয়। লক্ষ্য করুন, যদি আপনি M1 Mac এ এই লাইব্রেরি ইনস্টল করেন, তাহলে উপরের লিঙ্কে বিশেষ নির্দেশনা আছে।
-
Jupyter Notebook ইনস্টল করুন। আপনাকে Jupyter প্যাকেজ ইনস্টল করতে হবে।
আপনার ML লেখার পরিবেশ
আপনি আপনার Python কোড তৈরি এবং মেশিন লার্নিং মডেল ডেভেলপ করতে নোটবুক ব্যবহার করবেন। এই ধরনের ফাইল ডেটা বিজ্ঞানীদের জন্য একটি সাধারণ সরঞ্জাম, এবং এগুলো তাদের সাফিক্স বা এক্সটেনশন .ipynb দ্বারা চেনা যায়।
নোটবুক একটি ইন্টারেক্টিভ পরিবেশ যা ডেভেলপারকে কোড লেখার পাশাপাশি নোট যোগ করা এবং কোডের চারপাশে ডকুমেন্টেশন লিখতে দেয়, যা পরীক্ষামূলক বা গবেষণামূলক প্রকল্পের জন্য খুবই সাহায্যকারী।
🎥 আপনাকে এই অনুশীলনটি করার জন্য উপরের ছবিতে ক্লিক করুন একটি সংক্ষিপ্ত ভিডিওর জন্য।
অনুশীলন - একটি নোটবুকের সাথে কাজ করুন
এই ফোল্ডারে, আপনি notebook.ipynb ফাইলটি পাবেন।
-
Visual Studio Code-এ notebook.ipynb খুলুন।
একটি Jupyter সার্ভার Python 3+ দিয়ে শুরু হবে। আপনি নোটবুকের যেসব অংশ চালাতে পারেন সেগুলো পাবেন, কোডের অংশসমূহ। একটি কোড ব্লক চালাতে, প্লে বাটনের মত আইকনে ক্লিক করুন।
-
mdআইকনে ক্লিক করে কিছু Markdown যোগ করুন, এবং নিচের টেক্সটটি লিখুন # Welcome to your notebook।পরবর্তীতে কিছু Python কোড যোগ করুন।
-
কোড ব্লকে লিখুন print('hello notebook')।
-
কোড চালানোর জন্য তীর আইকনে ক্লিক করুন।
আপনি নিচের প্রিন্ট করা কথাটি দেখতে পাবেন:
hello notebook
আপনি নিজের নোটবুকে মন্তব্য দিয়ে কোডের সাথে বিশ্লেষণ যোগ করতে পারেন।
✅ একটু ভাবুন, ওয়েব ডেভেলপারের কাজের পরিবেশ এবং একটি ডেটা সায়েন্টিস্টের কাজের পরিবেশ কতটা আলাদা।
Scikit-learn দিয়ে চালু হওয়া
এখন যেহেতু আপনার লোকাল পরিবেশে Python সেভাবে সেটআপ হয়েছে, এবং আপনি Jupyter Notebook ব্যবহার করতে স্বাচ্ছন্দ্য বোধ করছেন, চলুন জানি Scikit-learn নিয়ে যেভাবে স্বাচ্ছন্দ্য পেতে হয় (এটির উচ্চারণ sci যেমন science)। Scikit-learn আপনাকে ML কাজ করার জন্য একটি বিস্তৃত API প্রদান করে।
তাদের ওয়েবসাইট অনুযায়ী, "Scikit-learn একটি ওপেন সোর্স মেশিন লার্নিং লাইব্রেরি যা সুপারভাইজড এবং আনসুপারভাইজড লার্নিং সমর্থন করে। এটি মডেল ফিটিং, ডেটা প্রিপ্রসেসিং, মডেল নির্বাচন এবং মূল্যায়ন, এবং আরও অনেক ইউটিলিটি সরবরাহ করে।"
এই কোর্সে, আপনি Scikit-learn এবং অন্যান্য সরঞ্জাম ব্যবহার করে মেশিন লার্নিং মডেল তৈরি করবেন যা আমরা 'প্রচলিত মেশিন লার্নিং' কাজ বলে ডাকি। আমরা ইচ্ছাকৃতভাবে নিউরাল নেটওয়ার্ক এবং ডিপ লার্নিং এড়িয়েছি, কারণ সেগুলো আমাদের আসন্ন 'AI for Beginners' কারিকুলামে ভালোভাবে বিস্তারিত করা হবে।
Scikit-learn মডেল তৈরি এবং মূল্যায়ন করা সহজ করে তোলে। এটি প্রধানত সংখ্যামান ডেটা ব্যবহারে মনোযোগ দেয় এবং শেখার জন্য কিছু প্রস্তুত-তৈরি dataset অন্তর্ভুক্ত করে। এছাড়া এটি শিক্ষার্থীদের জন্য কিছু প্রস্তুত মডেলও অন্তর্ভুক্ত করে। চলুন প্রিপ্যাকেজড ডেটা লোড করা এবং Scikit-learn-এর বিল্ট-ইন এস্টিমেটর ব্যবহার করে আপনার প্রথম ML মডেল তৈরি করার পদ্ধতি অনুসন্ধান করি।
অনুশীলন - আপনার প্রথম Scikit-learn নোটবুক
এই টিউটোরিয়ালটি অনুপ্রাণিত একটি লিনিয়ার রিগ্রেশন উদাহরণ থেকে যা Scikit-learn এর ওয়েবসাইটে আছে।
🎥 এই অনুশীলনটি করার জন্য উপরের ছবিতে ক্লিক করুন একটি সংক্ষিপ্ত ভিডিওর জন্য।
এই পাঠের সাথে সম্পর্কিত notebook.ipynb ফাইলে, সব সেলগুলো মুছে দিন 'ট্র্যাশ ক্যান' আইকনে ক্লিক করে।
এই অংশে, আপনি Scikit-learn-এ শেখার জন্য তৈরি একটি ছোট ডায়াবেটিস dataset নিয়ে কাজ করবেন। কল্পনা করুন আপনি ডায়াবেটিস রোগীদের জন্য একটি চিকিৎসার পরীক্ষা করতে চান। মেশিন লার্নিং মডেল আপনাকে সাহায্য করতে পারে নির্ধারণ করতে কোন রোগীরা চিকিৎসার প্রতি ভালো সাড়া দেবে, বিভিন্ন ভেরিয়েবলের সংমিশ্রণ উপর ভিত্তি করে। এখানে এমনকি একটি খুব প্রাথমিক রিগ্রেশন মডেলও, যখন দৃশ্যায়িত হয়, আপনাকে ভেরিয়েবলের সম্পর্কে তথ্য দেখাতে পারে যা আপনার তাত্ত্বিক ক্লিনিকাল ট্রায়াল সাজাতে সাহায্য করবে।
✅ রিগ্রেশনের অনেক ধরনের পদ্ধতি আছে, এবং কোনটি বেছে নেবেন তা নির্ভর করে আপনি কোন প্রশ্নের উত্তর খুঁজছেন তার ওপর। যদি আপনি কারো নির্দিষ্ট বয়সের সম্ভাব্য উচ্চতা ভবিষ্যদ্বাণী করতে চান, তাহলে আপনি লিনিয়ার রিগ্রেশন ব্যবহার করবেন, কারণ আপনি একটি সংখ্যামান মান খুঁজছেন। যদি আপনি জানতে চান কোন ধরণের খাবার নিরামিষ খাবারের আওতায় পড়ে কিনা, তাহলে আপনি ক্যাটাগরি অ্যাসাইনমেন্ট খুঁজছেন, তাই লজিস্টিক রিগ্রেশন ব্যবহার করবেন। লজিস্টিক রিগ্রেশনের ব্যাপারে পরে শিখবেন। কিছু ডেটার ওপর আপনি কোন প্রশ্ন করতে পারেন এবং এগুলোর মধ্যে কোন পদ্ধতি বেশি উপযুক্ত হবে, সে বিষয়ে একটু ভাবুন।
চলুন এই কাজ শুরু করি।
লাইব্রেরি ইম্পোর্ট করুন
এই কাজের জন্য আমরা কিছু লাইব্রেরি ইম্পোর্ট করব:
- matplotlib। এটি একটি দরকারী গ্রাফিং টুল এবং আমরা এটি ব্যবহার করব একটি লাইন প্লট তৈরির জন্য।
- numpy। numpy হল Python এ সংখ্যামান ডেটা পরিচালনার জন্য একটি দরকারী লাইব্রেরি।
- sklearn। এটি Scikit-learn লাইব্রেরি।
কাজের জন্য কিছু লাইব্রেরি ইম্পোর্ট করুন।
-
নীচের কোডটি টাইপ করে ইম্পোর্ট যোগ করুন:
import matplotlib.pyplot as plt import numpy as np from sklearn import datasets, linear_model, model_selectionএখানে আপনি
matplotlib,numpyইম্পোর্ট করছেন এবংsklearnথেকেdatasets,linear_modelএবংmodel_selectionইম্পোর্ট করছেন।model_selectionডেটা ট্রেনিং ও টেস্ট সেটে ভাগ করতে ব্যবহৃত হয়।
ডায়াবেটিস dataset
বিল্ট-ইন ডায়াবেটিস dataset এ ৪৪২টি উদাহরণ (স্যাম্পল), যার মধ্যে ১০টি ফিচার ভেরিয়েবল আছে, যেমন:
- বয়স: বছর হিসেবে বয়স
- bmi: শরীরের ভর সূচক
- bp: গড় রক্তচাপ
- s1 tc: টি-সেল (সাদা রক্তকণিকার একটি ধরন)
✅ এই dataset-এ 'sex' ধারণা রয়েছে যা ডায়াবেটিস গবেষণার জন্য একটি গুরুত্বপূর্ণ ফিচার ভেরিয়েবল। অনেক মেডিকেল dataset-এ এই ধরনের বাইনারি শ্রেণীবিভাগ থাকে। চিন্তা করুন এই ধরনের শ্রেণীবিভাগগুলি কীভাবে জনসংখ্যার কিছু অংশকে চিকিৎসার বাইরে রাখে।
এখন, X এবং y ডেটা লোড করুন।
🎓 মনে রাখবেন, এটি সুপারভাইজড লার্নিং, এবং আমাদের একটি নামযুক্ত 'y' টার্গেট দরকার।
একটি নতুন কোড সেলে, load_diabetes() কল করে ডায়াবেটিস dataset লোড করুন। ইনপুট return_X_y=True নির্দেশ করে X হবে ডেটা ম্যাট্রিক্স, এবং y হবে রিগ্রেশন টার্গেট।
-
প্রথম এড্রেস এবং ডেটা ম্যাট্রিক্সের আকৃতি দেখাতে কিছু print কমান্ড যোগ করুন:
X, y = datasets.load_diabetes(return_X_y=True) print(X.shape) print(X[0])যা আপনি পাচ্ছেন তা একটি tuple। আপনি টুপলের প্রথম দুটি মান যথাক্রমে
Xএবংyতে অ্যাসাইন করছেন। টুপল সম্পর্কে আরও জানুন এখানে।আপনি দেখতে পাবেন এই ডেটা ৪৪২টি আইটেমের, যার প্রতিটির আকৃতি ১০ উপাদানের একটি অ্যারে।
(442, 10) [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 -0.04340085 -0.00259226 0.01990842 -0.01764613]✅ একটু ভাবুন ডেটা এবং রিগ্রেশন টার্গেটের সম্পর্ক নিয়ে। লিনিয়ার রিগ্রেশন ফিচার
Xএবং টার্গেট ভেরিয়েবলyএর মধ্যে সম্পর্ক পূর্বানুমান করে। ডায়াবেটিস dataset এর টার্গেট ডকুমেন্টেশনে কোথায় আছে? এই dataset কোন বিষয় প্রদর্শন করছে, টার্গেট দেখে? -
dataset এর একটি অংশ প্লট করার জন্য ৩য় কলাম নির্বাচন করুন। সব সারি বেছে নিতে
:অপারেটর ব্যবহার করুন, এবং ৩য় কলাম নির্বাচনের জন্য ইনডেক্স (২) ব্যবহার করুন। প্লটিং-এর জন্য ডেটা ২-ডি অ্যারে আকারে রিশেপ করতে হবে,reshape(n_rows, n_columns)ব্যবহার করুন। প্যারামিটার হলো -1 হলে স্বয়ংক্রিয়ভাবে সংশ্লিষ্ট মাত্রা গণনা হয়।X = X[:, 2] X = X.reshape((-1,1))✅ যে কোনো সময় ডেটার আকৃতি যাচাই করতে প্রিন্ট করুন।
-
এখন যেহেতু ডেটা প্লটের জন্য প্রস্তুত, আপনি দেখতে পারেন মেশিন সাহায্য করতে পারে কি একটি যৌক্তিক বিভাজন নির্ধারণ করতে ডেটা মধ্যে। এজন্য আপনাকে ডেটা (X) এবং টার্গেট (y) উভয়কে টেস্ট এবং ট্রেনিং সেটে ভাগ করতে হবে। Scikit-learn এর মাধ্যমে এটি করা সহজ; আপনি একটি নির্দিষ্ট পয়েন্টে টেস্ট ডেটা ভাগ করতে পারবেন।
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) -
এখন আপনার মডেল ট্রেন করানোর প্রস্তুতি! লিনিয়ার রিগ্রেশন মডেল লোড করুন এবং আপনার X ও y ট্রেনিং সেট দিয়ে
model.fit()ব্যবহার করে ট্রেন করুন:model = linear_model.LinearRegression() model.fit(X_train, y_train)✅
model.fit()একটি ফাংশন যা আপনি অনেক ML লাইব্রেরিতে যেমন TensorFlow এ দেখতে পাবেন -
এরপর, টেস্ট ডেটা ব্যবহার করে পূর্বাভাস তৈরি করুন
predict()ফাংশন দিয়ে। এটি ডেটা গ্রুপের মধ্যে একটি রেখা আঁকার জন্য ব্যবহৃত হবেy_pred = model.predict(X_test) -
এখন ডেটা একটি প্লটে দেখানোর সময়। Matplotlib এই কাজের জন্য খুব দরকারী একটি টুল। টেস্ট ডেটার X এবং y এর স্ক্যাটারপ্লট তৈরি করুন, এবং পূর্বাভাস ব্যবহার করে মডেলের ডেটা গোষ্ঠীর মধ্যে সবচেয়ে যুক্তিসঙ্গত স্থানে একটি লাইন আঁকুন।
plt.scatter(X_test, y_test, color='black') plt.plot(X_test, y_pred, color='blue', linewidth=3) plt.xlabel('Scaled BMIs') plt.ylabel('Disease Progression') plt.title('A Graph Plot Showing Diabetes Progression Against BMI') plt.show()✅ একটু ভাবুন এখানে কী ঘটছে। একটি সোজা রেখা অনেক ছোট ছোট ডেটা ডটের মধ্যে চলছে, কিন্তু এটি সঠিকভাবে কী করছে? আপনি কি দেখতে পাচ্ছেন কীভাবে এই রেখাটি ব্যবহার করে নতুন, অদেখা ডেটা বিন্দুর অবস্থান প্লটের y অক্ষের সম্পর্কেই পূর্বাভাস দিতে পারবে? এই মডেলের ব্যবহারিক গুরুত্ব শব্দে প্রকাশ করার চেষ্টা করুন।
অভিনন্দন, আপনি আপনার প্রথম লিনিয়ার রিগ্রেশন মডেল তৈরি করলেন, এতে পূর্বাভাস তৈরি করলেন এবং একটি প্লটে তা প্রদর্শন করলেন!
🚀চ্যালেঞ্জ
এই dataset থেকে একটি ভিন্ন ভেরিয়েবল প্লট করুন। হিন্ট: এই লাইনটি সম্পাদনা করুন: X = X[:,2]। এই dataset এর টার্গেটকে বিবেচনা করে, আপনি কী আবিষ্কার করতে পারেন ডায়াবেটিস কীভাবে একটি রোগ হিসেবে বিকাশ লাভ করে?
পরবর্তী-লেকচার কুইজ
পুনর্বিবেচনা ও স্ব-অধ্যয়ন
এই টিউটোরিয়ালে, আপনি সিম্পল লিনিয়ার রিগ্রেশন নিয়ে কাজ করেছেন, ইউনিভেরিয়েট বা মাল্টিপল লিনিয়ার রিগ্রেশন নয়। এই পদ্ধতিগুলোর পার্থক্য নিয়ে সামান্য পড়ুন, অথবা এই ভিডিওটি দেখুন
রিগ্রেশন ধারণা সম্পর্কে আরও জানুন এবং ভাবুন এই কৌশল দ্বারা কী ধরনের প্রশ্নের উত্তর দেওয়া যায়। আপনার বোঝাপড়া গভীর করতে এই টিউটোরিয়ালটি গ্রহণ করুন।
অ্যাসাইনমেন্ট
অস্বীকৃতি: এই নথিটি AI অনুবাদ পরিষেবা Co-op Translator ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।






