# -- Code Cell --
KFold...

target_col = 'target'
cat_col = 'cat'
train['TargetEncoindg'] = np.nan
mean_global = train[target_col].mean()
kf = Kfold(n_splits = 5, shuffles = True)
for tr_idx, val_idx in kf.split(train): #practic randurile din train si randurile din validation 
    tr_fold = train.iloc[tr_idx] #acum luam foldul in functie de idurile selectate de KFOLD
    val_fold = train.iloc(val_idx)
    means = tr_fold.groupby(cat_col)[target_col].mean()
    train.loc[val_idx,'TargetEncoding'] = val_fold[cat_col].map(means) #din setul de validare luam coloana cateogirca, si mapam/asignam valorile cu means si dupa stocam in TargetEncoding in functie de val_idx

train['TargetEncoding'] = train['TargetEncoding'].fillna(mean_global)
means = train.groupby(cat_col)[target_col].mean()
test['TargetEncoding'] = test[cat_col].map(means).fillna(mean_global)

# -- Code Cell --
target = ''
cat = ''
global_mean = train[target].mean()
train['TargetEncoding'] = np.nan
kf = Kfold(n_plits= 5, shuffle= True, random_state = 42)
for tr_idx, val_idx in kf.split(train):
    tr_col = train.iloc[tr_idx]
    val_col = train.iloc[val_idx]
    means = tr_col.groupby(cat_col)[target].mean()
    train.loc[val_idx,'TargetEncoding'] = val_fold[cat_col].map(means)
train['TargetEncoding'] = train['TE'].fillna(mean_global)
means=train.groupby(cat_col)[target].mean()
test['TargetEndoing'] = test[cat_col].map(means).fillna(mean_global)

# -- Code Cell --
for tr_idx, val_idx in kf.split(train):
    tr_col = train.iloc[tr_idx]
    val_col = trian.iloc[val_idx]
    means = tr_col.groupby(cat_col)[target].mean()
    train.loc[val_idx,'TE'] = val_fold[cat_col].map(means)
means = train.groupby(cat_col)[target].mean()
test['te'] = test[cat_col].map(means)

# -- Code Cell --
for tr_idx, val_idx in kf.split(train):
    tr_col = train.iloc[tr_idx]
    val_col = train.iloc[val_idx]
    means=tr_fold.groupby(cat_col)[target].mean()
    train.loc[val_idx,'TE'] = val_col[cat_col].map(means)
means=train.groupby(cat_col)[target].mean()
test['TE']=test[cat_col].map(means)

# -- Code Cell --
for tr_idx, val_idx in kf.split(train):
    tr_col = train.iloc(tr_idx)
    val_col = train.iloc(val_idx)
    means = tr_fold.groupby(cat_col)[target].mean()
    train.loc[val_idx,'TE'] = val_col[cat_col].map(means)
means = train.groupby(cat_col)[target].mean()
test['TE'] = test[cat_col].map(means)

# -- Code Cell --
stop = set(stopwords.words('english'))
lem = WorldNetLemmatizer()

train['text']= train['text'].str.lower()

def tokenize(text):
    tokens = word_tokenize(text)
    tokens = [w for w in tokens if w not in stop]
    tokens = [lem.lemmatize(w) for w in tokens]
    return tokens
train['tokens'] = train['text'].apply(tokenize)
train['clean_text'] = trian['tokens'].str.join('')