දත්ත විද්‍යාවේ ඔබේ පළමු පියවර. ටයිටැනික්

කෙටි හැඳින්වීමේ වචනයක්

කළ යුතු දේ සහ එය කරන්නේ කෙසේද යන්න කියා දෙන පියවරෙන් පියවර උපදෙස් අපට ලබා දුන්නේ නම් අපට තවත් දේවල් කළ හැකි යැයි මම විශ්වාස කරමි. මගේ ජීවිතයේ මට යමක් ආරම්භ කිරීමට නොහැකි වූ අවස්ථා මටම මතකයි, මන්ද ආරම්භ කළ යුත්තේ කොතැනින්ද යන්න තේරුම් ගැනීම දුෂ්කර බැවිනි. සමහර විට, වරක් අන්තර්ජාලයේ ඔබ “දත්ත විද්‍යාව” යන වචන දැක, ඔබ මෙයින් බොහෝ දුරස් බව තීරණය කළ අතර, මෙය කරන පුද්ගලයින් කොහේ හෝ වෙනත් ලෝකයක සිටී. නැහැ, ඔවුන් මෙතනම ඉන්නවා. තවද, සමහර විට, මෙම ක්ෂේත්‍රයේ පුද්ගලයින්ට ස්තූතිවන්ත වන අතර, ඔබේ සංග්‍රහයේ ලිපියක් දර්ශනය විය. මෙම ශිල්පයට හුරු වීමට ඔබට උපකාර වන පාඨමාලා ඕනෑ තරම් ඇත, නමුත් මෙහි පළමු පියවර ගැනීමට මම ඔබට උපකාර කරමි.

හොඳයි, ඔබ සූදානම්ද? මම ඔබට පයිතන් 3 දැන ගැනීමට අවශ්‍ය බව මම ඔබට වහාම කියමි, මන්ද මා මෙහි භාවිතා කරන්නේ එයයි. එය කල්තියාම Jupyter Notebook හි ස්ථාපනය කිරීමට හෝ ගූගල් කොලබ් භාවිතා කරන්නේ කෙසේදැයි බැලීමට මම ඔබට උපදෙස් දෙමි.

පළමු පියවර

දත්ත විද්‍යාවේ ඔබේ පළමු පියවර. ටයිටැනික්

මෙම කාරණය සම්බන්ධයෙන් Kaggle ඔබේ සැලකිය යුතු සහායකයා වේ. ප්‍රතිපත්තිමය වශයෙන්, ඔබට එය නොමැතිව කළ හැකිය, නමුත් මම මේ ගැන වෙනත් ලිපියකින් කතා කරමි. මෙය දත්ත විද්‍යා තරඟ පවත්වන වේදිකාවකි. එවැනි සෑම තරඟයකදීම, මුල් අවධියේදී ඔබට විවිධ ආකාරයේ ගැටළු විසඳීම, සංවර්ධන අත්දැකීම් සහ කණ්ඩායමක වැඩ කිරීමේ අත්දැකීම් පිළිබඳ යථාර්ථවාදී නොවන අත්දැකීමක් ලැබෙනු ඇත, එය අපගේ කාලය තුළ වැදගත් වේ.

අපි එතැනින් අපේ කාර්යය භාර ගනිමු. එය "ටයිටැනික්" ලෙස හැඳින්වේ. කොන්දේසිය මෙයයි: එක් එක් පුද්ගලයා නොනැසී පවතිනු ඇත්දැයි අනාවැකි පළ කරන්න. සාමාන්‍යයෙන් කථා කරන විට, DS සම්බන්ධ පුද්ගලයෙකුගේ කාර්යය වන්නේ දත්ත එකතු කිරීම, එය සැකසීම, ආකෘතියක් පුහුණු කිරීම, පුරෝකථනය කිරීම යනාදියයි. kaggle හි, දත්ත රැස් කිරීමේ අදියර මඟ හැරීමට අපට අවසර ඇත - ඒවා වේදිකාවේ ඉදිරිපත් කෙරේ. අපි ඒවා බාගත කළ යුතු අතර අපට ආරම්භ කළ හැකිය!

ඔබට මෙය පහත පරිදි කළ හැකිය:

