Systematics
  • EN
  • אודות
    • על סיסטמטיקס
    • הורדת תעודות ISO
    • אירועים בסיסטמטיקס
    • קהילה
    • יצירת קשר
    • דרכי הגעה
    • לזכרו של יואב לבנטר ז"ל, מייסד ומנכ"ל משותף
  • פתרונות ומוצרים
    • תחום GIS
      • אודות
      • מוצרים
      • אירועים
      • קורסים
      • תמיכה
      • סיפורי לקוחות
    • תחום 3D CAD/PLM
      • אודות
      • מוצרים
      • אירועים
      • קורסים
      • תמיכה
      • סיפורי לקוחות
    • תחום MATLAB & Simulink
      • אודות
      • מוצרים
      • אירועים
      • קורסים
      • תמיכה
      • סיפורי לקוחות
    • תחום 3D Printing
      • אודות
      • מוצרים
      • אירועים
      • תמיכה
      • סיפורי לקוחות
      • רכישה Online
  • לקוחות
    • לקוחות סיסטמטיקס בחזית המאבק במגיפת הקורונה
    • לקוחות
      • סיפורי הצלחה
    • תעשיות
      • אקדמיה
      • Start Ups
    • תכניות עבור סטארטאפים
  • קורסים
      • אודות מרכז ההדרכה
    • קורסים GIS
      • אודות הקורסים
      • תאריכים וסילבוס
    • קורסים SOLIDWORKS
      • אודות הקורסים
      • תאריכים וסילבוס
      • קורסים CATIA
    • קורסים MATLAB & Simulink
      • אודות הקורסים
      • תאריכים וסילבוס
    • קורסים 3D Printing
      • תאריכים וסילבוס
    • קורסים ALTIUM
      • תאריכים וסילבוס
  • תמיכה
    • תמיכה ושירותי ייעוץ
    • סקר שביעות רצון לקוחות
    • נהלי התקנה ורישוי GIS
    • נהלי התקנה ורישוי MATLAB
    • נהלי התקנה ורישוי SOLIDWORKS
    • פתיחת קריאות שירות
    • פתיחת קריאות שירות תחום GIS
  • קריירה
    • משרות
    • לעבוד בסיסטמטיקס
  • צור קשר
  • בלוג
    • הבלוגים שלנו
    • SOLIDBlog
    • PCB Blog
    • GIS Blog
    • MATLAB With Fun Blog
    • 3D Printing Blog
  • HE
  • Contact Us
  • Support
  • Customers
    • Customers
    • Success Stories
  • Industries
  • Solutions
  • About Us
  • חיפוש באתר
  • Menu Menu

עמוד הבית » בלוג » MATLAB With Fun

  • ALL
  • GIS Blog
  • MATLAB With Fun
  • PCB Blog
  • Smart 3D Printing
  • SOLIDBlog

עיבוד מקדים בתוכנת MATLAB הדרך הקלה והמהירה ל-Data Analytics

לורן סממה
28/06/2020
MATLAB With Fun

תגיות: Data Analytics | Deep Learning | MATLAB | SIMULINK

מכירים את הציטוט שאומר: "80% מהזמן מעבדים את הדאטה, ו-20% מהזמן מתלוננים על זה"? בפוסט הזה אני רוצה להראות לכם שזה יכול להיות ממש אחרת, בעזרת שימוש בפונקציות חדשות ומגוונות שמקלות על שלב העיבוד המקדים. אם אתם לא מכירים אותן עדיין – תתפלאו כמה זמן זה יכול לחסוך לכם בהוצאת המידע האמיתי מתוך הנתונים הגולמיים שבידיכם.

שתפו את הפוסט
  • שתף בפייסבוק
  • שתף בטוויטר
  • שתף בגוגל+
  • שתף בלינקדאין
  • שתף באימייל
  • שתף בוואטסאפ

חילקתי את הפעולות ל-5 שלבים מרכזיים: חקר הנתונים, טיפול בערכים "בעייתיים", עיבוד מידע קטגוריאלי, מידע מסוג String ועבודה עם TimeSeries. ויש גם כמובן בונוסים לאורך הדרך, אז כדאי לקרוא. 😊

1. חקר הנתונים

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

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

להלן דוגמה של שימוש בפונקציה זו:

 

נראה כי באמצעות פקודה אחת נוכל להבין מה בדיוק נמצא בתוך הטבלה T!.  הטבלה מכילה נתונים על 100 חולים. ניתן לראות עבור כל חולה את המגדר שלו, גיל, לחץ הדם והאם הוא מעשן.

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

על ידי שימוש בפונקציה, נקבל את הפלט הבא:

