خطوتك الأولى في علم البيانات. تايتانيك

كلمة تمهيدية قصيرة

أعتقد أنه يمكننا القيام بالمزيد من الأشياء إذا تم تزويدنا بتعليمات خطوة بخطوة من شأنها أن تخبرنا بما يجب علينا فعله وكيفية القيام بذلك. أنا شخصياً أتذكر لحظات في حياتي عندما لم أتمكن من البدء بشيء ما لأنه كان من الصعب أن أفهم من أين أبدأ. ربما رأيت ذات مرة على الإنترنت عبارة "علم البيانات" وقررت أنك بعيد كل البعد عن ذلك، وأن الأشخاص الذين يقومون بذلك كانوا في مكان ما في عالم آخر. لا، إنهم هنا. وربما، بفضل الأشخاص من هذا المجال، ظهر مقال في خلاصتك. هناك الكثير من الدورات التدريبية التي ستساعدك على التعود على هذه الحرفة، ولكن هنا سأساعدك على اتخاذ الخطوة الأولى.

حسنا، هل أنت مستعد؟ دعني أخبرك على الفور أنك ستحتاج إلى معرفة Python 3، لأن هذا هو ما سأستخدمه هنا. أنصحك أيضًا بتثبيته على Jupyter Notebook مسبقًا أو معرفة كيفية استخدام google colab.

Шаг первый

خطوتك الأولى في علم البيانات. تايتانيك

Kaggle هو مساعدك المهم في هذا الشأن. من حيث المبدأ، يمكنك الاستغناء عنها، لكنني سأتحدث عن ذلك في مقال آخر. هذه منصة تستضيف مسابقات علوم البيانات. في كل مسابقة من هذا القبيل، في المراحل المبكرة، ستكتسب قدرًا غير واقعي من الخبرة في حل المشكلات بمختلف أنواعها، وتجربة التطوير والخبرة في العمل ضمن فريق، وهو أمر مهم في عصرنا.

وسوف نأخذ مهمتنا من هناك. يطلق عليه "تايتانيك". الشرط هو هذا: توقع ما إذا كان كل فرد سينجو. بشكل عام، مهمة الشخص المشارك في DS هي جمع البيانات ومعالجتها وتدريب النموذج والتنبؤ وما إلى ذلك. في Kaggle، يُسمح لنا بتخطي مرحلة جمع البيانات - حيث يتم تقديمها على المنصة. نحن بحاجة إلى تنزيلها ويمكننا البدء!

يمكنك القيام بذلك على النحو التالي:

تحتوي علامة التبويب "البيانات" على ملفات تحتوي على بيانات

خطوتك الأولى في علم البيانات. تايتانيك

خطوتك الأولى في علم البيانات. تايتانيك

لقد قمنا بتنزيل البيانات، وقمنا بإعداد دفاتر ملاحظات Jupyter الخاصة بنا و...

Шаг второй

كيف يمكننا الآن تحميل هذه البيانات؟

أولاً، لنستورد المكتبات الضرورية:

import pandas as pd
import numpy as np

سيسمح لنا Pandas بتنزيل ملفات بتنسيق ‎.csv لمزيد من المعالجة.

هناك حاجة إلى Numpy لتمثيل جدول البيانات الخاص بنا كمصفوفة تحتوي على أرقام.
تفضل. لنأخذ الملف Train.csv ونرفعه إلينا:

dataset = pd.read_csv('train.csv')

سوف نشير إلى اختيارنا لبيانات Train.csv من خلال متغير مجموعة البيانات. دعونا نرى ما هو هناك:

dataset.head()

خطوتك الأولى في علم البيانات. تايتانيك

تسمح لنا الدالة head() بإلقاء نظرة على الصفوف القليلة الأولى من إطار البيانات.

