Наука за данните

Урок за машинно обучение със Scikit-learn

Урок за машинно обучение със Scikit-learn

В този урок за машинно обучение с scikit-learn ще научим различни аспекти на този отличен пакет Python, който ни позволява да прилагаме прости и сложни възможности за машинно обучение върху разнообразен набор от данни, заедно с функционалности, за да тестваме хипотезата, която установяваме.

Пакетът scikit-learn съдържа прости и ефективни инструменти за прилагане на извличане на данни и анализ на данни в набори от данни и тези алгоритми са достъпни за прилагане в различен контекст. Това е пакет с отворен код, наличен под лиценз BSD, което означава, че можем да използваме тази библиотека дори и в търговската мрежа. Той е изграден върху matplotlib, NumPy и SciPy, така че е универсален по природа. Ще използваме Anaconda с тетрадка Jupyter, за да представим примери в този урок.

Какво предоставя scikit-learn?

Библиотеката scikit-learn се фокусира изцяло върху моделирането на данни. Моля, обърнете внимание, че в scikit-learn няма основни функционалности, когато става въпрос за зареждане, манипулиране и обобщаване на данни. Ето някои от популярните модели, които scikit-learn ни предоставя:

Инсталирайте Python scikit-learn

Само бележка преди стартиране на инсталационния процес, ние използваме виртуална среда за този урок, който направихме със следната команда:

python -m virtualenv scikit
източник scikit / bin / активиране

След като виртуалната среда е активна, можем да инсталираме библиотека за панди във виртуалната среда, така че примери, които създаваме след това, да могат да бъдат изпълнени:

pip инсталирайте scikit-learn

Или можем да използваме Conda, за да инсталираме този пакет със следната команда:

conda инсталирайте scikit-learn

Виждаме нещо подобно, когато изпълняваме горната команда:

След като инсталацията завърши с Conda, ще можем да използваме пакета в нашите Python скриптове като:

внос sklearn

Нека започнем да използваме scikit-learn в нашите скриптове, за да разработим страхотни алгоритми за машинно обучение.

Импортиране на набори от данни

Едно от страхотните неща с scikit-learn е, че той се предлага предварително зареден с примерни набори от данни, с които е лесно да започнете бързо. Наборите от данни са Ирис и цифри набори от данни за класификация и цени на жилищата в Бостън набор от данни за техники на регресия. В този раздел ще разгледаме как да заредим и започнем да използваме набора от данни на ириса.

За да импортираме набор от данни, първо трябва да импортираме правилния модул, последвано от получаване на задържане към набора от данни:

от sklearn набори от данни за импортиране
iris = набори от данни.load_iris ()
цифри = набори от данни.load_digits ()
цифри.данни

След като стартираме горния кодов фрагмент, ще видим следния изход:

Цялата продукция е премахната за краткост. Това е наборът от данни, който ще използваме основно в този урок, но повечето концепции могат да бъдат приложени като цяло към всички набори от данни.

Просто забавен факт е да знаете, че в модула има множество модули scikit екосистема, една от които е уча използва се за алгоритми за машинно обучение. Вижте тази страница за много други присъстващи модули.

Проучване на набора от данни

След като импортирахме предоставения набор от цифри в нашия скрипт, трябва да започнем да събираме основна информация за набора от данни и това е, което ще направим тук. Ето основните неща, които трябва да проучите, докато търсите информация за набор от данни:

Нека напишем кратък кодов фрагмент, за да извлечем горните три информация от нашия набор от данни:

print ('Target:', цифри.мишена)
print ('Клавиши:', цифри.бутони ())
print ('Описание:', цифри.DESCR)

След като стартираме горния кодов фрагмент, ще видим следния изход:

Моля, обърнете внимание, че променливите цифри не са ясни. Когато отпечатахме набора от данни с цифри, той всъщност съдържаше масиви numpy. Ще видим как можем да получим достъп до тези масиви. За целта вземете под внимание ключовете, налични в екземпляра от цифри, който отпечатахме в последния кодов фрагмент.

Ще започнем с получаване на формата на данните от масива, която представлява редовете и колоните, които масивът има. За това първо трябва да получим действителните данни и след това да получим формата им:

digits_set = цифри.данни
печат (digits_set.форма)

След като стартираме горния кодов фрагмент, ще видим следния изход:

Това означава, че в нашия набор от данни има 1797 проби, заедно с 64 функции за данни (или колони). Освен това имаме и някои целеви етикети, които ще визуализираме тук с помощта на matplotlib. Ето кодов фрагмент, който ни помага да го направим:

импортиране на matplotlib.pyplot като plt
# Обединете изображенията и целевите етикети като списък
images_and_labels = list (zip (цифри.изображения, цифри.мишена))
за индекс, (изображение, етикет) в enumerate (images_and_labels [: 8]):
# инициализира подпартинг от 2X4 в i + 1-ва позиция
plt.подплот (2, 4, индекс + 1)
# Не е необходимо да начертавате оси
plt.ос („изключено“)
# Показване на изображения във всички подпартиди
plt.imshow (изображение, cmap = plt.см.grey_r, интерполация = 'най-близко')
# Добавете заглавие към всеки подплот
plt.заглавие ('Обучение:' + str (етикет))
plt.покажи ()

