Scikit learn - машинно обучение с помощта на Python



Блогът Scikit learn ще ви запознае с машинното обучение в python. Включва случай на употреба, при който ще приложим логистична регресия, използвайки scikit learn.

В този блог ще обсъждаме Scikit learn в python. Преди да говорим за Scikit learn, трябва да разберем концепцията за машинно обучениеи трябва да знае как да използва . С машинното обучение не е нужно да събирате статистика ръчно. Просто се нуждаете от алгоритъм и машината ще направи всичко останало вместо вас! Не е ли вълнуващо? Scikit learn е една от атракциите, където можем да внедрим машинно обучение с помощта на Python. Тое безплатна библиотека за машинно обучение, която съдържа прости и ефективни инструменти за анализ на данни и за копаене.Ще ви преведа през следните теми, които ще служат като основи за предстоящите блогове:

Какво е машинно обучение?

Машинното обучение е вид изкуствен интелект, който позволява на софтуерните приложения да се учат от данните и да стават по-точни при прогнозиране на резултатите без човешка намеса. Но как става това? За това машината трябва да бъде обучена на някои данни и въз основа на това тя ще открие модел за създаване на модел.Този процес на получаване на знания от данните и предоставяне на мощни прозрения е свързан с машинното обучение. Вижте изображението по-долу, за да получите по-добро разбиране за работата му:





MachineLearning - Scikit Learn - Edureka

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



След това има три вида машинно обучение:

    • Контролирано обучение : Това е процес на учене на алгоритъм от набора от данни за обучение. Контролираното обучение е мястото, където генерирате функция за картографиране между входната променлива (X) и изходната променлива (Y) и използвате алгоритъм за генериране на функция между тях. Известно е също като прогнозно моделиране, което се отнася до процес на изготвяне на прогнози с помощта на данните. Някои от алгоритмите включват линейна регресия, логистична регресия, дърво на решенията, произволна гора и класификатор на наивните байеси. По-нататък ще обсъждаме случай на използване на контролирано обучение, където обучаваме машината, използвайки логистична регресия .
    • Учене без надзор : Това е процес, при който моделът се обучава с помощта на информация, която не е етикетирана. Този процес може да се използва за групиране на входните данни в класове въз основа на техните статистически свойства. Учението без надзор се нарича още cанализ на блясък, което означава групиране на обекти въз основа на информацията, намерена в данните, описващи обектите или тяхната връзка. Целта е обектите в една група да бъдат сходни помежду си, но различни от обектите в друга група. Някои от алгоритмите включват групиране на K-средства, йерархично групиране и т.н.
    • Укрепващо обучение: Подсилващото обучение е учене чрез взаимодействие с пространство или среда.Агентът на RL се учи от последиците от своите действия, а не от изрично обучение. Той избира действията си въз основа на предишния си опит (експлоатация), а също и чрез нови избори (проучване).

Преглед на Scikit Learn

Scikit learn е библиотека, използвана за извършване на машинно обучение в Python. Scikit learn е библиотека с отворен код, която е лицензирана под BSD и може да се използва повторно в различен контекст, насърчавайки академичната и търговската употреба. Той предоставя набор от контролирани и ненаблюдавани алгоритми за обучение в Python.Scikit learn се състои от популярни алгоритми и библиотеки. Освен това, той съдържа и следните пакети:



каква е структурата на данните в java
  • NumPy
  • Matplotlib
  • SciPy (научен питон)

За да приложим Scikit learn, първо трябва да импортираме горните пакети. Ако не сте запознати с тези библиотеки, можете да разгледате предишните ми блогове на и . Можете да изтеглите тези два пакета с помощта на командния ред или ако използвате PY.Charm, можете директно да го инсталирате, като отидете на настройката си по същия начин, както го правите за други пакети.

След това, по подобен начин, трябва да импортирате Sklearn.Scikit learn се основава на SciPy (Scientific Python), който трябва да бъде инсталиран, преди да можете да използвате Scikit-learn. Можете да се позовете на това уебсайт за да изтеглите същото. Освен това инсталирайте Scipy и пакет от колела, ако не присъства, можете да въведете командата по-долу:

pip инсталирайте

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

След импортирането на горните библиотеки, нека разровим по-дълбоко и разберем как точно се използва Scikit learn.

Scikit learn се предлага с примерни набори от данни, като например Ирис и цифри . Можете да импортирате наборите от данни и да играете с тях. След това трябва да импортирате SVM, което е съкращение от Support Vector Machine. SVM е форма на машинно обучение, която се използва за анализ на данни.

