Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

‫‪Introduction‬‬

‫‪ ILOC‬לפי מספר עמודה ]]‪( df.iloc[10:20,[6, 1, 3‬לא כולל עמודה אחרונה)‬ ‫‪df['total'] = Series‬‬
‫‪ LOC‬לפי שם עמודה ]’‪( df.loc[1:3,'cut':'clarity‬כולל עמודה אחרונה)‬ ‫‪df[['total']] = DF‬‬
‫‪)matplotlib( Data visualization‬‬

‫מדדי מרכז‪:‬‬ ‫‪ - Unimodal distribution‬נקודת מקסימום אחת‬

‫חציון – עמיד יותר בפני ערכים קיצוניים‪,‬‬ ‫‪ – Bimodal distribution‬מספר נקודות מקסימום‬
‫מרכזי יותר‬ ‫‪ – Pie chart,3d chart‬קשה לעשות השוואות‬
‫ממוצע – יותר מושפע‬ ‫‪ –Line chart‬מראה השוואה של שני משתנים רציפים‬
‫‪ – Histogram‬מתארת את הצורה של הדאטה‪ ,‬מתארת שכיחויות למידע רציף‪.‬‬
‫‪ – Bar chart‬מראה את הצורה של הדאטה‪ ,‬למידע קטגוריאלי‪ .‬מתארת ערכים קטגוריאליים‪ ,‬מספר מופעים של דבר מסוים‪.‬‬
‫באמצעות הצרה של ה‪ bins‬ניתן לראות יותר פרטים על הדאטה‪.‬‬
‫‪ – Scatter Plot‬מראה יחס בין שני משתנים רציפים‪.‬‬
‫‪ – Stacked bar‬בדיקת יחס‪/‬קשר בין שני משתנים קטגוריאליים; פרופורציות של מידע‪.‬‬
‫‪)Take the time to examine your data before modeling( Data exploration‬‬
‫סטיית תקן גבוהה – התפלגות מפוזרת‬
‫‪:Display price values higher than 10,000#‬‬ ‫סטיית תקן נמוכה – קרוב לממוצע‬

‫]‪df_sub_HighPrice = df[df['price'] > 10000‬‬ ‫‪Outliers < Q3 + 1.5*IQR | Q1 - 1.5*IQR < Outliers‬‬
‫כדי לחקור עמודה נומרית‪ ,‬צריך לדעת סטיית תקן‪ ,‬ממוצע‪ ,‬חציון וטווח‪.‬‬
‫‪(Learn how to fix data quality problems - missing values, data transformation( Data preprocessing‬‬
‫כולל טיפול בערכים חסרים‪ ,‬שכר שלילי‪ ,‬ערכים לא הגיוניים (גיל של ‪] .)370‬נתחיל עם ‪ describe‬ו ‪[shape‬‬
‫)(‪ – Isnull‬מחזיר ‪ True‬אם הערך ריק באותה המשבצת‪ | .‬מחיקת ערכים חסרים (אם כל השורה ריקה) ‪df = df.dropna() -‬‬
‫החלפת ערכים חסרים בעמודות קטגוריאליות ‪df['employed']=df['employed'].replace(to_replace=np.nan, value='Retired') -‬‬
‫)‪df['income']=df['income'].mask(df['income']<0,np.nan‬‬

‫)'‪ – df=df.dropna(how='all‬מחיקה רק אם כל השורה ריקה‪ .interpolate = linear | .‬הופך את ‪ 4,null,1,2‬ל ‪1,2,3,4‬‬

‫)‪ df.dropna(subset=['housing.type', 'is.employed'], inplace=True‬תזרוק לי שורות אם יש להם ערכים חסרים בעמודות המסוימות‪.‬‬
‫‪ - Data Transformation‬מיפוי קבוצת ערכים של משתנה נתון לקבוצה חדשה של ערכי החלפה‪] .‬ערך טיפוסי = ‪[IQR‬‬
‫‪ - Discretization‬מעבר ממשתנה רציף לקטגוריאלי (הורדת האפקט של ה‪ ,outliers‬הורדת כמויות של מידע לצורך הבנה טובה יותר)‬
‫‪ - Normalization‬לנרמל את כל הערכים שיהיו באותו היחס‬
‫‪.zscore() perform normalization on all numeric variables in the data‬‬
‫(ממוצע ‪ , 0‬סטיית תקן ‪ .)1‬ערכים מנורמלים נחשבים כטיפוסיים אם הם בין ‪ 1-‬ל‪.1‬‬
‫)]'‪df['ageZ']=stats.zscore(df['age‬‬
‫‪transformation for skewed distributions to look more normal and symmetric - Log Transformation‬‬
‫]'‪( df['logincome']=np.log10(df['logincome‬ערכי מינימום ‪)1‬‬

