Dokumentēt procesu kā izvēlēties datus apmācībai
mld_course
mld_user ml_logstore
Dabūt : Vienā 1D tabulāri datus:
Bāzes ieraksts ir balstīt uz logs, ar īpaši atlasītiem events SELECT count(*), eventname FROM ml_logstore
Pievienot course_id
Pievienot user_id
Pievienot klāt info par atzīmi kur iespējams
atzīme no šim event
atzīme uz brīdi
atzīme kursa beigās
Vēl ideja - sagatavot otru CSV, kur būtu vispārēja info par katru user_id un/vai course_id, kuru varētu izmantot, lai iebarotu papildus datus hidden state pirms laika rindu apmācības
Noskaidrot kas ir Amjad Abu Saa - grade1, grade2?
data prepocessing pandas ar
Median / Avarage vērtības visur kur iztrūkst
Kategorijas par one-hot encoded
Train / test 80:20 un saglabasi CSV
BALANSĒT TEST datu kopu (obligāti test kopā jābūt vienādam skaitam klašu), train var nebūt
Pandas piemērs (avg column values, catgorical one hot encoded)
x
1
2df_full = pd.read_csv('/Users/evalds/Downloads/lochsmith_conversations.csv')
3print(df_full.shape)
4
5print(df_full.describe())
6
7# fill missing values with mean
8df_full = df_full.fillna(df_full.mean())
9
10#print(df_full.describe())
11
12# drop columns conversation_id, user_id, lang
13df_categorical_inputs = df_full[['user_id', 'hour_in_day']]
14
15# convert categorical columns
16df_categorical_inputs = pd.get_dummies(df_categorical_inputs, columns=['user_id', 'hour_in_day'])
17df_full = df_full.drop(['conversation_id', 'user_id', 'lang', 'hour_in_day', 'metric_sales_amount'], axis=1)
18
19# extract is_yes, is_no columns
20df_yes = df_full[['is_yes']]
21df_no = df_full[['is_no']]
22
23# count where df_yes and df_no in both are true
24df_yes_no = df_yes & df_no
25print('df_yes_no', df_yes_no.sum())
26print('df_yes', df_yes.sum())
27print('df_no', df_no.sum())
28
29# drop is_yes, is_no columns
30df_full = df_full.drop(['is_yes', 'is_no'], axis=1)
31
32# describe all columns, include all
33# with pd.option_context('display.max_columns', 40):
34# print(df_full.describe(include='all'))
35
36# show in plt histogram for all columns
37# df_full.hist(bins=50, figsize=(50,50))
38# plt.show()
39
40# standardize data
41scaler = StandardScaler()
42df_full[:] = scaler.fit_transform(df_full)
43#df_full[:] = transform.robust_scaler(df_full)
44
45# df_full.hist(bins=50, figsize=(50,50))
46# plt.show()
47
48# add categorical columns
49
50df_full = pd.concat([df_full, df_categorical_inputs], axis=1)
51
Iepazīties ar:
SHAP LIME ELI5 algoritmi kolonui interpretācijai, noteikt kura kolona ietekmē rezultātu
x
1from lime import lime_tabular
2import shap
3
4# if use_shap:
5 explainer = shap.KernelExplainer(
6 model=batch_predict,
7 data=data_full.numpy(),
8 feature_names=column_names,
9 normalize=False,
10 )
11else:
12 explainer = lime_tabular.LimeTabularExplainer(
13 data.numpy(),
14 mode="classification",
15 feature_names=column_names,
16 # verbose=True,
17 class_names=["yes", "no"],
18 discretize_continuous=True,
19 )
Aprakstīt dataset izveides posmus, sagatavot CSV
Apmācīt pirmos modeļus, dokumentēt Loss, F1 līknes
Pievienot 2 Shēmas:
Kā SLR izvēlējies darbus iekļaut pētījumā
Kā tīrīji un izvēlējies datus datu kopās
Literatūras anlīzes tabulas, piemērs: