יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy

"במקום להתמקד בקוד, חברות צריכות להתמקד בפיתוח שיטות הנדסה שיטתיות לשיפור הנתונים בדרכים אמינות, יעילות ושיטתיות. במילים אחרות, חברות צריכות לעבור מגישה ממוקדת מודל לגישה ממוקדת נתונים". – אנדרו נג

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

רנגלר הנתונים של אמזון SageMaker הוא שירות ב סטודיו SageMaker של אמזון המספק פתרון מקצה לקצה לייבוא, הכנה, שינוי, הצגת נתונים וניתוח נתונים תוך שימוש בקידוד מועט עד ללא. אתה יכול לשלב זרימת הכנת נתונים של Data Wrangler בזרימות העבודה של למידת מכונה (ML) שלך כדי לפשט את עיבוד הנתונים מראש והנדסת תכונות, ולהעביר את הכנת הנתונים לייצור מהר יותר ללא צורך ביצירת קוד PySpark, התקנת Apache Spark או יצירת אשכולות.

עבור תרחישים שבהם אתה צריך להוסיף סקריפטים מותאמים אישית משלך עבור טרנספורמציות נתונים, אתה יכול לכתוב את היגיון השינוי שלך ב-Pandas, PySpark, PySpark SQL. Data Wrangler תומך כעת בספריות NLTK ו- SciPy ליצירת טרנספורמציות מותאמות אישית כדי להכין נתוני טקסט עבור ML ולבצע אופטימיזציה של אילוצים.

אתה עלול להיתקל בתרחישים שבהם עליך להוסיף סקריפטים מותאמים אישית משלך לשינוי נתונים. עם יכולת ההמרה המותאמת אישית של Data Wrangler, אתה יכול לכתוב את היגיון הטרנספורמציה שלך ב-Pandas, PySpark, PySpark SQL.

בפוסט זה, אנו דנים כיצד תוכל לכתוב את השינוי המותאם אישית שלך ב-NLTK כדי להכין נתוני טקסט עבור ML. אנו גם נשתף דוגמה לשינוי קוד מותאם אישית באמצעות מסגרות נפוצות אחרות כגון NLTK, NumPy, SciPy ו-skit-learn וכן שירותי AWS AI. לצורך תרגיל זה, אנו משתמשים ב- מערך טיטאניק, מערך נתונים פופולרי בקהילת ML, שנוסף כעת בתור א מערך לדוגמה בתוך Data Wrangler.

סקירת פתרונות

Data Wrangler מספקת מעל 40 מחברים מובנים לייבוא ​​נתונים. לאחר ייבוא ​​הנתונים, תוכל לבנות את ניתוח הנתונים והטרנספורמציות שלך באמצעות למעלה מ-300 טרנספורמציות מובנות. לאחר מכן תוכל ליצור צינורות מתועשים כדי לדחוף את התכונות אליהם שירות אחסון פשוט של אמזון (אמזון S3) או חנות הפונקציות של אמזון SageMaker. התרשים הבא מציג את הארכיטקטורה ברמה גבוהה מקצה לקצה.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

תנאים מוקדמים

Data Wrangler היא תכונה של SageMaker הזמינה בתוכו סטודיו SageMaker של אמזון. אתה יכול לעקוב תהליך ההצטרפות לסטודיו לסובב את סביבת הסטודיו ואת המחברות. למרות שאתה יכול לבחור מבין כמה שיטות אימות, הדרך הפשוטה ביותר ליצור תחום Studio היא לבצע את הוראות להפעלה מהירה. ההתחלה המהירה משתמשת באותן הגדרות ברירת המחדל כמו ההגדרה הרגילה של Studio. אתה יכול גם לבחור לעלות על הסיפון באמצעות AWS IAM Identity Center (יורש של AWS Single Sign-On) לאימות (ראה נכלל ב-Amazon SageMaker Domain באמצעות IAM Identity Center).

ייבא את מערך הנתונים של Titanic

התחל את סביבת הסטודיו שלך וצור חדש זרימת רנגלר נתונים. אתה יכול לייבא מערך נתונים משלך או להשתמש במערך נתונים לדוגמה (Titanic) כפי שמוצג בצילום המסך הבא. Data Wrangler מאפשר לך לייבא מערכי נתונים ממקורות נתונים שונים. במקרה השימוש שלנו, אנו מייבאים את מערך הנתונים לדוגמה מדלי S3.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

לאחר הייבוא, תראה שני צמתים (צומת המקור וצומת סוג הנתונים) בזרימת הנתונים. Data Wrangler מזהה אוטומטית את סוג הנתונים עבור כל העמודות במערך הנתונים.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

טרנספורמציות מותאמות אישית עם NLTK