‫‪supervised, classification – Decision tree‬‬


‫בתוך ‪– supervised‬‬
‫בינארי (האלגוריתם מסווג לשני קטגוריות)‬ ‫‪-‬‬
‫מולטיקלאס (האלגוריתם מסווג ליותר משני קטגוריות)‬ ‫‪-‬‬
‫רגרסיה (האלגוריתם חוזה ערכים רציפים)‬ ‫‪-‬‬
‫‪ – Classification‬אנחנו רוצים לחזות משהו(קלאס‪ ,‬לייבל)‪ ,‬הוא קטגוריאלי‪ ,‬וגם התשובה קטגוריאלית‪(.‬חתול‪/‬כלב)‬
‫צריך למצוא את הערכים האופטימליים וההומוגניים אשר יהיו צמתי ההחלטה בעץ לצורך ניבוי המידע‪.‬‬
‫כלומר‪ ,‬לבצע סינון של עצמים עפי עמודות שיניבו לנו ערכים לא שווים‪ )100-0( ,‬או (‪ )90-10‬ולא (‪ )50-50‬כדי שנגלה דפוס מסוים‪.‬‬
‫‪ – Gini Index‬מודד את רמת הטוהר של המידע‪ ,‬בודק מהו הפיצ'ר האידיאלי לסינון המידע (צריך שיהיה נמוך יותר)‪.‬‬ ‫‪o‬‬
‫]הומוגניות[‬
‫‪ – Entropy‬מדד לרמת האקראיות של המידע‪.‬‬ ‫‪o‬‬
‫‪ – Misclassification error‬בודק לכמה תצפיות הניבוי יהיה שגוי; מדד לאיכות הפיצול‪.‬‬ ‫‪o‬‬

‫יתרונות‪ :‬מהיר‪ ,‬לא מתייחס לפיצ'רים לא משמעותיים‪,‬‬


‫יעיל‪ ,‬לוגי‪.‬‬
‫]ימינה = ‪ ,false‬שמאל = ‪true‬‬
‫חסרונות‪ :‬נטייה ל‪ ,overfitted-‬שינויים במידע יכולים‬ ‫‪ = class‬סוג הרוב באותו העלה‬
‫לשנות את התוצאות‪ ,‬נטייה לפיצולים על פיצ'רים בעלי‬ ‫ככל שהצבע יותר כהה = יותר הומוגני‬
‫מס' קטגוריות‪.‬‬ ‫מדד ‪ Gini‬נמוך יותר = טוב יותר (מדד לאי שוויון)[‬

‫במידה ולא נגביל את העץ‪ ,‬הסיכוי ל‪ Overfitting‬יגדל וגם זמן העיבוד‪ .‬ניתן להגביל את העומק‪ ,‬את מינימום דגימות בעלה‪ ,‬אחוז הומוגניות בעלה‬
‫ומקסימום עלים‪ .‬מחלקים לקבוצות קטנות עד שניתן לסווג את התצפית‪ .‬לא חייב לנרמל בעץ‪.‬‬
‫‪ – Pruning‬קיצוץ ענפים בעץ שלא רלוונטים‪ /‬לא משפיעים כלכך‪.‬‬
‫‪ – LabelEncoder‬הפיכת קטגורי למספרים‪ .‬נשתמש רק ב ‪ labelEncoder‬בהמרה של קטגורי לנומרי‪.‬‬

‫‪ = X‬כל הקטגוריאלים המומרים והעמודות הנומריות הרגילות‪ = Y ,‬עמודת הטרגט‬