Нека вземем пример, където ще вземем цифри набор от данни и той ще ни категоризира числата, например - 0 1 2 3 4 5 6 7 8 9. Вижте кода по-долу:

импортирайте matplotlib.pyplot като plt от sklearn импортирайте набори от данни от sklearn импортирайте svm digits = datasets.load_digits () print (digits.data)

Изход -

[[0. 0. 5. ..., 0. 0. 0.] [0. 0. 0. ..., 10. 0. 0.] [0. 0. 0. ..., 16. 9. 0.] ..., [0. 0. 1. ..., 6. 0. 0.] [0. 0. 2. ..., 12. 0. 0.] [0. 0. 10. ..., 12. 1. 0.]]]

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

импортиране matplotlib.pyplot като plt от sklearn импортиране на масиви от sklearn импортиране svm digits = datasets.load_digits () print (digits.target) print (digits.images [0])

Изход -

[0 1 2 ..., 8 9 8] // цел на данните [[0. 0. 5. 13. 9. 1. 0. 0.] // изображение на данните [0. 0. 13. 15. 10. 15. 5. 0.] [0. 3. 15. 2. 0. 11. 8. 0.] [0. 4. 12. 0. 0. 8. 8. 0.] [0. 5. 8. 0. 0. 9. 8. 0.] [0. 4. 11. 0. 1. 12. 7. 0.] [0. 2. 14. 5. 10. 12. 0. 0. ] [0. 0. 6. 13. 10. 0. 0. 0.]]

Както можете да видите по-горе, се отпечатват целевите цифри и изображението на цифрите. цифри.цел дава основната истина за цифра набор от данни, това е числото, съответстващо на всяко цифрово изображение. След това данните винаги са двуизмерен масив, който има форма (n_samples, n_features), въпреки че оригиналните данни може да са имали различна форма. Но в случая с цифрите, всяка оригинална проба е изображение на форма (8,8) и може да бъде достъпна с помощта цифри . образ.

c ++ виртуална функция = 0

Учене и прогнозиране

След това, в Scikit learn, използвахме набор от данни (извадка от 10 възможни класа, цифри от нула до девет) и трябва да предскажем цифрите, когато е дадено изображение. За да предскажем класа, ни трябва оценител което помага да се предскажат класовете, към които принадлежат невидимите проби. В Scikit learn имаме оценител за класификация, който е обект на python, който реализира методите годни (x, y) и предсказване (T). Нека разгледаме примера по-долу:

импортирайте matplotlib.pyplot като plt от sklearn импортирайте набори от данни от sklearn импортирайте svm digits = datasets.load_digits () // набор от данни clf = svm.SVC (гама = 0.001, C = 100) print (len (digits.data)) x, y = digits.data [: - 1], digits.target [: - 1] // обучаваме данните clf.fit (x, y) print ('Prediction:', clf.predict (digits.data [-1]) ) // предсказване на данните plt.imshow (digits.images [-1], cmap = plt.cm.gray_r, интерполация = 'най-близко') plt.show ()

Изход -

1796
Прогноза: [8]


В горния пример първо намерихме дължината и заредихме 1796 примера. След това използвахме тези данни като данни за обучение, където трябва да тестваме последния елемент и първия отрицателен елемент. Също така трябва да проверим дали машината е предсказала правилните данни или не. За това бяхме използвали Matplotlib, където показахме изображението на цифрите.Така че в заключение, имате данни с цифри, имате целта, поставяте я и я предсказвате и следователно сте готови! Наистина е бързо и лесно, нали?

Можете също да визуализирате целевите етикети с изображение, просто вижте кода по-долу:

импортирайте matplotlib.pyplot като plt от sklearn импортирайте набори от данни от sklearn импортирайте svm digits = datasets.load_digits () # Присъединете се към изображенията и целевите етикети в списък images_and_labels = list (zip (digits.images, digits.target)) # за всеки елемент в списъка за индекс, (изображение, етикет) в enumerate (images_and_labels [: 8]): # инициализира подпартинг от 2X4 на i + 1-та позиция plt.subplot (2, 4, index + 1) # Показване на изображения във всички подпартизи plt.imshow (изображение, cmap = plt.cm.gray_r, interpolation = 'най-близко') # Добавете заглавие към всяка подпартия plt.title ('Обучение:' + str (етикет)) # Показване на plt на парцела покажи ()