להכנת נתונים והנדסת תכונות עם Data Wrangler, אתה יכול להשתמש ביותר מ-300 טרנספורמציות מובנות או לבנות טרנספורמציות מותאמות אישית משלך. טרנספורמציות מותאמות אישית ניתן לכתוב כשלבים נפרדים בתוך Data Wrangler. הם הופכים לחלק מקובץ ה-.flow בתוך Data Wrangler. תכונת ההמרה המותאמת אישית תומכת ב- Python, PySpark ו- SQL כשלבים שונים בקטעי קוד. לאחר יצירת קבצי מחברת (.ipynb) מקובץ ה-.flow או שקובץ ה-.flow משמש כמתכונים, קטעי קוד ההמרה המותאמים אישית נמשכים ללא צורך בשינויים כלשהם. עיצוב זה של Data Wrangler מאפשר טרנספורמציות מותאמות אישית להפוך לחלק מעבודת SageMaker Processing לעיבוד מערכי נתונים מסיביים עם טרנספורמציות מותאמות אישית.

למערך הנתונים של Titanic יש כמה תכונות (שם ו-home.dest) המכילות מידע טקסט. אנו משתמשים NLTK לפצל את עמודת השם ולחלץ את שם המשפחה, ולהדפיס את תדירות שמות המשפחה. NLTK היא פלטפורמה מובילה לבניית תוכניות Python לעבודה עם נתונים בשפה אנושית. הוא מספק ממשקים קלים לשימוש מעל 50 משאבים קורפוסים ומילוניים כגון WordNet, יחד עם חבילה של ספריות עיבוד טקסט לסיווג, טוקניזציה, אסימון, תיוג, ניתוח והיגיון סמנטי, ועטיפות לספריות עיבוד שפה טבעית בעוצמה תעשייתית (NLP).

כדי להוסיף טרנספורמציה חדשה, בצע את השלבים הבאים:

  1. בחר את סימן הפלוס ובחר הוסף טרנספורמציה.
  2. בחרו הוסף שלב ולבחור טרנספורמציה מותאמת אישית.

אתה יכול ליצור טרנספורמציה מותאמת אישית באמצעות Pandas, PySpark, Python בהגדרת משתמש ו-SQL PySpark.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

  1. בחרו פייתון (פנדה) והוסיפו את הקוד הבא כדי לחלץ את שם המשפחה מעמודת השם:
    import nltk
    nltk.download('punkt')
    tokens = [nltk.word_tokenize(name) for name in df['Name']] # Extract the last names of the passengers
    df['last_name'] = [token[0] for token in tokens]

  2. בחרו תצוגה מקדימה לבדיקת התוצאות.

המסך הבא מציג את last_name עמודה חולצה.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

  1. הוסף עוד שלב טרנספורמציה מותאם אישית כדי לזהות את התפלגות התדירות של שמות המשפחה, באמצעות הקוד הבא:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. בחרו תצוגה מקדימה לסקור את תוצאות התדירות.יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

טרנספורמציות מותאמות אישית עם שירותי AI של AWS

שירותי AI שהוכשרו מראש ל-AWS מספקים מודיעין מוכן עבור היישומים וזרימות העבודה שלך. שירותי AI של AWS משתלבים בקלות עם האפליקציות שלך כדי לתת מענה למקרי שימוש נפוצים רבים. כעת אתה יכול להשתמש ביכולות של שירותי AI של AWS כשלב טרנספורמציה מותאם אישית ב-Data Wrangler.

אמזון להתבונן משתמש ב-NLP כדי לחלץ תובנות לגבי תוכן המסמכים. הוא מפתח תובנות על ידי זיהוי הישויות, ביטויי המפתח, השפה, הרגשות ומרכיבים נפוצים אחרים במסמך.

אנו משתמשים ב- Amazon Comprehend כדי לחלץ את הישויות מעמודת השם. השלם את השלבים הבאים:

  1. הוסף שלב טרנספורמציה מותאם אישית.
  2. בחרו פייתון (פנדה).
  3. הזן את הקוד הבא כדי לחלץ את הישויות:
    import boto3
    comprehend = boto3.client("comprehend") response = comprehend.detect_entities(LanguageCode = 'en', Text = df['name'].iloc[0]) for entity in response['Entities']:
    print(entity['Type'] + ":" + entity["Text"])

  4. בחרו תצוגה מקדימה ולדמיין את התוצאות.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

כעת הוספנו שלוש טרנספורמציות מותאמות אישית ב-Data Wrangler.

  1. בחרו זרימת נתונים כדי לדמיין את זרימת הנתונים מקצה לקצה.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

טרנספורמציות מותאמות אישית עם NumPy ו- ​​SciPy