‫‪X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=RSEED) - data separating‬‬
‫‪cm_test = pd. crosstab(y_test, y_pred_test, colnames=['pred'], margins=True) - confusion‬‬
‫‪Classification model validation‬‬
‫‪ - Validation‬להבטיח שהמודל יעבוד בעולם האמיתי כמו שהוא עובד ב‪ testing‬אצלנו‪.‬‬
‫‪ – True‬משמע הניבוי נכון‬

‫אם התוצאה הומוגנית – ‪ accuracy‬מדד טוב מספיק‬


‫בפני עצמו‪.‬‬

‫‪ – False negative‬הכי חמור‬ ‫•‬


‫‪ – Accuracy‬מספר הפריטים שסווגו נכון מבין כל הפריטים‪.‬‬
‫‪ accuracy‬של ‪ 99‬אחוז – לא הגיוני‪ .‬לא מספיק רק ‪ accuracy‬כדי לבדוק אמינות של מודל‪.‬‬
‫‪ - Recall‬מהו שיעור ה"חיוביים"‬
‫שהמודל מזהה נכון מתוך אלה באמת חיוביים? ‪True Positive‬‬
‫מודל מתאים כאשר יש הטיה בנתונים –‬
‫לדוגמה‪ :‬כמה נשים חוות סיבוכים בלידה? כ‪ 1%-‬מהאוכלוסייה‪.‬‬
‫לדוג'‪ :‬כמה תמונות של חתול חזיתי נכון מתוך כל החתולים?‬

‫‪ – Precision‬איזה שיעור מהתחזיות שלי בנוגע ל"חיוביים" נכונות?‬


