কম্পিউটার টিউটোরিয়াল

পাইথনে ডেটার সাথে পলিনোমিয়ালের লিস্ট-স্কোয়ার ফিট পানো

পাইথন নামপাই-এর polynomial.polyfit() ব্যবহার করে ডেটার সাথে পলিনোমিয়ালের লিস্ট-স্কোয়ার ফিট পাওয়া যায়। এই মেথডটি কম থেকে উচ্চ ক্রমে সাজানো পলিনোমিয়ালের সহগ ফেরত দেয়। যদি y 2-D হয়, তবে coef-র কলাম k-এ থাকা সহগগুলো y-এর k-তম কলামের ডেটার সাথে পলিনোমিয়াল ফিট উপস্থাপন করে। প্যারামিটার x হলো M স্যাম্পল (ডেটা) পয়েন্টের x-কোয়ার্ডিনেট (x[i], y[i])।

প্যারামিটার y হলো স্যাম্পল পয়েন্টের y-কোয়ার্ডিনেট। একই x-কোয়ার্ডিনেট শেয়ার করা একাধিক স্যাম্পল পয়েন্ট সেট আলাদা আলাদা করে polyfit-এ একবার কল করে ফিট করা যায়, এর জন্য y-তে একটি 2-D অ্যারে পাস করতে হবে যাতে প্রতি কলামে একটি ডেটা সেট থাকে। প্যারামিটার deg হলো ফিটিং পলিনোমিয়ালের ডিগ্রি। যদি deg একক ইন্টিজার হয়, তবে deg'-তম পদ পর্যন্ত সব পাদ ফিটে অন্তর্ভুক্ত থাকে।

প্যারামিটার rcond হলো ফিটের সাপেক্ষ কন্ডিশন নাম্বার। rcond-র চেয়ে ছোট সিঙ্গুলার ভ্যালু, সর্বোচ্চ সিঙ্গুলার ভ্যালুর সাপেক্ষে, উপেক্ষা করা হবে। ডিফল্ট মান len(x)*eps, যেখানে eps প্ল্যাটফর্মের ফ্লোট টাইপের সাপেক্ষ প্রিসিশন, অধিকাংশ ক্ষেত্রে প্রায় 2e-16। প্যারামিটার full হলো রিটার্ন ভ্যালুর প্রকৃতি নির্ধারণকারী স্যুইচ। False (ডিফল্ট) হলে শুধু সহগ ফেরত দেওয়া হয়; True হলে সিঙ্গুলার ভ্যালু ডিকম্পোজিশন থেকে ডায়াগনস্টিক তথ্যও ফেরত দেওয়া হয়।

প্যারামিটার w হলো ওয়েইট। যদি None না হয়, তবে w[i] x[i]-এ y[i] - y_hat[i] অনস্কোয়ার্ড রেজিডুয়ালে প্রয়োগ হয়। আদর্শভাবে ওয়েইটগুলো এভাবে বেছে নেওয়া উচিত যাতে w[i]*y[i] প্রোডাক্টের এররগুলোর একই ভ্যারিয়ান্স থাকে। ইনভার্স-ভ্যারিয়ান্স ওয়েইটিং ব্যবহার করার সময় w[i] = 1/sigma(y[i]) ব্যবহার করুন। ডিফল্ট মান None।

ধাপসমূহ

প্রথমে প্রয়োজনীয় লাইব্রেরি আমদানি করুন:

import numpy as np
from numpy.polynomial import polynomial as P

x-কোয়ার্ডিনেট:

x = np.linspace(-1,1,51)

x-কোয়ার্ডিনেট প্রদর্শন করুন:

print("X কো-অর্ডিনেট...\n", x)

y-কোয়ার্ডিনেট:

y = x**3 - x + np.random.randn(len(x))
print("\nY কো-অর্ডিনেট...\n", y)

polynomial.polyfit() ব্যবহার করে ডেটার সাথে পলিনোমিয়ালের লিস্ট-স্কোয়ার ফিট পান:

c, stats = P.polyfit(x, y, 3, full=True)
print("\nফলাফল...\n", c)
print("\nফলাফল...\n", stats)

উদাহরণ

import numpy as np
from numpy.polynomial import polynomial as P

# x-কোয়ার্ডিনেট
x = np.linspace(-1,1,51)

# x-কোয়ার্ডিনেট প্রদর্শন করুন
print("X কো-অর্ডিনেট...\n", x)

# y-কোয়ার্ডিনেট
y = x**3 - x + np.random.randn(len(x))
print("\nY কো-অর্ডিনেট...\n", y)

# ডেটার সাথে পলিনোমিয়ালের লিস্ট-স্কোয়ার ফিট পান
c, stats = P.polyfit(x, y, 3, full=True)
print("\nফলাফল...\n", c)
print("\nফলাফল...\n", stats)

আউটপুট

X কো-অর্ডিনেট... [-1. -0.96 -0.92 -0.88 -0.84 -0.8 -0.76 -0.72 -0.68 -0.64 -0.6 -0.56 -0.52 -0.48 -0.44 -0.4 -0.36 -0.32 -0.28 -0.24 -0.2 -0.16 -0.12 -0.08 -0.04 0. 0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.88 0.92 0.96 1. ]
Y কো-অর্ডিনেট... [ 0.24282445 -0.48320773 -1.18068109 -0.48486683 0.80514762 0.48976259 0.31363813 -0.03382685 -0.92334611 0.86835062 0.24661201 0.9790978 0.03782101 0.12213365 -1.37248029 1.99891304 -0.09825977 1.74524931 0.70560858 0.15516069 0.69169705 0.76957712 -1.21919676 1.50064825 1.32101339 -2.51479992 -0.28998783 -1.24293076 0.45927699 -0.53484746 0.50455341 -0.06351788 -2.69585303 -0.46833578 1.4924168 -2.42374146 -1.91934499 -1.36311466 -1.23946547 -1.56822005 -0.79648036 1.58269324 -0.53682862 -0.90861958 -0.28174461 -0.10775622 0.58535687 1.06373501 -2.28991738 2.01597286 -0.75841069]
ফলাফল... [-0.17198829 -1.84107674 0.09439374 2.39030912]
ফলাফল... [array([60.43653521]), 4, array([1.38446749, 1.32119158, 0.50443316, 0.28853036]), 1.1324274851176597e-14]
  1. পাইথন - DataFrame কলামের ডেটা টাইপ বের করা

  2. পাইথনে টেনসরফ্লো দিয়ে ডেটা মডেলে ফিট (fit) করা

  3. পাইথনে পলিনোমিয়াল রিগ্রেশন মডেল ফিট করে নন-লিনিয়ার ট্রেন্ড বোঝার পদ্ধতি

  4. পাইথনে scikit-learn লাইব্রেরি ব্যবহার করে ইমেজের রেজোলিউশন কীভাবে বের করবেন?