כיצד לחשב פונקציה סיגמואידית לוגיסטית ב- Python? – פינקסטר

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
Share on email
פרסומת
MAGNEZIX מגנזיקס


סיכום: אתה יכול לחשב את פונקציית הסיגמואיד הלוגיסטית ב-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 והגבר את כישורי מדעי הנתונים שלך! (קישור אמזון נפתח בכרטיסייה חדשה.)

הפסקת קפה 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

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on telegram
Telegram
Share on whatsapp
WhatsApp
Share on email
Email
פרסומת
תכנון תשתיות רפואיות

עוד מתחומי האתר