sklearn gradientboosting proč train_split nezmění?

hlasů
0

když se učí o Pythonu a neuronových sítí
jsem měl síťový model neurální, který byl jasně overfitted.
Takže jsem se rozhodl rozdělit data vlaku v testovací a validační sady.
Tedy trénovat a výsledky y stali: traintest a ytest a trainval a yval
A vytvořil testovací funkci pro vyzkoušení různých nastavení modelu out:

learning_rates = [0.005, 0.001]
estimaters =[50,300,800]
criterion =['friedman_mse','mse','mae']

from sklearn.model_selection import train_test_split
traintest, trainval, ytest, yval = train_test_split(train, y,random_state=4,test_size =0.35 )

for crit in criterion :
  for learning_rate in learning_rates:
    for est in estimaters:
        gb = GradientBoostingClassifier(criterion= crit,  n_estimators=est, learning_rate = learning_rate, min_samples_leaf=2,min_samples_split=20, max_features=3, max_depth = 2, random_state = 0)
        gb.fit(traintest, ytest)
        s = gb.score(traintest, ytest)
        if (s>0.7)&(s<1.0):   # <1 as I dont want overfitted results.
                              # neither do i want to show poor results
            s2 = gb.score(trainval, yval) # only calc if s was good enough
            print(Learn rate: {0:.3f} Est: {1:.0f} S: {2:.16f} s2: {2:.16f} .format(learning_rate,est,s,s2)+crit)

Takže v podstatě z výše uvedeného kódu, mám ů a s2 a nastavení tiskové testů
Moje výsledky jsou v sa dat vlaku a s2 je pro data validace

Pak bych si, že mají různé sady dat v uvedeném kódu by vedlo k rozdílným výsledkům pro sekund a S2 k mému překvapení i když jejich stejné, jak je to možné?
Výstup o kód:

LearnRate: 0.005 Est: 300 S: 0.97063903 s2: 0.97063903 friedman_mse   
LearnRate: 0.001 Est: 800 S: 0.94300518 s2: 0.94300518 friedman_mse   
LearnRate: 0.005 Est: 300 S: 0.97063903 s2: 0.97063903 mse   
LearnRate: 0.001 Est: 800 S: 0.94300518 s2: 0.94300518 mse   
LearnRate: 0.005 Est: 300 S: 0.96718480 s2: 0.96718480 mae    

Je to důsledkem chyby ve způsobu, jakým i kódovaný to v pythonu, nebo je něco jiného děje s GradientBoostingClassifier ??

Položena 20/10/2018 v 13:01
zdroj uživatelem
V jiných jazycích...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more