След като стартираме горния кодов фрагмент, ще видим следния изход:

Обърнете внимание как компресирахме двата масива NumPy заедно, преди да ги начертаем в решетка 4 на 2 без информация за осите. Сега сме сигурни за информацията, която имаме за набора от данни, с който работим.

Сега, след като знаем, че разполагаме с 64 функции за данни (които между другото са много функции), е предизвикателство да визуализираме действителните данни. Имаме решение за това обаче.

Анализ на основни компоненти (PCA)

Това не е урок за PCA, но нека дадем малка представа за това какво представлява. Тъй като знаем, че за да намалим броя на функциите от набор от данни, имаме две техники:

  1. Премахване на характеристиките
  2. Извличане на функции

Докато първата техника е изправена пред проблема с изгубени характеристики на данни, дори когато те може да са били важни, втората техника не страда от проблема, тъй като с помощта на PCA, ние конструираме нови функции за данни (по-малко на брой), където комбинираме въведете променливи по такъв начин, че да можем да пропуснем „най-малко важните“ променливи, като същевременно запазим най-ценните части от всички променливи.

Както се очакваше, PCA ни помага да намалим високоразмерността на данните което е пряк резултат от описване на обект с помощта на много функции за данни. Не само цифрите, но и много други практически набори от данни имат голям брой характеристики, които включват финансови институционални данни, данни за времето и икономиката за даден регион и т.н. Когато изпълняваме PCA върху набора от цифри, нашата цел ще бъде да намерим само 2 характеристики, така че те да имат повечето от характеристиките на набора от данни.

Нека напишем прост кодов фрагмент, за да приложим PCA върху набора от цифри, за да получим нашия линеен модел от само 2 функции:

от sklearn.декомпозиция внос PCA
feature_pca = PCA (n_components = 2)
намалена_данни_случайни = характеристика_pca.fit_transform (цифри.данни)
model_pca = PCA (n_components = 2)
намалена_данни_pca = модел_pca.fit_transform (цифри.данни)
намалена_данни_pca.форма
печат (намалени_данни_случайни)
печат (намалена_данни_pca)

След като стартираме горния кодов фрагмент, ще видим следния изход:

[[-1.2594655 21.27488324]
[7.95762224 -20.76873116]
[6.99192123 -9.95598191]
..
[10.8012644 -6.96019661]
[-4.87210598 12.42397516]
[-0.34441647 6.36562581]]
[[-1.25946526 21.27487934]
[7.95761543 -20.76870705]
[6.99191947 -9.9559785]
..
[10.80128422 -6.96025542]
[-4.87210144 12.42396098]
[-0.3443928 6.36555416]]

В горния код споменаваме, че се нуждаем само от 2 функции за набора от данни.

Сега, когато имаме добри познания за набора ни от данни, можем да решим какъв вид алгоритми за машинно обучение можем да приложим върху него. Познаването на набор от данни е важно, тъй като по този начин можем да решим каква информация може да бъде извлечена от него и с кои алгоритми. Също така ни помага да тестваме хипотезата, която установяваме, докато предсказваме бъдещи стойности.

Прилагане на к-означава групиране

Алгоритъмът на к-средства за клъстериране е един от най-лесните алгоритми за клъстериране за обучение без надзор. В това клъстериране имаме произволен брой клъстери и класифицираме точките си от данни в един от тези клъстери. Алгоритъмът k-mean ще намери най-близкия клъстер за всяка от дадената точка от данни и ще присвои тази точка от данни на този клъстер.

След като клъстерирането приключи, центърът на клъстера се преизчислява, на точките с данни се присвояват нови клъстери, ако има някакви промени. Този процес се повтаря, докато точките с данни не спрат да се променят там, за да се постигне стабилност.

Нека просто приложим този алгоритъм без предварителна обработка на данните. За тази стратегия кодовият фрагмент ще бъде доста лесен:

от клъстер за импортиране на sklearn
k = 3
k_means = клъстер.KMeans (k)
# данни за годни
k_ означава.годни (цифри.данни)
# резултати от печат
печат (k_means.етикети _ [:: 10])
печат (цифри.цел [:: 10])

След като стартираме горния кодов фрагмент, ще видим следния изход:

В горния изход можем да видим различни клъстери, предоставени на всяка от точките с данни.

Заключение

В този урок разгледахме отлична библиотека за машинно обучение, scikit-learn. Научихме, че има много други модули, достъпни в семейството на scikit, и приложихме прост алгоритъм на k-средата върху предоставения набор от данни. Има много повече алгоритми, които могат да бъдат приложени към набора от данни, освен к-средната клъстеризация, която сме приложили в този урок, препоръчваме ви да го направите и да споделите вашите резултати.

Моля, споделете отзивите си за урока в Twitter с @sbmaggarwal и @LinuxHint.

Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...
Безплатни и игри с отворен код за разработване на Linux игри
Тази статия ще обхване списък с безплатни двигатели за игри с отворен код, които могат да се използват за разработване на 2D и 3D игри на Linux. Същес...
Урок Сянка на Tomb Raider за Linux
Shadow of the Tomb Raider е дванадесетото допълнение към поредицата Tomb Raider - франчайз за екшън-приключенска игра, създаден от Eidos Montreal. Игр...