اولین قدم شما در علم داده تایتانیک

یک کلمه مقدماتی کوتاه

من معتقدم که اگر دستورالعمل های گام به گام به ما ارائه شود که به ما می گوید چه کاری و چگونه انجام دهیم، می توانیم کارهای بیشتری انجام دهیم. من خودم لحظاتی از زندگی ام را به یاد می آورم که نمی توانستم کاری را شروع کنم زیرا درک اینکه از کجا شروع کنم دشوار بود. شاید روزی روزگاری در اینترنت کلمات "Data Science" را دیدید و به این نتیجه رسیدید که از این موضوع دور هستید و افرادی که این کار را انجام می دهند جایی در آنجا هستند، در دنیای دیگری. نه، آنها همین جا هستند. و، شاید، به لطف افراد این حوزه، مقاله ای در فید شما ظاهر شد. دوره های زیادی وجود دارد که به شما کمک می کند تا به این کاردستی عادت کنید، اما در اینجا من به شما کمک می کنم اولین قدم را بردارید.

خوب، آماده ای؟ اجازه دهید فوراً به شما بگویم که باید پایتون 3 را بدانید، زیرا من در اینجا از آن استفاده خواهم کرد. همچنین به شما توصیه می کنم از قبل آن را روی نوت بوک Jupyter نصب کنید یا نحوه استفاده از google colab را ببینید.

گام اول

اولین قدم شما در علم داده تایتانیک

Kaggle دستیار مهم شما در این زمینه است. در اصل، شما می توانید بدون آن انجام دهید، اما من در مقاله دیگری در مورد این صحبت خواهم کرد. این پلتفرمی است که مسابقات علوم داده را میزبانی می کند. در هر یک از این رقابت ها، در مراحل اولیه، مقدار غیر واقعی تجربه در حل مشکلات انواع مختلف، تجربه توسعه و تجربه کار در یک تیم را به دست خواهید آورد که در زمان ما مهم است.

ما از آنجا تکلیف خود را خواهیم گرفت. اسمش «تایتانیک» است. شرط این است: پیش بینی کنید که آیا هر فردی زنده می ماند یا خیر. به طور کلی، وظیفه یک فرد درگیر در DS جمع آوری داده، پردازش آن، آموزش مدل، پیش بینی و غیره است. در Kaggle، ما مجاز به رد شدن از مرحله جمع آوری داده ها هستیم - آنها بر روی پلت فرم ارائه می شوند. ما باید آنها را دانلود کنیم و می توانیم شروع کنیم!

شما می توانید این کار را به شرح زیر انجام دهید:

برگه Data حاوی فایل هایی است که حاوی داده است

اولین قدم شما در علم داده تایتانیک

اولین قدم شما در علم داده تایتانیک

ما داده ها را دانلود کردیم، نوت بوک های Jupyter خود را آماده کردیم و...

گام دوم

اکنون چگونه این داده ها را بارگذاری کنیم؟

ابتدا بیایید کتابخانه های لازم را وارد کنیم:

import pandas as pd
import numpy as np

پانداها به ما امکان می‌دهند فایل‌های csv. را برای پردازش بیشتر دانلود کنیم.

Numpy برای نمایش جدول داده ما به عنوان یک ماتریس با اعداد مورد نیاز است.
برو جلو. بیایید فایل train.csv را برداریم و آن را برای ما آپلود کنیم:

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

ما از طریق متغیر مجموعه داده به انتخاب داده train.csv خود مراجعه خواهیم کرد. بیایید ببینیم چه چیزی وجود دارد:

dataset.head()

اولین قدم شما در علم داده تایتانیک

تابع head() به ما اجازه می دهد تا به چند ردیف اول یک دیتافریم نگاه کنیم.

ستون‌های Survived دقیقاً نتایج ما هستند که در این چارچوب داده‌ای شناخته شده‌اند. برای سوال وظیفه، باید ستون 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)

فوق العاده! بیایید به مرحله بعدی برویم.

گام سوم

در اینجا باید داده های خود را رمزگذاری کنیم تا دستگاه بهتر بفهمد که این داده ها چگونه بر نتیجه تأثیر می گذارد. اما ما همه چیز را رمزگذاری نمی‌کنیم، بلکه فقط داده‌های str را که گذاشتیم رمزگذاری نمی‌کنیم. ستون "سکس". چگونه می خواهیم کدنویسی کنیم؟ بیایید داده های مربوط به جنسیت یک فرد را به عنوان یک بردار نشان دهیم: 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 و در ستون "مونث" 0 نوشته می شود.

بعد از 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:])

اکنون داده های ما به این صورت است:

اولین قدم شما در علم داده تایتانیک

کلاس. ما در حال حاضر به هدف خود نزدیک شده ایم!

مرحله چهارم

بیایید اولین مدل خود را آموزش دهیم! از کتابخانه اسکلرن می توانیم تعداد زیادی چیز جالب پیدا کنیم. من مدل 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)

تابع fit به پایتون می گوید: اجازه دهید مدل به دنبال وابستگی بین 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

اضافه کردن نظر