בעמודה של ה- Age, נראה כי ישנן 25 קבוצות גיל ובעמודה של ה-GroupCount נראה כמה תצפיות מיוחסות לאותה קבוצת גיל. במידה ונרצה לדעת מה לחץ הדם הממוצע עבור כל אחת מהקבוצות נוכל להשתמש באותה פקודה בצורה הבאה:

חשוב לציין, כי על מנת לקבל את הטבלה לעיל, היינו צריכים למחוק את עמודת המגדר (‘Gender’) מכיוון שלא ניתן לחשב ממוצע עבור משתנה קטגוריאלי. עשינו זאת באמצעות הפקודה:

 

2. טיפול בערכים בעייתיים

בדוגמא הקודמת, נראה כי הנתונים "נקיים", כלומר לא מכילים ערכים חסרים או ערכים חריגים. על מנת להמחיש לכם את ההתמודדות עם נתונים חסרים, נתבונן על הנתונים הבאים:

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

הפקודה ismissing תאפשר לנו לקבל וקטור לוגי, כאשר הערכים החסרים יהיו שווים ל-1 והשאר יהיו שווים ל-0. נוכל לאמוד את מספר הערכים החסרים באמצעות פונקציית nnz (גם sum עובד!).

 

 כעת נצטרך להחליט מה נרצה לעשות עם הערכים האלה, נוכל:

להתעלם מערכים חסרים –פונקציות מסוימות יחזירו לנו ערכי NaN במידה והנתונים שלנו מכילים ערכים חסרים, לדוגמה:

לשמחתנו, נוכל לחשב את הממוצע מבלי לשנות את המשתנה שנמצא ב-workspace בעזרת flag של ‘omitnan’ שמאפשר להתעלם מה-NaN שנמצאים בדאטה:

למחוק ערכים חסרים – ניתן לעשות זאת באמצעות פקודת rmmissing.

שימו לב! מחיקת ערכים תקטין את גודל הווקטור, ולכן יש למחוק בזהירות.

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

 

לגבי עבודה עם ערכים חריגים, הפונקציות המתאימות הן: filloutliers, rmoutliers, isoutliers.

בונוס!

בגרסת R2019b התווספו ל-MATLAB אפליקציות שניתן להוסיף ל-Live Script שנקראות Live Editor tasks. האפליקציות האלה מאפשרות לבצע מספר פעולות ולחקור פרמטרים בצורה אינטראקטיבית ולאחר מכן לייצר קוד MATLAB באופן אוטומטי. השימוש באפליקציות מאפשר לצמצם את זמן הפיתוח, למנוע שגיאות ולערוך גרפים בקלות.

להלן הדגמה קצרה:

 

3. עבודה עם מידע קטיגוריאלי

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

ניתן לראות שקיימות 6 תצפיות במשתנה A, אבל בפועל קיימות 3 קבוצות שונות. כמו כן, פקודת categories מאפשרת להציג את הקבוצות של המשתנה:

ניתן לאחד שתי קבוצות באמצעות פונקציות mergecats:

צמצמנו את מספר הקבוצות מ-3 ל-2, ולכן ייתכן שנרצה להגדיר מחדש את שמות הקבוצות. ניתן לעשות זאת בעזרת פקודת renamecats:

כעת, משתנה C מכיל 6 תצפיות של 2 קבוצות שונות. על מנת לספור את מספר התצפיות עבור כל אחת מהקבוצות, ניתן להשתמש בפונקציות countcats:

בדומה לסידור ומחיקת משתנים בטבלה שראינו לעיל, ניתן להשתמש ב-removecats למחיקת קטגוריה או reordercats לשינוי סדר הקטגוריות.

4. מידע מסוג string

בגרסת R2016b התווסף טיפוס מידע חדש ב-MATLAB לעבודה עם טקסט שנקרא string.

String Array מאחסן פיסות טקסט ומספק מערך של פונקציות לעבודה עם טקסט כנתונים. ניתן להוסיף אינדקס למערכים, לעצב אותם ולשרשר אותם בדיוק כמו שאנחנו יכולים לעשות עם מערכים מכל סוג אחר. ניתן גם לגשת לתווים במחרוזת ולהוסיף טקסט למחרוזות באמצעות חיבור פשוט (+). כדי לסדר מחדש מחרוזות בתוך מערך מחרוזות, נשתמש בפונקציות כמו split, join ו-sort.

 

נמחיש את השימוש ב-string באמצעות דוגמא. נבנה מערך של 5 משתנים שמורכבים משם פרטי ושם משפחה. נרצה לסדר את השמות כך ששם המשפחה יופיע ראשון ויסודר לפי א'-ב'.

בשלב הראשון, ניצור מערך של string בעזרת גרשיים ונפריד בין השם פרטי לשם משפחה ע"י פונקציית split:

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

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

