NumPy Least Squares

Numpy Least Squares



היום, אנו הולכים ללמוד על הריבועים הקטנים במשוואות ליניאריות וכיצד ליישם את שיטת הריבוע הקטנה ביותר להתאמה הטובה ביותר לקו הרגרסיה במערך הנתונים המסופקים. אבל לפני כן, בואו לקבל את הידע הבסיסי של NumPy. NumPy היא אחת החבילות המתמטיות הטובות ביותר של Python המספקת שירותים עבור מערכים ומטריצות רב-ממדיות יחד עם מגוון רחב של פעולות מספריות מורכבות העשויות להתבצע על מטריצות/מערכים אלו.

אחת השיטות של Python lstsq() משמשת כדי למצוא את קו הרגרסיה של המשוואה הליניארית הידועה ax=b המתאים ביותר למשוואה זו. זה אומר שעליך לקבוע את הקו שמציג כראוי את הקשר בין נקודות x ו-y אם הנתונים שלך מצביעים על כך שיש כזו. הקו בין שתי הנקודות ידוע בתור קו רגרסיה כאשר הוא משמש למציאת הריבוע הקטן ביותר דרך המשוואה הזו, ax=b.

תחביר:

בואו נתחיל ללמוד את סגנון היישום של הפונקציה linalg.lstsq(). ראשית, אנו כותבים את שם הספרייה בו אנו משתמשים ב- Python שהוא 'numpy'. לאחר מכן, נשרשר את הפונקציה linalg() ונשרשר את הפונקציה lstsq(). הפונקציה linalg() פירושה אלגברה לינארית. הוא משמש תמיד עם הפונקציה lstsq() מכיוון שהוא ביטוי אלגברי ליניארי. לאחר מכן, נעביר את הארגומנטים בסוגריים של הפונקציות.









פרמטרים:

בואו נבין את הפרמטרים של הפונקציה linalg.lstsq():



נקודה 1: זוהי מטריצת המקדם.





נקודה 2: המטריצה ​​או המערך הזה מכילים משתנים תלויים.

rcond: סוג הנתונים של זה הוא צף. יחס rcond משמש כחתך עבור ערכי יחיד קטנים יותר של point_1. אם ערך יחיד קטן מה-rcond כפול האלמנט הסינגולרי הגדול ביותר של point_1, הוא נחשב לאפס בעת קביעת הדרגה.



ערך החזרה:

בתמורה, נקבל את הריבוע הקטן ביותר של המשתנה x הידוע במשוואה ax=b.

דוגמה 1:

בואו נתחיל ליישם את הדוגמה הראשונה שלנו לשיטה הפחות ריבועית של ספריית Python, NumPy. ראשית, אנחנו צריכים מהדר Python כדי שנוכל לקודד בו. פתח את המהדר. אתה גם צריך להתקין את ספריית NumPy מכיוון שאנו משתמשים באחת מהפונקציות של NumPy שהיא הפונקציה lstsq() . לאחר מכן, עליך לייבא את חבילת NumPy בה. ראשית, כתוב את מילת המפתח 'ייבוא' שאומרת למהדר שאנו הולכים לייבא את החבילה. לאחר מכן, עלינו לכתוב את שם החבילה שבו אנו משתמשים בפונקציה שהיא 'numpy'. ואז, אנחנו גם כותבים את השם החלופי של NumPy 'np' מכיוון שמתכנתים רבים משתמשים בגישה זו. זוהי גישת תכנות טובה, והיא חוסכת זמן.

לאחר ייבוא ​​החבילה, אנו מתחילים לכתוב את שורת הקוד האמיתית שאנו רוצים לעשות. אנו מדפיסים את ההודעות תחילה כדי שהמשתמש יוכל להבין בקלות מה אנחנו עושים בדוגמה באמצעות ההצהרה print(). אנו יוצרים את המערך החד-ממדי 'A' באמצעות הפונקציה array() ולאחר מכן נדפיס אותו על ידי קריאה למשפט print(). לאחר מכן, אנו יוצרים מערך חד מימדי נוסף 'B' באמצעות הפונקציה array() ומדפיס אותו באמצעות הפונקציה print() .

יְבוּא רדום כפי ש לְמָשָׁל

הדפס ( 'יישום של שיטת הריבוע הפחות ב-NumPy:' )

א = לְמָשָׁל מַעֲרָך ( [ 1 , שתיים , 1 , 1 , 1 , שתיים , שתיים , 1 , 1 ] )

הדפס ( ' \n מערך A הוא: ' , א )

ב = לְמָשָׁל מַעֲרָך ( [ 4 , 3 , 5 , 4 , שתיים , 3 , 6 , 3 , שתיים ] )

הדפס ( ' \n מערך B הוא: ' , ב )

איקס = לְמָשָׁל זֶרַע פִּישׁתִים . lstsq ( לְמָשָׁל vstack ( [ א , לְמָשָׁל יחידות ( רק ( א ) ) ] ) . ט , ב , rcond = אף אחד ) [ 0 ]

הדפס ( ' \n הריבוע הכי פחות הוא: ' , איקס )