الأعمدة الباقية هي بالضبط نتائجنا المعروفة في إطار البيانات هذا. بالنسبة لسؤال المهمة، نحتاج إلى التنبؤ بعمود Survived لبيانات test.csv. تقوم هذه البيانات بتخزين معلومات حول الركاب الآخرين في تيتانيك، الذين لا نعرف النتيجة، لحل المشكلة.

لذلك، دعونا نقسم جدولنا إلى بيانات تابعة ومستقلة. كل شيء بسيط هنا. البيانات التابعة هي تلك البيانات التي تعتمد على البيانات المستقلة الموجودة في النتائج. البيانات المستقلة هي تلك البيانات التي تؤثر على النتيجة.

على سبيل المثال، لدينا مجموعة البيانات التالية:

"قامت فوفا بتدريس علوم الكمبيوتر - لا.
حصلت Vova على 2 في علوم الكمبيوتر.

تعتمد الدرجة في علوم الكمبيوتر على إجابة السؤال: هل درست فوفا علوم الكمبيوتر؟ هل هذا واضح؟ دعونا ننتقل، نحن بالفعل أقرب إلى الهدف!

المتغير التقليدي للبيانات المستقلة هو X. وبالنسبة للبيانات التابعة، y.

نقوم بما يلي:

X = dataset.iloc[ : , 2 : ]
y = dataset.iloc[ : , 1 : 2 ]

ما هو؟ باستخدام الدالة iloc[:, 2: ] نقول لبيثون: أريد أن أرى في المتغير X البيانات بدءًا من العمود الثاني (بما في ذلك شريطة أن يبدأ العد من الصفر). في السطر الثاني نقول أننا نريد أن نرى البيانات في العمود الأول.

[ a:b, c:d ] هو بناء ما نستخدمه بين قوسين. إذا لم تقم بتحديد أية متغيرات، فسيتم حفظها كإعداد افتراضي. أي أنه يمكننا تحديد [:,: d] ثم سنحصل على جميع الأعمدة في إطار البيانات، باستثناء تلك التي تبدأ من الرقم d فصاعدًا. يحدد المتغيران a وb السلاسل، ولكننا نحتاج إليها جميعًا، لذلك نترك هذا افتراضيًا.

دعونا نرى ما حصلنا عليه:

X.head()

خطوتك الأولى في علم البيانات. تايتانيك

y.head()

خطوتك الأولى في علم البيانات. تايتانيك

ومن أجل تبسيط هذا الدرس الصغير، سنقوم بإزالة الأعمدة التي تتطلب عناية خاصة أو التي لا تؤثر على قابلية البقاء على الإطلاق. أنها تحتوي على بيانات من النوع str.

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X.drop(count, inplace=True, axis=1)

ممتاز! دعنا ننتقل إلى الخطوة التالية.

الخطوة الثالثة

نحتاج هنا إلى تشفير بياناتنا حتى يفهم الجهاز بشكل أفضل كيفية تأثير هذه البيانات على النتيجة. لكننا لن نقوم بتشفير كل شيء، ولكن فقط البيانات التي تركناها. العمود "الجنس". كيف نريد الترميز؟ دعونا نمثل البيانات المتعلقة بجنس الشخص كمتجه: 10 - ذكر، 01 - أنثى.

أولاً، دعونا نحول جداولنا إلى مصفوفة NumPy:

X = np.array(X)
y = np.array(y)

والآن لننظر:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X = np.array(ct.fit_transform(X))

تعد مكتبة sklearn مكتبة رائعة تتيح لنا القيام بعمل كامل في علوم البيانات. يحتوي على عدد كبير من نماذج التعلم الآلي المثيرة للاهتمام ويسمح لنا أيضًا بإعداد البيانات.

سيسمح لنا OneHotEncoder بتشفير جنس الشخص في هذا التمثيل، كما وصفنا. سيتم إنشاء فئتين: الذكور والإناث. إذا كان الشخص رجلا، فسيتم كتابة 2 في عمود "الذكر"، و 1 في عمود "الأنثى"، على التوالي.