දත්ත පටිත්තෙහි දත්ත අඩංගු ගොනු අඩංගු වේ

දත්ත විද්‍යාවේ ඔබේ පළමු පියවර. ටයිටැනික්

දත්ත විද්‍යාවේ ඔබේ පළමු පියවර. ටයිටැනික්

අපි දත්ත බාගත කර, අපගේ Jupyter සටහන් පොත් සකස් කර...

දෙවන පියවර

අපි දැන් මෙම දත්ත පූරණය කරන්නේ කෙසේද?

පළමුව, අවශ්‍ය පුස්තකාල ආනයනය කරමු:

import pandas as pd
import numpy as np

Pandas අපට වැඩිදුර සැකසීම සඳහා .csv ගොනු බාගත කිරීමට ඉඩ ලබා දේ.

අංක සහිත න්‍යාසයක් ලෙස අපගේ දත්ත වගුව නිරූපණය කිරීමට Numpy අවශ්‍ය වේ.
ඉදිරියට යන්න. අපි train.csv ගොනුව ගෙන එය අපට උඩුගත කරමු:

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

අපි dataset variable එක හරහා අපගේ train.csv දත්ත තේරීම වෙත යොමු කරමු. එහි ඇති දේ බලමු:

dataset.head()

දත්ත විද්‍යාවේ ඔබේ පළමු පියවර. ටයිටැනික්

head() ශ්‍රිතය මඟින් දත්ත රාමුවක මුල් පේළි කිහිපය දෙස බැලීමට අපට ඉඩ සලසයි.

ඉතිරිව ඇති තීරු හරියටම අපගේ ප්‍රතිඵල වේ, ඒවා මෙම දත්ත රාමුවේ දනී. කාර්ය ප්‍රශ්නය සඳහා, අපි test.csv දත්ත සඳහා Survived තීරුව පුරෝකථනය කළ යුතුයි. මෙම දත්ත ටයිටැනික් නෞකාවේ අනෙකුත් මගීන් පිළිබඳ තොරතුරු ගබඩා කරයි, ඒ සඳහා අපි, ගැටලුව විසඳා, ප්රතිඵලය නොදනිමු.

එබැවින්, අපගේ වගුව රඳා පවතින සහ ස්වාධීන දත්ත වලට බෙදමු. මෙහි සෑම දෙයක්ම සරලයි. යැපෙන දත්ත යනු ප්රතිඵලවල ඇති ස්වාධීන දත්ත මත රඳා පවතින දත්ත වේ. ස්වාධීන දත්ත යනු ප්රතිඵලය කෙරෙහි බලපාන දත්ත වේ.

උදාහරණයක් ලෙස, අපට පහත දත්ත කට්ටලයක් ඇත:

“Vova පරිගණක විද්‍යාව ඉගැන්නුවා - නැහැ.
Vova පරිගණක විද්‍යාවෙන් 2ක් ලැබුවා.”

පරිගණක විද්‍යාවේ ශ්‍රේණිය ප්‍රශ්නයට පිළිතුර මත රඳා පවතී: Vova පරිගණක විද්‍යාව හැදෑරුවාද? ඒක පැහැදිලිද? අපි ඉදිරියට යමු, අපි දැනටමත් ඉලක්කයට සමීපව සිටිමු!

ස්වාධීන දත්ත සඳහා සාම්ප්රදායික විචල්යය 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:])

දැන් අපේ දත්ත පෙනෙන්නේ මෙහෙමයි.

දත්ත විද්‍යාවේ ඔබේ පළමු පියවර. ටයිටැනික්

පන්තිය. අපි දැනටමත් අපේ ඉලක්කයට ආසන්නයි!

හතරවන පියවර

අපි අපේ පළමු ආකෘතිය පුහුණු කරමු! sklearn පුස්තකාලයෙන් අපට රසවත් දේවල් විශාල ප්‍රමාණයක් සොයාගත හැකිය. මම මෙම ගැටලුව සඳහා Gradient Boosting Classifier ආකෘතිය යෙදුවෙමි. අපගේ කාර්යය වර්ගීකරණ කාර්යයක් වන නිසා අපි A 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

අදහස් එක් කරන්න