נמיין את השמות כך שיהיו בסדר אלפביתי בעזרת פונקציית sort:

נראה כי העבודה עם דאטה מסוג string היא מאוד פשוטה ואינטואיטיבית!

5. עבודה עם סדרות זמן

בגרסת R2016b התווסף טיפוס מידע חדש לעבודה ב MATLAB-שנקרא .Timetable על ידי שימוש ביכולת זו, תוכלו לאגד מידע שכולל גם יחידות זמן, ולנהל את כל המאגר שלכם בצורה יעילה יותר. ניתן להמיר מ-tables ל-timetable באמצעות פקודת table2timetable ובכך להשתמש בפונקציות ייעודיות לעבודה עם זמנים. תוכלו לגלות באילו פונקציות מדובר בפוסט זה.

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

 

מקווה שכעת לאחר קריאת הפוסט תוכלו להגיד ש –

"100% מהזמן מעבדים את הדאטה, ו-0% מהזמן מתלוננים על זה" 😊

בהצלחה!

תגיות: Data Analytics | Deep Learning | MATLAB | SIMULINK

שתפו את הפוסט
  • שתף בפייסבוק
  • שתף בטוויטר
  • שתף בגוגל+
  • שתף בלינקדאין
  • שתף באימייל
  • שתף בוואטסאפ

פוסטים נוספים מאותה קטגוריה

להמריא עם MATLAB – כל מה שצריך לדעת על הקורסים של MathWorks

להמריא עם MATLAB – כל מה שצריך לדעת על הקורסים של MathWorks

MATLAB With Fun

שלי מרטינוב
11/05/2025
גילוי כשלים בייצור בשלבים מוקדמים בעזרת Visual Inspection

גילוי כשלים בייצור בשלבים מוקדמים בעזרת Visual Inspection

MATLAB With Fun

ענבר לוי
27/04/2025
תאום דיגיטלי להאצת בדיקות בקרת ההינע של מנועים חשמליים

תאום דיגיטלי להאצת בדיקות בקרת ההינע של מנועים חשמליים

MATLAB With Fun

איתמר אנגלמן
07/04/2025
תגובות | 0 תגובות

השאירו תגובה

כתיבת תגובה לבטל

האימייל לא יוצג באתר. שדות החובה מסומנים *

הרשמו לקבלת עדכונים

MATLAB With Fun
שדה חובה

ההרשמה בוצעה בהצלחה. בדוק בתיבת הדואר שלך, הודעה המכילה קישור לאישור ההרשמה ואשר את הרשמתך.

רוצים ללמוד עוד? כיתבו לנו

כיתבו לנו


    social-media-youtubesocial-media-linkedin

    קהילה

    • קהילת סיסטמטיקס
    • SOLIDWORKS Blog
    • PCB Blog
    • MATLAB with Fun Blog
    • GIS Blog
    • Smart 3D Printing Blog
    • ESRI Israel FB
    • SOLIDWORKS Israel FB
    • MATLAB and Simulink LI
    • MATLAB and Simulink FB

    צור קשר

    • בקשת יצירת קשר
    • בקשת קשר טלפוני

    רכישה

    • בקשת הצעת מחיר
    • מכירות ESRI
    • מכירות SOLIDWORKS
    • מכירות ALTIUM
    • מכירות CATIA
    • מכירות ENOVIA
    • מכירות MATLAB & Simulink
    • מכירת מדפסות תלת מימד

    קורסים

    • קורסים GIS
    • קורסים SOLIDWORKS
    • קורסים MATLAB & Simulink
    • קורסים CATIA
    • קורסים ALTIUM
    • יצירת קשר מרכז ההדרכה

    תמיכה

    • מדיניות תמיכה
    • שירותי ייעוץ
    • פתיחת קריאות שירות

    פתרונות ומוצרים

    • תחום GIS
    • תחום 3D CAD/PLM
    • SOLIDWORKS
    • ALTIUM PCB
    • CATIA
    • ENOVIA
    • MATLAB & Simulink
    • תחום 3D Printing
    • 3D EXPERIENCE
    • תעשיות
    • אקדמיה
    • Start Ups

    אודות סיסטמטיקס

    • מי אנחנו?
    • אירועים
    • דרכי גישה ומפה
    • יצירת קשר

    לקוחות

    • לקוחות סיסטמטיקס
    • סיפורי לקוח SOLIDWORKS
    • סיפורי לקוח MathWorks
    • סיפורי הצלחה GIS
    © 2025 All rights reserved SYSTEMATICS Ltd. | Privacy Policy
    • הישארו מעודכנים
    • כיתבו לנו
    Scroll to top