Професионална програма
Loading...
AleksVAnd avatar AleksVAnd 3 Точки

StratifiedKFold

Здравейте,

Имам затруднение с този модул :

Вариант 1 :

Пробвам да задам няколко променливи когато използвам split(). Не става така, както е при train_test_split.

Вариант 2 :

Намерих пример как се създават различни вариабълс чрез for loop. Създавам четири generator object _BaseKFold.split от attributes и labels. И мога да видя съдържанието на всеки обект поотделно чрез list(). Доколкото разбирам съм изпълнил правилно условието на стъпка 4 от лаба.

Но когато се опитвам да ги използвам при GridSearchCV дава грешка, че тези вариабълс не са дефинирани. 

Вариант 3 :

Мога да се опитам да разделя multidimentional array да бъде single dimention. Но как да избера какви сплитове от тях да са?

Какво мислите?

Тагове:
1
Machine Learning 23/10/2019 15:16:40
g.stoyanov avatar g.stoyanov 776 Точки

Здравей,

Относно 4-та задача си мисля, че след:

skf = StratifiedKFold(n_splits=5, shuffle = False, random_state=None)
k_fold = skf.split(bank_attributes_train, bank_labels_train)

би трябвало да изпълним условието. Ако някой има друго мнение нека да сподели.

 

Иначе за крос валидацийте в следващите задачи ползвам следния подход:

grid_search = GridSearchCV(DecisionTreeClassifier(), params, scoring = make_scorer(f1_score, pos_label = 1), cv = k_fold)
grid_search.fit(bank_attributes_train, bank_labels_train)
tree_classifier = grid_search.best_estimator_

като преди всяка една валидация след Decision Tree е нужно да се извиква отново:

k_fold = skf.split(bank_attributes_train, bank_labels_train)

Надявам се това да е правилния начин :) 

Очаквам препоръки и корекции.

Надявам се информацията да ти е помогнала.

0
AleksVAnd avatar AleksVAnd 3 Точки

Здравей,

Със закъснение видях отговора ти - благодаря все пак.

Аз го направих по малко по- различен начин :

k_fold = list(cv.split(bank_attributes_train, bank_labels_train))

 

Защото като го правих както ти си го направил и после проверявам какъв е резултата :

Out[28]: <generator object _BaseKFold.split at 0x000001B2BBA18B10>

 

И ми даваше грешка, като се опитвах да го използвам в GridSearchCV.

 

Явно към края на курса ще разберем кое е правилно.

 

Успех!

1