Изход-


Както можете да видите в горния код, ние използвахме функцията ‘zip’, за да присъединим изображенията и целевите етикети в списък и след това да го запишем в променлива, например images_and_labels. След това сме индексирали първите осем елемента в мрежа от 2 по 4 на всяка позиция. След това току-що показахме изображенията с помощта на Matplotlib и добавихме заглавието като „обучение“.

Случай за употреба - Прогнозиране с помощта на логистична регресия

Декларация за проблема - Автомобилна компания пусна нов SUV на пазара. Използвайки предишните данни за продажбите на техните SUV, те искат да предскажат категорията на хората, които биха могли да се интересуват от закупуването на това.

За това нека видим набор от данни, където имам UserId, пол, възраст, прогнозна заплата и закупен като колони. Това е само примерен набор от данни, от който можете да изтеглите целия набор от данни тук . След като импортираме данните в pyCharm, това изглежда донякъде така.

Сега нека разберем тези данни. Както можете да видите в горния набор от данни, имаме категории като идентификатор, пол, възраст и т.н. Сега въз основа на тези категории ще обучим нашата машина и ще предскажем не. на покупките. И така, имаме независими променливи като „възраст“, ​​„очаквана заплата“ и зависима променлива като „закупен“. Сега ще приложим контролирано обучение, т.е. алгоритъм за логистична регресия за да разберете броя на покупките, като използвате съществуващите данни.

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

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

  • Да и не
  • Вярно и невярно
  • Високо и ниско
  • Подаване и неуспех

Сега, за да започнем с кода, първо ще импортираме тези библиотеки - Numpy, Matplotlib и Pandas. Доста е лесно да импортирате панди в Pycharm, като следвате стъпките по-долу:

Настройки -> Добавяне на пакет -> Панди -> Инсталиране

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

създаване на масив от обекти
набор от данни = pd.read_csv ('Social_Network_Ads.csv') X = набор от данни.iloc [:, [2, 3]]. стойности y = набор от данни.iloc [:, 4] .values ​​print (X) print (y)

Следващата стъпка ще бъде обучение и тестване на данните. Обща стратегия е да се вземат всички етикетирани данни и да се разделят на подгрупи за обучение и тестване, което обикновено се приема със съотношение 70-80% за подмножество за обучение и 20-30% за подмножество за тестване. Следователно създадохме създаване на комплекти за обучение и тестване, използвайки cross_validation.

от sklearn.cross_validation импорт train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25, random_state = 0)

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

от sklearn.preprocessing import StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)

Сега ще създадем нашия модел за логистична регресия.

от sklearn.linear_model импортиране LogisticRegression классификатор = LogisticRegression (random_state = 0) Classifier.fit (X_train, y_train)

Можем да използваме това и да предскажем резултатите от нашия тестов набор.

y_pred = класификатор.predict (X_test)

Сега можем да проверим колко прогнози са били точни и колко не са били използвани объркваща матрица . Нека определим Y като положителни случаи и N като отрицателни случаи. Четирите резултата са формулирани в матрица за объркване 2 * 2, както е представено по-долу:

от sklearn.metrics внос confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm)

Изход-

[[65 3] [8 24]]

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

= TP + TN / FN + FP

= 65 + 24/65 +3+ 8 + 24

= 89%

Направихме това ръчно! Сега нека да видим как машината изчислява същото за нас, за това имаме вградена функция ‘tocnost_score’, която изчислява точността и я отпечатва, както е показано по-долу:

от sklearn.metrics импортиране на точността_резултат // импортиране на функцията точността_резултат печат (точността_оценка (y_test, y_pred) * 100) // отпечатва точността

Изход -

89,0

Ура! По този начин успешно внедрихме логистична регресия, използвайки Scikit learn с точност от 89%.

Натисни тук за да получите пълния пълен източник на горната прогноза с помощта на Python Scikit learn library.

С това покрихме само един от многото популярни алгоритми, които python може да предложи.Покрихме всички основи на Scikit научи библиотеката,така че можете да започнете да практикувате сега. Колкото повече практикувате, толкова повече ще научите. Останете на линия за по-нататъшни блогове с уроци по python!

Имате въпрос към нас? Моля, споменете го в раздела за коментари в този блог „Scikit learn“ и ние ще се свържем с вас възможно най-скоро. За да получите задълбочени познания за Python заедно с различните му приложения, можете за онлайн обучение на живо с 24/7 поддръжка и доживотен достъп.