/ / Прекъсване Случайната класификация на горите се вписва в части в питон? - питон, машинно обучение, scikit-learn

Разбиване Случайна класификация на горите се вписва в парчета в питон? - питън, машинно обучение, Scikit-learn

Имам почти 900 000 реда информация, която азПроблемът е, че когато се опитам да създам модела, компютърът ми замръзва напълно, така че това, което искам да опитам, е да изпълнява модела на всеки 50 000 реда, но не съм сигурен дали е възможно.

Така че кодът, който имам сега, е

# This code freezes my computer
rfc.fit(X,Y)

#what I want is
model = rfc.fit(X.ix[0:50000],Y.ix[0:50000])
model = rfc.fit(X.ix[0:100000],Y.ix[0:100000])
model = rfc.fit(X.ix[0:150000],Y.ix[0:150000])
#... and so on

Отговори:

1 за отговор № 1

Някои алгоритми в scikit-learn изпълняват"частен_фит ()" метод, който е това, което търсите. Съществуват случайни алгоритми за горите, които правят това, но аз вярвам, че алгоритъмът за научен урок не е такъв алгоритъм.

Въпреки това, този въпрос и отговор може да имат заобиколно решение, което ще работи за вас. Можете да обучавате гори на различни подгрупи и да сглобите наистина голяма гора в края: Комбиниране на случайни горски модели в научен урок


1 за отговор № 2

Друг метод, подобен на този, свързан с Андреус, е да се отглеждат дърветата в гората поотделно.

Направих това известно време назад: основно обучих редица DecisionTreeClassifier"Една по една на различни дялове на данните за обучение. Запазих всеки модел чрез ецване, след което ги заредих в списък, който беше присвоен на estimators_ атрибут на RandomForestClassifier обект. Вие също трябва да се погрижите да настроите останалата част от RandomForestClassifier атрибути.

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


0 за отговор № 3

Чувствайте се свободни да ме коригирате, ако "греша, но предполагам, че не използвате най-актуалната версия на scikit-learn (0.16.1 като на това пишете), че сте на Windows машина и използвате n_jobs=-1 (или комбинация от трите). Така че моето предложение би било първо да ъпгрейдвам scikit-learn или задайте n_jobs=1 и се опитайте да подберете целия набор от данни.

Ако това не успее, разгледайте warm_start параметър. Като я настроите True и постепенно увеличаване n_estimators можете да поставите допълнителни дървета в поднабори от данните си:

# First build 100 trees on the first chunk
clf = RandomForestClassifier(n_estimators=100, warm_start=True)
clf.fit(X.ix[0:50000],Y.ix[0:50000])

# add another 100 estimators on chunk 2
clf.set_params(n_estimators=200)
clf.fit(X.ix[0:100000],Y.ix[0:100000])

# and so forth...
clf.set_params(n_estimators=300)
clf.fit(X.ix[0:150000],Y.ix[0:150000])

Друга възможност е да се постави нов класификатор на всяко парче и след това просто да се изчислят средните прогнози от всички класификатори или да се сливат дърветата в една голяма случайна гора описани тук.