‫לדוג'‪ :‬כמה תמונות הן אכן של חתול מתוך אלה שחזיתי שהן חתול?‬
‫צריך ‪ recall‬גבוהה למקרים רגישים‪ .‬אכפת לי מהניבויים השליליים‪.‬‬
‫לדוגמה‪ ,‬חיזוי מחלה או חיזוי טרוריסטים‪ .‬זה בסדר אם גידול שאינו מסוכן מסומן מסוכן‪,‬‬
‫אך אין לסמן גידול מסוכן כבלתי מסוכן‪.‬‬
‫באופן דומה‪ ,‬אנו זקוקים ‪ Precision‬גבוה במקומות כגון מנועי המל צות‪ ,‬זיהוי דואר זבל וכו'‪ .‬שבהם לא אכפת לך מהניבויים השליליים אלא‬
‫מתמקדים יותר בתוצאות חיוביות אמיתיות וחיוביות שגויות‪ .‬זה בסדר אם דואר זבל נכנס לתיקיית הדואר הנכנס‪ ,‬אבל דואר חשוב באמת לא‬
‫אמור להיכנס לתיקיית הספאם‪.‬‬
‫‪ - Overfitting‬אם למודל שלנו יש אחוזי דיוק גבוהים ב‪ training‬אבל אחוזי דיוק נמוכים ב‪ test‬אז המודל נקרא ‪( .overfitting‬ניתן לזהות אם‬
‫שלושת המדדים מאוד גבוהים ב ‪)training‬‬
‫צריך לשאוף תמיד לאמצע‪ ,‬בין ‪ underfitting‬ל )‪ ,overfitting (appropriate fitting‬לחלק את הקבוצות לכמה שיותר הומוגניות‪.‬‬
‫‪ – Underfitting‬כללי מדי‪ ,‬לא מפריד את ה‪ labels‬כמו שצריך‪.‬‬
‫באמצעות הגבלות ניתן להגיע ל‪( appropriate fitting‬הגדלת גודל העץ)‬
‫‪ – Reverse_transform‬להציג את השמות המקוריים בעץ החלטה‪.‬‬
‫‪ – Knn Classification‬מודל שבודק משתנה לפי השכנים שלו (‪supervised )classification‬‬
‫מודל שבודק משתנה עפ"י השכנים שלו‪ = K .‬מספר השכנים (בד"כ אי זוגי כדי להימנע משוויון)‪.‬‬
‫אנחנו בוחרים את ה ‪ .K‬יש עמודת מטרה‪.‬‬
‫)‪classifier = KNeighborsClassifier(n_neighbors=k‬‬
‫נחשב את השכנים לפי נוסחת המרחק‪] .‬רגיש לחריגים ב ‪[multiclass‬‬
‫)‪classifier.fit(X_train_z, y_train‬‬ ‫הפלט של המודל הוא קלאס‪.‬‬
‫חשוב לנרמל את המידע‪ .‬פיצול המידע ל ‪ train‬ו ‪.test‬‬
‫חשוב ש ‪ k‬יהיה מספר אי זוגי כדי שלא יהיה מצב שיש שני קלאסים שכנים עם אותה כמות‪.‬‬

‫עדיף לחשב עפי ‪k=sqrt(N)/2‬‬


‫כלומר )‪k=int(math.sqrt(X_train.shape[0]/2‬‬ ‫מרחק בין שני נקודות ‪:‬‬
‫השיטה הכי טובה היא לבדוק כמה שיותר ‪ k‬ולבדוק למי‬ ‫‪ K‬קטן – חשוף לרעש‪ ,‬למקרים חריגים (אבל זמן ריצה יעיל יותר) ]אולי ‪[OVERFIT‬‬
‫יש את הביצועים הכי טובים‬ ‫‪ K‬גדול – קלאס אחד יכול להיות דומיננטי על השני (זמן ריצה גבוה יותר) ]אולי ‪[UNDER‬‬
‫(עפי הגרף – לוקחים את ה‪ k‬הראשון מהרצף הכי גבוה)‬ ‫נמדד עפי (‪)accuracy ,recall ,precision‬‬
‫בודקים ‪ recall ,precision‬עבור כל קלאס בנפרד‪.‬‬
‫‪ – Logistic Regression‬לא קשר לרגרסיה ‪ +‬לינארית‪regression ,supervised .‬‬
‫פונקציית ‪:S CURVE‬‬

‫ממדלת את הסיכויים של אירוע אחד מתוך שניים(אמת או שקר ‪ -‬סיווג בינארי)‬


‫מודל סטטיסטי שחוזה הסתברות (אחוז בין ‪ 0‬ל‪ )1-‬לאירוע אחד מתוך שתי חלופות‬
‫‪ -‬משמש רק עבור סיווג בינארי‪ .‬בנוי כפונקציית ‪ .S‬פלט של הסתברות‪.‬‬

‫בהינתן משקל – האם האדם שמן או לא שמן?‬


‫בוחרים הסתברות (נקודה על הגרף)‪ ,‬עבור כל תצפית נחשב את ההסתברות שלה‬
‫לעודף משקל ונסדר את הקו בהתאם – כך שבסוף ה‪ train-‬ייצאו לנו כמה קווים‪,‬‬ ‫חשוב לנרמל את הפיצרים של הדאטה! וגם להפוך את הקטגוריאלי‬
‫ומהם נבחר את הקו שתופס את הכי הרבה תצפיות והוא יהיה המודל (‪.)MLE‬‬ ‫עם ‪ .labelEncoder‬פיצול הדאטא ל‪ train‬ו ‪.test‬‬

‫הערך הנכון יהיה בטווח שבין הערך החזוי פחות ‪ RMSE‬לבין הערך‬ ‫נמדד עפי (‪)accuracy ,precision ,recall‬‬
‫החזוי ועוד ‪RMSE‬‬
‫‪𝒑𝒓𝒆𝒅𝒊𝒄𝒕 value−𝑹𝑴𝑺𝑬≲𝒕𝒓𝒖𝒆 value≲𝒑𝒓𝒆𝒅𝒊𝒄𝒕 value+ 𝑹𝑴𝑺E‬‬
‫אם ה ‪ test‬יותר גדול מה‪ train‬זה אומר שהוא חזה מעולה‪.‬‬ ‫‪-‬‬
‫מתי ‪ ?overfit‬כאשר המודל התאים את עצמו ל‪ train‬וכאשר הוא יקבל ‪ data‬חדש הוא יטעה‪.‬‬ ‫‪-‬‬
‫אם יש לי ב ‪ train accuracy 87‬וב‪ - 50 test‬הוא אומן לא טוב‪ ,‬לא חזה את התוצאות טוב‪.‬‬
‫‪ – Regression Decision Tree‬מנבא משתנה רציף ‪regression, supervised‬‬
‫‪Clustering: group observations into “meaningful” groups‬‬
‫‪Classification: predict class from observations‬‬
‫‪Regression (prediction): predict value from observations‬‬

‫מודל מסוג ‪ - regression‬עץ החלטה שנועד לחזות ערך מספרי רציף‪.‬‬


‫למשל‪ ,‬אנחנו רוצים לבנת מודל באמצעות שילוב של פיצ'רים כדי לחזות את הערך של הבית‪.‬‬
‫נשתמש בעץ החלטה‪ ,‬נחשב ידנית‪,‬‬

‫נבדוק ‪ – RMSE‬אם ה‪ test‬ו ‪ train‬דומים – זה טוב‪( .‬במקום דיוק‪)precision, recall ,‬‬


‫אם זה קרוב ל ‪ ( overfitting = 0‬כמו לקבל ‪ 100%‬ב ‪ training‬בעץ)‬
‫‪ – RMSE‬מדד למידת הפזורות של שגיאות החיזוי ‪ .‬מדד שבודק את איכותו של ‪ ,Regression model‬נקבל את סטיית החיזוי (ממוצע ההפרשים בין‬
‫העמודות בריבוע ואז שורש התוצאה)‪ .‬נבצע את אותו החישוב על ה‪ test‬ועל ה‪ .training‬ככל שתהיה קירבה בין שני המדדים כך המודל יחשב לטוב‬
‫יותר‪ RMSE .‬קרוב ל‪ 0-‬יראה על ‪)RMSE = squared=false( .overfitting‬‬
‫‪ – Linear Regression‬מנבא משתנה רציף ‪regression, supervised‬‬
‫מודל המתבסס על משוואת הקו הישר‪ .‬נמצא קו לינארי שמתאר את הקשר בין ‪ – X‬עמודות הפיצ'רים (משתנה בלתי תלוי) לבין ‪ – Y‬עמודת המטרה‬
‫(משתנה נומרי רציף תלוי)‪ .‬יש עמודת מטרה‪.‬‬
‫רגרסיה לינארית מנבאת משתנה תלוי מתמשך בהתבסס על ערכים של משתנים בלתי תלויים‪.‬‬

‫למשל‪ ,‬בהינתן גודל של דירה אנחנו רוצים לחשב את המחיר שלה‪.‬‬


‫מציירים קו לינארי רנדומלי בהתבסס על כל הנקודות בגרף‪,‬‬
‫כל פעם מתקנים את הזווית של הגרף כדי שיהיה כמה שיותר קרוב לכל הנקודות‪,‬‬
‫עד לקבלת גרף אשר יהיה קרוב לכל הנקודות יחסית ויהיה לו מספר ‪ error‬קטן ביותר (סכום‬
‫סטיות מהקו קטן)‪ .‬גוזרים את הפונקציה הלינארית עד להגעה למינימום‪.‬‬
‫פיצ' ר יכול להשפיע על התוצאה של מודל לטובה או לרעה‪.‬‬
‫למשל פיצ'ר של פשיעה‪ ,‬יכול להשפיע לרעה על מחיר של דירה‪ ,‬להוריד אותה‪( .‬עפי המקדמים)‬
‫אפשר לוותר על הפיצ'ר עם המקדם הכי נמוך‪ .‬בקושי משפיע על הטרגט‪.‬‬
‫חשוב לנרמל את המידע‪ .‬לשמור ‪std & mean‬‬
‫נמדד עפי ‪ .RMSE‬מחלקים את המידע‪.‬‬
‫מדד ה‪( Coefficient-‬מקדם ה‪:)X-‬‬

‫ככל שערכו גדול יותר כך הוא משפיע יותר על ה‪.Target‬‬ ‫•‬


‫כיוונו (שלילי‪/‬חיובי) מראה את השפעתו על ה‪.Target-‬‬ ‫•‬
‫נשווה את ה‪ RMSE‬בין ה‪ tree‬ל‪ linear regression‬למי מבניהם שערכי ה‪RMSE-‬‬
‫קטנים יותר בטסט = מודל טוב יותר (מדד לכמה המודל מדויק)‪.‬‬

‫‪unsupervised, clustering – K Means Cluster‬‬


‫יצירת תובנות ממידע ללא ‪ ,labels‬נחפש דפוסים מסוימים‪.‬‬
‫אין עמודת טרגט‪.‬‬
‫נחלק את המידע לקבוצות שונות של קלאסטרים – כל מי שנמצא‬
‫בקלאסטר ספציפי יש להם מכנה משותף‪ .‬הדמיון בין התצפיות‬
‫נקבע לפי מרחקים‪.‬‬
‫עושים קלאסטרינג כדי לזהות דפוסים "חבואים"‪ ,‬לזהות פיצרים חשובים‪,‬‬
‫לסכם את הדאטא‪ ,‬לזהות אנומליות‪.outliers ,‬‬
‫נוסחת מרחק בין נקודה לקלאסטר ‪-‬‬

‫ניתן לשלוט רק בכמות הקלאסטרים (‪ ,)K‬לא בפילוח התצפיות‪.‬‬


‫הלולאה‪:‬‬
‫חישוב מספר נתון של סנטרוידים‪ ,‬הגרלת נקודות המרכז שלהם ו שיוך כל נקודה אחרת בגרף לסטנרויד שיותר קרוב אליו עפי נוסחת מרחק‪ .‬לאחר‬
‫שיוך הנקודות והמעגל‪ ,‬חישוב הממוצע של כל סטנרויד ושיוך ועדכון נקודות המרכז מחדש‪.‬‬
‫יכול להיות מצב שלאחר שיוך נקודות המרכז‪ ,‬נקודות מסוימות יהיו משוייכות לקלאסטר אחר ויעברו אליו בהתאם‪.‬‬
‫הלופ יגמר כאשר לא יהיו עוד מעברים של נקודות בין קלאסטרים‪ ( .‬יכול להיות שזה לעולם לא יגמר‪ ,‬לכן ניתן להגביל מספר איטרציות)‪.‬‬
‫חשוב לנרמל את המידע‪ ,‬כדי שלא יקרה מצב שמספרים גבוהים מושכים את הנקודות אליהם‪ ,‬או שהקלאסטרים יהיו מושפעים מ‪( .outliers‬אי‬
‫אפשר להשוות בין דולר למס' שנים)‪ .‬כשבוחרים את ‪ , K‬להתבסס על דברים יודעים‪ ,‬מספר מינים‪ ,‬מספר זאנרים בסרטים וכו'‪]] .‬דוגמה של‬
‫פרופילים בפייסבוק ‪ -‬וכל קלאסטר עם מילות מפתח שונות (מוזיקה‪ ,‬כדורסל‪[..‬‬

‫‪clustering, unsupervised – Hierarchical Clustering‬‬

‫‪K-Means VS Hierrachical‬‬ ‫קלאסטר טוב – קלאסטר עם תצפיות דומות‪.‬‬


‫‪ Kmeans‬דורש לציין מספר קלאסטרים‬ ‫חשוב לנרמל‪ ,‬אין עמודת טרגט‪.‬‬
‫‪ Hirarchical‬בונה היררכיה מלמטה למעלה כאשר‬
‫בהתחלה כל תצפית היא קלאסטר עד שהוא מקבץ‬ ‫בהתחלה של התהליך כל נקודה בפני עצמה היא קלאסטר‪.‬‬
‫תצפיות דומות ביחד‪.‬לא דורש לציין מספר‬ ‫לאחר מכן יש איחוד של שני תצפיות קרובות וככה בלופ‪ ,‬עד‬
‫קלאסטרים‬ ‫שמגיעים לקלאסטר אחד‪ .‬זמן ריצה ארוך‪ .‬ה‪ K-‬לא ידוע מראש‪.‬‬
‫כמו כן ‪ KMEANS‬מספק פתרון יחיד (עבור כל ריצה‬
‫צריך לספק ‪ K‬שונה)‪ .‬ניתן לראות התפלגות של ‪HIER‬‬ ‫שיטות חישוב מרחק בין קבוצות‪:‬‬

‫‪ – WARD‬סכום מרחק ריבועי מינימלי בין קלאסטרים‪– Maximum/complete .‬‬


‫מרחק מקסימלי בין הנקודות בין זוג קלאסטרים‪.‬‬
‫‪ - Average‬חישוב ממוצע המרחקים בין שני הנקודות האפשריות בזוג קלאסטרים‪ – Single .‬חישוב נקודות הקרובות יותר בין זוג קלאסטרים‪.‬‬
)‫נעביר קו אופקי בחצי של הקו האנכי הכי ארוך וככה נדע כמה קלאסטרים יש (הקו מייצג את השונות הכי גבוהה‬
[‫] אפשר לנסות שוב עם טרשהולד אחר לתוצאות אחרות‬.)‫ אין רנדומליות (המודל היחיד‬,RANDOM SEED ‫אין‬
.)‫) באמצע הקו האנכי הארוך ביותר (שונות גדולה‬threshold( ‫ האופטימלי? נעביר קו אופקי‬K ‫איך נמצא את‬
.‫ בניית הקלאסטרים‬,‫דנדוגרם – מציג באופן ויזואלי את שלבי האיחוד של התצפיות‬
)‫ מאפיין כזה לא תורם‬, ID ‫ חלק הם כמו‬,‫( לא כל פיצר מעניין אותנו וננרמל אותו‬
.‫ להפיק לקחים ומסקנות מכל קלאסטר‬.‫ האצה וכדומה‬,‫ניתן לייצג את המודל עפי כוח סוס‬

bins=[147 ,65 ,25 ,1-] =


labels = ["young", "mid", "old"] – ‫מרחק אוקלידי‬
df['age_range'] = pd.cut(df['age'], bins=bins,
labels=labels) [Discritization]

:‫שאר פקודות חשובות‬


Box Plot: plt.boxplot(df.price, showmeans=True)
Multivariate boxplot: df.boxplot(column=['price'], by='color', grid-False)

dfNA = dfNA[dfNA['housing_type'].isna()]

df.club_member.value_counts().plot(kind="bar", title="Club member", xlabel="Value", ylabel="Count", color="navy")


plt.hist(df.age, bins=42, color='b', edgecolor='black', linewidth=1.2)

df5 = df.loc[(df['age'] >= 38) & (df['age'] <= 50)]

)(df_cut_family_status_bars = df.groupby(['status', 'sex'])[['sex']].count

print(df.loc[(df['income'] > 16000) & (df['state_of_res'] == "Washington")]['income'].min())


df6 = df6.loc[:, ((df.dtypes == np.int64) | (df.dtypes == np.float64))]
df10 = df.groupby(['sex', 'housing_type']).size().sort_values(ascending=False)

plt.hist(df.age, bins=42, color='b', edgecolor='black', linewidth=1.2)

)(below_median_count = df["room_price"][df["room_price"] <= room_price_median].count

temp_df = df[(df['total_expenditure'] >= 0)]


new_df = new_df[new_df['passtime'] != np.nan]

:‫מודלים‬
print("Precision:", metrics.precision_score(y_train, y_pred_train))
reg.intercept_) #free constant (linear regression)
print("all coefficients are: ", np.column_stack((X_train_z.columns, reg2.coef_)))
dfNA = df[['housing_type', 'recent_move', num_vehicles']] kmeans.cluster_centers | X_train_z = stats.zscore(y_train)
dfNA = dfNA[dfNA['housing_type'].isna()]
df['price'].quantile(q=[0,0.25, 0.5, 0.75, 1])
print(dfNA.isna().sum()) – ‫סוכם מכל עמודה‬
IQR= Q3-Q1..... Q1 = df[‘age].quantile(0.25)

plt.hist(df[df['is_employed'].isna()].age)-‫נגלה ערכים חסרים‬


df['is_employed'].replace(to_replace=np.nan, value="retired") - ‫נחליף אותם בעמודה חדשה‬

You might also like