بعد OneHotEncoder() يوجد [1] - وهذا يعني أننا نريد تشفير العمود رقم 1 (العد من الصفر).

ممتاز. دعونا ننتقل إلى أبعد من ذلك!

كقاعدة عامة، يحدث هذا أن يتم ترك بعض البيانات فارغة (أي، NaN - وليس رقما). على سبيل المثال، هناك معلومات عن الشخص: اسمه، جنسه. لكن لا توجد معلومات عن عمره. في هذه الحالة سنطبق الطريقة التالية: سنوجد الوسط الحسابي على جميع الأعمدة، وإذا كانت بعض البيانات مفقودة في العمود، فسنملأ الفراغ بالوسط الحسابي.

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X)
X = imputer.transform(X)

الآن دعونا نأخذ في الاعتبار أن المواقف تحدث عندما تكون البيانات كبيرة جدًا. توجد بعض البيانات في الفاصل الزمني [0:1]، بينما قد يتجاوز بعضها المئات والآلاف. وللتخلص من هذا التشتت ولجعل الكمبيوتر أكثر دقة في حساباته، سنقوم بمسح البيانات ضوئيًا وقياسها. دع جميع الأرقام لا تتجاوز ثلاثة. للقيام بذلك، سوف نستخدم وظيفة StandardScaler.

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X[:, 2:] = sc.fit_transform(X[:, 2:])

الآن تبدو بياناتنا كما يلي:

خطوتك الأولى في علم البيانات. تايتانيك

فصل. نحن بالفعل قريبون من هدفنا!

الخطوة الرابعة

دعونا ندرب نموذجنا الأول! من مكتبة sklearn يمكننا العثور على عدد كبير من الأشياء المثيرة للاهتمام. لقد قمت بتطبيق نموذج Gradient Boosting Classifier على هذه المشكلة. نحن نستخدم المصنف لأن مهمتنا هي مهمة تصنيف. يجب تعيين التشخيص إلى 1 (نجا) أو 0 (لم ينج).

from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier(learning_rate=0.5, max_depth=5, n_estimators=150)
gbc.fit(X, y)

تخبر الدالة الملائمة بايثون: دع النموذج يبحث عن التبعيات بين X وy.

أقل من ثانية والنموذج جاهز.

خطوتك الأولى في علم البيانات. تايتانيك

كيفية تطبيقه؟ سنرى الآن!

الخطوة الخامسة. خاتمة

نحن الآن بحاجة إلى تحميل جدول ببيانات الاختبار الخاصة بنا والتي نحتاج إلى عمل توقعات لها. باستخدام هذا الجدول، سنفعل نفس الإجراءات التي قمنا بها مع X.

X_test = pd.read_csv('test.csv', index_col=0)

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X_test.drop(count, inplace=True, axis=1)

X_test = np.array(X_test)

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X_test = np.array(ct.fit_transform(X_test))

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X_test)
X_test = imputer.transform(X_test)

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_test[:, 2:] = sc.fit_transform(X_test[:, 2:])

دعونا نطبق نموذجنا الآن!

gbc_predict = gbc.predict(X_test)

الجميع. لقد قمنا بالتنبؤ. الآن يجب تسجيله في ملف CSV وإرساله إلى الموقع.

np.savetxt('my_gbc_predict.csv', gbc_predict, delimiter=",", header = 'Survived')

مستعد. لقد تلقينا ملفًا يحتوي على توقعات لكل راكب. كل ما تبقى هو تحميل هذه الحلول على الموقع والحصول على تقييم للتوقعات. لا يمنح هذا الحل البدائي 74% من الإجابات الصحيحة للجمهور فحسب، بل يمنح أيضًا بعض الزخم في علم البيانات. يمكن للأشخاص الأكثر فضولًا أن يكتبوا لي في رسائل خاصة في أي وقت ويطرحوا سؤالاً. شكرا للجميع!

المصدر: www.habr.com

إضافة تعليق