סיכום: אתה יכול לחשב את פונקציית הסיגמואיד הלוגיסטית ב-Python באמצעות:
- מודול המתמטיקה:
1 / (1 + math.exp(-x))
- ספריית Numpy:
1 / (1 + np.exp(-x))
- ספריית Scipy:
scipy.special.expit(x)
בְּעָיָה: בהינתן פונקציה סיגמואידית לוגיסטית:

אם הערך של איקס נתון, איך תחשב F(x) בפייתון? נניח x=0.458
.
פתק: פונקציה סיגמואידית לוגיסטית מוגדרת כ (1/(1 + e^-x)) כאשר x הוא משתנה הקלט ומייצג כל מספר ממשי. הפונקציה מחזירה ערך שנמצא בטווח -1 ו-1. היא יוצרת an בצורת S עקומה כשמתווים על גרף.
❒שיטה 1: פונקציית Sigmoid בשימוש ב-Python מתמטיקה מודול
גִישָׁה: הגדר פונקציה שמקבלת איקס כקלט וחוזר F(x) כפי ש 1/(1 + math.exp(-x)).
קוד:
import math def sigmoid(x): return 1 / (1 + math.exp(-x)) print(sigmoid(0.458)) # OUTPUT: 0.6125396134409151
זְהִירוּת: הפתרון שלעיל נועד בעיקר כתרגום פשוט אחד לאחד של ביטוי הסיגמואיד הנתון לקוד Python. זה לֹא נבדק בקפדנות או נחשב למימוש מושלם ונכון מבחינה מספרית. במקרה שאתה צריך יישום חזק יותר, חלק מהפתרונות שיבואו בעקבותיהם עשויים להתגלות כמסייעים יותר בפתרון המקרה שלך.
להלן יישום יציב יותר של הפתרון לעיל:
import math def sigmoid(x): if x >= 0: k = math.exp(-x) res = 1 / (1 + k) return res else: k = math.exp(x) res = k / (1 + k) return res print(sigmoid(0.458))
פתק: exp()
היא שיטה של מודול המתמטיקה ב-Python שמחזירה את הערך של ה הועלה לכוחו של איקס. כאן, איקס הוא ערך הקלט המועבר ל- exp() פונקציה, בעוד ה מייצג את הבסיס של המערכת הטבעית של הלוגריתם (בערך 2.718282).
❒שיטה 2: פונקציית Sigmoid ב- Python שימוש נמפי
ניתן ליישם את פונקציית הסיגמואיד גם באמצעות ה exp()
השיטה של מודול Numpy. numpy.exp()
עובד בדיוק כמו ה math.exp()
שיטה, עם היתרון הנוסף של היכולת לטפל במערכים יחד עם מספרים שלמים וערכי צפים.
בואו נסתכל על דוגמה כדי לדמיין כיצד ליישם את פונקציית הסיגמואיד באמצעות numpy.exp()
import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) print(sigmoid(0.458)) # OUTPUT: 0.6125396134409151
ככל הנראה גרסה יציבה יותר מבחינה מספרית של היישום לעיל היא כדלקמן:
import numpy as np def sigmoid(x): return np.where(x < 0, np.exp(x) / (1 + np.exp(x)), 1 / (1 + np.exp(-x))) print(sigmoid(0.458)) # OUTPUT: 0.6125396134409151
#דוגמה 2: בואו נסתכל על יישום של פונקציית הסיגמואיד על מערך של ערכים מרווחים באופן שווה בעזרת גרף בדוגמה הבאה.
import numpy as np import matplotlib.pyplot as plt def sigmoid(x): return np.where(x < 0, np.exp(x) / (1 + np.exp(x)), 1 / (1 + np.exp(-x))) val = np.linspace(start=-10, stop=10, num=200) sigmoid_values = sigmoid(val) plt.plot(val, sigmoid_values) plt.xlabel("x") plt.ylabel("sigmoid(X)") plt.show()
תְפוּקָה:

הֶסבֵּר:
- בתחילה, יצרנו מערך של ערכים מרווחים באופן שווה בטווח של -10 ו-10 בעזרת ה-
linspace
השיטה של מודול Numpy, כלומר, val. - לאחר מכן השתמשנו בפונקציה sigmoid על ערכים אלה. אם תדפיס אותם, תגלה שהם קרובים מאוד ל-0 או קרובים מאוד ל-1. ניתן להמחיש זאת גם לאחר שרטוט הגרף.
- לבסוף, שרטטנו את גרף הפונקציות הסיגמואידיות שחישבנו בעבר בעזרת הפונקציה. ה ציר x ממפה את הערכים הכלולים ב ואל, בזמן ש ציר y ממפה את הערכים המוחזרים על ידי הפונקציה sigmoid.
האם אתה רוצה להיות מאסטר NumPy? בדוק את ספר הפאזלים האינטראקטיבי שלנו הפסקת קפה NumPy והגבר את כישורי מדעי הנתונים שלך! (קישור אמזון נפתח בכרטיסייה חדשה.)
❒שיטה 3: פונקציית Sigmoid ב- Python באמצעות ה Scipy סִפְרִיָה
דרך יעילה נוספת לחישוב הפונקציה sigmoid ב- Python היא להשתמש ב- Scipy ספריות expit
פוּנקצִיָה.
דוגמה 1: חישוב סיגמואיד לוגיסטי עבור ערך נתון
from scipy.special import expit print(expit(0.458)) # OUTPUT: 0.6125396134409151
דוגמה 2: חישוב סיגמואיד לוגיסטי עבור מספר ערכים
from scipy.special import expit x = [-2, -1, 0, 1, 2] for value in expit(x): print(value)
תְפוּקָה:
0.11920292202211755 0.2689414213699951 0.5 0.7310585786300049 0.8807970779778823
מומלץ לקרוא: רגרסיה לוגיסטית ב-Python Sikit-Learn
❒שיטה 4: הפוך את פונקציית tanh
פתרון נוסף לחישוב פונקציית הסיגמואיד הוא להפוך את פונקציית ה-tanh של מודול המתמטיקה כפי שמוצג להלן:
import math sigmoid = lambda x: .5 * (math.tanh(.5 * x) + 1) print(sigmoid(0.458)) # OUTPUT: 0.6125396134409151
מאז, מתמטית sigmoid(x) == (1 + tanh(x/2))/2
. לפיכך, היישום לעיל אמור לעבוד והוא פתרון תקף. עם זאת, השיטות שהוזכרו קודם לכן הן ללא ספק יציבות יותר מבחינה מספרית ועדיפות על פתרון זה.
סיכום
ובכן, זהו המדריך הזה. דנו בארבע דרכים לחישוב הפונקציה הסיגמואידית הלוגיסטית ב- Python. אל תהסס להשתמש באחד שמתאים לדרישות שלך.
אני מקווה שמאמר זה עזר לך. אנא להירשם והישארו מעודכנים לעוד פתרונות והדרכות מעניינים. למידה מהנה!
TensorFlow – מבוא מעשי ללמידה עמוקה ורשתות עצביות למתחילים
קורס זה נותן לך מבוא מקסים ללמידה עמוקה ורשתות עצביות באמצעות ספריית TensorFlow של גוגל למתחילים Python.
קישור לכתבת המקור – 2022-05-24 23:25:40