רדום היא ספריית קוד פתוח עבור Python המציעה פונקציות מתמטיות מקיפות, מחוללי מספרים אקראיים, שגרות אלגברה לינארית, טרנספורמציות פורייה ועוד. SciPy היא ספריית Python בקוד פתוח המשמשת למחשוב מדעי ומחשוב טכני, המכילה מודולים לאופטימיזציה, אלגברה לינארית, אינטגרציה, אינטרפולציה, פונקציות מיוחדות, טרנספורמציה פורייה מהירה (FFT), עיבוד אותות ותמונה, פותרים ועוד.

טרנספורמציות מותאמות אישית של Data Wrangler מאפשרות לך לשלב את Python, PySpark ו- SQL כשלבים שונים. בזרימת Data Wrangler הבאה, פונקציות שונות מחבילות Python, NumPy ו- ​​SciPy מיושמות על מערך הנתונים של Titanic כמספר שלבים.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

טרנספורמציות NumPy

בעמודת התעריפים של מערך הנתונים של Titanic יש תעריפי עלייה למטוס של נוסעים שונים. ההיסטוגרמה של עמודת התעריף מציגה התפלגות אחידה, למעט הפח האחרון. על ידי החלת טרנספורמציות של NumPy כמו יומן או שורש ריבועי, נוכל לשנות את ההתפלגות (כפי שמוצג על ידי שינוי השורש הריבועי).

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי. יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

ראה את הקוד הבא:

import pandas as pd
import numpy as np
df["fare_log"] = np.log(df["fare_interpolate"])
df["fare_sqrt"] = np.sqrt(df["fare_interpolate"])
df["fare_cbrt"] = np.cbrt(df["fare_interpolate"])

טרנספורמציות SciPy

פונקציות SciPy כמו z-score מיושמות כחלק מהטרנספורמציה המותאמת אישית כדי לתקן את חלוקת התעריפים עם סטיית ממוצע וסטיית תקן.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

ראה את הקוד הבא:

df["fare_zscore"] = zscore(df["fare_interpolate"])
from scipy.stats import zscore

אופטימיזציה של אילוצים עם NumPy ו- ​​SciPy

טרנספורמציות מותאמות אישית של Data Wrangler יכולות להתמודד עם טרנספורמציות מתקדמות כמו אופטימיזציה של אילוצים יישום פונקציות אופטימיזציה של SciPy ושילוב של SciPy עם NumPy. בדוגמה הבאה, מחיר הנסיעה כפונקציה של גיל אינו מראה מגמה ניתנת לצפייה. עם זאת, אופטימיזציה של אילוצים יכולה לשנות את מחיר הנסיעה כפונקציה של גיל. תנאי האילוץ במקרה זה הוא שהתעריף הכולל החדש יישאר זהה לתעריף הכולל הישן. טרנספורמציות מותאמות אישית של Data Wrangler מאפשרות לך להפעיל את פונקציית האופטימיזציה של SciPy כדי לקבוע את המקדם האופטימלי שיכול לשנות את מחיר הנסיעה כפונקציה של גיל בתנאי אילוצים.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי. יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

import numpy as np
import scipy.optimize as opt
import pandas as pd df2 = pd.DataFrame({"Y":df["fare_interpolate"], "X1":df["age_interpolate"]}) # optimization defination
def main(df2):
x0 = [0.1]
res = opt.minimize(fun=obj, x0=x0, args=(df2), method="SLSQP", bounds=[(0,50)], constraints=cons)
return res # objective function
def obj(x0, df2):
sumSquares = np.sum(df2["Y"] - x0*df2["X1"])
return sumSquares # constraints
def constraint1(x0):
sum_cons1 = np.sum(df2["Y"] - x0*df2["X1"]) - 0
return sum_cons1
con1 = {'type': 'eq', 'fun': constraint1}
cons = ([con1]) print(main(df2)) df["new_fare_age_optimized"]=main(df2).x*df2["X1"]

לתכונת ההמרה המותאמת אישית של Data Wrangler יש את יכולת ממשק המשתמש להציג את התוצאות של פונקציות אופטימיזציה של SciPy כמו ערך המקדם האופטימלי (או מקדמים מרובים).

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

טרנספורמציות מותאמות אישית עם sikit-learn

סקיקיט-לימוד הוא מודול Python ללמידת מכונה שנבנה על גבי SciPy. זוהי ספריית ML בקוד פתוח התומכת בלמידה מפוקחת ובלתי מפוקחת. זה גם מספק כלים שונים להתאמת מודל, עיבוד מוקדם של נתונים, בחירת מודל, הערכת מודל, וכלי עזר רבים אחרים.

דיסקרטיזציה

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