לאחר יצירת שתי הנקודות A ו-B, אנו מיישמים את הפונקציה lstsq() . אבל ראשית, אנו משתמשים בפונקציה vstack() כדי לערום את האלמנטים של 'A', מבחינת רצף. לאחר מכן, אנו לוקחים את ההעברה של מערך 'A'. לאחר מכן, נעביר את הפונקציה vstack() כארגומנט הראשון של הפונקציה lstsq() . הארגומנט השני הוא מערך 'B' והארגומנט השלישי הוא 'rcond' בו אנו מגדירים את הערך של rcond כ'ללא'. לאחר מכן, אנו מאחסנים את כל הפונקציה במערך אחר בשם 'x' שמראה שזהו המשוואה הליניארית הידועה, ax=b. לאחר מכן, אנו מציגים את התוצאות ולכן אנו משתמשים במשפט print() עבור זה ומעבירים בו את מערך ה-'x'.

דוגמה 2:

עכשיו, בואו נתחיל ליישם דוגמה נוספת של NumPy הריבועים הקטנים ביותר. אנו תמיד מייבאים תחילה את הספרייה בה אנו משתמשים בתוכנית שהיא NumPy. ראשית, אנו כותבים את מילת המפתח 'יבוא' כדי לקבל את החבילה בתוכנית. אנחנו גם כותבים את שם החבילה שהוא 'numpy' ואז הכינוי שלו, 'np'. לאחר מכן, אנו קוראים לשיטת print() כדי שנוכל להציג את ההודעה הניתנת לשחזור של הריבועים הקטנים ביותר להבנה טובה יותר של המשתמש.

לאחר מכן, אנו יוצרים את שם המערך 'x_axis' ומאחסנים בו את המערך באמצעות הפונקציה arange() . לאחר מכן, אנו מדפיסים אותו בשיטת print() . לאחר מכן, אנו יוצרים שם מערך נוסף 'y_axis' ומאחסנים בו את המערך שיצרנו באיור הבא.

לאחר יצירת שני המערכים, אנו מיישמים את שיטת ones() במערך x_axis ומאחסנים אותה במערך אחר בשם 'array_a'. ואז, אנחנו גם מדפיסים את המערך הזה. אנו יוצרים מערך נוסף בשם 'arg_reg_line' ומיישמים עליו פונקציה linalg.lstsq(). לאחר מכן, נעביר את הפרמטרים לפונקציה הזו כדי שנוכל לקבל את המינימום הריבועים בין שני מערכים או נקודות. הפרמטר הראשון הוא שאנו לוקחים את ההעברה של array_a. הפרמטר השני הוא הנקודה השנייה שהיא ציר ה-y. לאחר מכן, יש לנו 'rcond' שמכיל את הערך 'ללא'. לאחר מכן אנו מציגים את המערך באמצעות שיטת print() .

יְבוּא רדום כפי ש לְמָשָׁל

הדפס ( 'יישום של הפונקציה linalg.lstsq(): ' )

x_axis = לְמָשָׁל לסדר ( 0 , 10 )

הדפס ( ' \n הערך של ציר x הם: ' , x_axis )

y_axis = [ 10.3 , 10.5 , אחד עשר , 11.5 , 13.2 , 13.9 , 14 , 15.5 , 16.6 , 17 ]

הדפס ( ' \n הערך של ציר y הם: ' , y_axis )

array_a = לְמָשָׁל מַעֲרָך ( [ x_axis , לְמָשָׁל יחידות ( 10 ) ] )

הדפס ( ' \n המערך הוא: \n ' , array_a )

arg_reg_line = לְמָשָׁל זֶרַע פִּישׁתִים . lstsq ( array_a. ט , y_axis , rcond = אף אחד ) [ 0 ]

הדפס ( ' \n הפרמטרים של קו רגרסיה הם: ' , arg_reg_line )

reg_line = arg_reg_line [ 0 ] * x_axis + arg_reg_line [ 1 ]

יְבוּא matplotlib. pyplot כפי ש plt

plt. עלילה ( x_axis , reg_line , 'ר-' )

plt. עלילה ( x_axis , y_axis , 'או' )

plt. כותרת ( 'קו רגרסיה לינארית' )

plt. xlabel ( 'ציר X' )

plt. ylabel ( 'ציר Y' )

plt. הופעה ( )

הנה הפלט של הדוגמה שיושמה קודם לכן:

אנו מייבאים חבילה נוספת של NumPy שהיא חבילת 'matplotlib' המשמשת לשרטוט הגרף. לאחר מכן, אנו משרטטים את ערכי ה-x_axis ו-y_axis_values. לאחר מכן, אנו מגדירים את הכותרת והתוויות של הגרף. לבסוף, אנו מציגים את הגרף בשיטת show() .

להלן הגרף הרצוי של הדוגמה הנתונה:

סיכום

במאמר זה, למדנו מהו הריבוע הקטן ביותר וכיצד נקבל את ה-linalg.lstsq() של המשתנה הלא ידוע x באמצעות המשוואה הליניארית ax=b. השתמשנו במספר פונקציות של NumPy כדי למצוא את הריבועים הקטנים ביותר ויישמנו כמה דוגמאות עם הסברים מפורטים להבנה טובה יותר של המשתמש.