בקוד הבא, אנו משתמשים KBinsDiscretizer כדי לחלק את עמודת הגיל ל-10 פחים:

# Table is available as variable `df`
from sklearn.preprocessing import KBinsDiscretizer
import numpy as np
# discretization transform the raw data
df = df.dropna()
kbins = KBinsDiscretizer(n_bins=10, encode='ordinal', strategy='uniform')
ages = np.array(df["age"]).reshape(-1, 1)
df["age"] = kbins.fit_transform(ages)
print(kbins.bin_edges_)

אתה יכול לראות את קצוות הפח מודפסים בצילום המסך הבא.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

קידוד חם אחד

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

ישנם שלושה ערכים עבור Embarked: S, C ו-Q. אנו מייצגים אותם עם מספרים. ראה את הקוד הבא:

# Table is available as variable `df`
from sklearn.preprocessing import LabelEncoder le_embarked = LabelEncoder()
le_embarked.fit(df["embarked"]) encoded_embarked_training = le_embarked.transform(df["embarked"])
df["embarked"] = encoded_embarked_training

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

לנקות את

כאשר אינך משתמש ב-Data Wrangler, חשוב לסגור את המופע בו הוא פועל כדי להימנע מחיובים נוספים.

Data Wrangler שומר אוטומטית את זרימת הנתונים שלך כל 60 שניות. כדי למנוע אובדן עבודה, שמור את זרימת הנתונים שלך לפני כיבוי Data Wrangler.

  1. כדי לשמור את זרימת הנתונים שלך בסטודיו, בחר שלח, ואז לבחור שמור את זרימת הנתונים של Wrangler.
  2. כדי לכבות את מופע Data Wrangler, ב-Studio, בחר מופעי ריצות וגרעינים.
  3. תַחַת הפעלת אפליקציות, בחר בסמל הכיבוי שליד האפליקציה Sagemaker-data-wrangler-1.0.
  4. בחרו סגור את כולם כדי לאשר.

Data Wrangler פועל על מופע ml.m5.4xlarge. המקרה הזה נעלם מופעי ריצה כאשר אתה מכבה את אפליקציית Data Wrangler.

לאחר כיבוי אפליקציית Data Wrangler, עליה להפעיל מחדש בפעם הבאה שתפתח קובץ זרימה של Data Wrangler. זה יכול לקחת כמה דקות.

סיכום

בפוסט זה, הדגמנו כיצד ניתן להשתמש בטרנספורמציות מותאמות אישית ב-Data Wrangler. השתמשנו בספריות ובמסגרת במיכל ה-Data Wrangler כדי להרחיב את יכולות שינוי הנתונים המובנות. הדוגמאות בפוסט זה מייצגות תת-קבוצה של המסגרות שבהן נעשה שימוש. כעת ניתן להגדיל את הטרנספורמציות בזרימת Data Wrangler לצינור עבור DataOps.

למידע נוסף על שימוש בזרימות נתונים עם Data Wrangler, עיין ב צור והשתמש ב-Data Wrangler Flow ו תמחור SageMaker של אמזון. כדי להתחיל עם Data Wrangler, ראה הכן את נתוני ה- ML עם Amazon SageMaker Data Wrangler. למידע נוסף על טייס אוטומטי ו-AutoML ב-SageMaker, בקר אוטומציה של פיתוח דגמים עם טייס אוטומטי של Amazon SageMaker.


על המחברים

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.Meenakshisundaram Thandavarayan הוא מומחה בכיר בינה מלאכותית/ML עם AWS. הוא עוזר לחשבונות אסטרטגיים היי-טק במסע ה-AI וה-ML שלהם. הוא מאוד נלהב מבינה מלאכותית מונעת נתונים.

 יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.סוביק קומאר נאת הוא ארכיטקט פתרונות AI/ML עם AWS. יש לו ניסיון רב בעיצובים ופתרונות מקצה לקצה ללמידת מכונה; אנליטיקה עסקית בניתוח פיננסי, תפעולי ושיווקי; בריאות; שרשרת אספקה; ו-IoT. מחוץ לעבודה, סוביק נהנה לטייל ולצפות בסרטים.

יצירת טרנספורמציות מותאמות אישית באמזון SageMaker Data Wrangler באמצעות NLTK ו-SciPy PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.אביגיל הוא מהנדס פיתוח תוכנה באמזון SageMaker. היא נלהבת לעזור ללקוחות להכין את הנתונים שלהם ב-DataWrangler ולבנות מערכות למידת מכונה מבוזרות. בזמנה הפנוי, אביגיל נהנית לטייל, לטייל, לעשות סקי ואפייה.

בול זמן:

עוד מ למידת מכונות AWS