Този урок отговаря на всички следните въпроси:

  1. Кои са липсващите стойности?
  2. Кога възниква проблемът с липсващите стойности?
  3. Защо е важно да се обработват липсващи стойности?
  4. Как се обработват липсващите числови стойности?
  5. Как се обработват категоричните липсващи стойности?

Досега имаме ясна интуиция как да импортираме всички необходими библиотеки и как да импортираме съответния набор от данни и отделни характеристики и целеви променливи.

Каква може да е следващата стъпка?

Имаме нашия набор от данни. Данните структурирани ли са? Нашият набор от данни точен и пълен ли е?

Ами ако нещо не е последователно или някои цифри липсват?

Е, в този случай прогнозите на нашия ML модел може да са неправилни.

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

Е, с посочения проблем идва следващата ни мярка за предварителна обработка:

Стъпка 3] Обработка на липсващи стойности

Защо възниква този проблем?

Данните, които получаваме, рядко са хомогенни.

Има много възможности набор от данни да се окаже с липсващи стойности.

Например къща с една спалня няма да включва размера на втора спалня. И по този начин данните от втората спалня ще липсват, създавайки липсваща стойност в този набор от данни.

Защо обработката на липсващи стойности е важна?

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

Повечето библиотеки за машинно обучение дават грешка, ако се опитате да изградите модел, използвайки данни с липсващи стойности.

Така че ще трябва да изберете една от стратегиите за обработка на липсващи стойности на данни.

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

Как можем да направим това?

Има два начина за обработка на липсващи стойности в набор от данни.

Забележка: В python стойностите NULL са представени като NaN. Така че не се бъркайте между тези две, те са еднакви!

1] Изтриване на определен ред

При този метод ние премахваме целия ред с липсваща стойност или определена колона с повече от 75% липсващи стойности.

Но какво ще стане, ако изтрием важна информация, която може да накара нашия ML модел да работи с по-голяма точност?

Е, ние не искаме това.

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

2] Препоръчителна опция: Импутиране

Този метод е полезен за функции с цифрови данни като възраст, заплата, година и т.н.

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

Този метод може да добави вариация към набора от данни, като ефективно отрича загубата на данни.

Този метод може да не е точен. Въпреки това дава по-добри резултати от изпускането на целия ред или колона.

Нека преминем през урок за обработка на липсващи стойности по метода на импутацията.

За целта първо трябва да импортираме известна ML библиотека, наречена sci-kit-learn.

Ще използваме класа Imputer от тази библиотека, за да обработваме липсващи данни.

Нека започнем с помощта на примерен набор от данни, показан по-долу.

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

Само че този път трябва да импортираме класа Imputer на библиотеката sci-kit-learn, за да обработваме липсващи данни.

Горният фрагмент показва как се импортира sci-kit-learn.

Сега трябва да заменим липсващите редове със средната стойност на всички записи в тази колона. Кодът по-долу демонстрира как се обработват липсващите стойности.

Импютерът приема следните параметри:

  1. Липсващи_стойности: Можем да му дадем цяло число или „NaN“, за да намери липсващите стойности.
  2. Стратегия: Стратегията е методът, който сме използвали за заместване на липсващи стойности. В горния пример сме заменили липсващите стойности със стратегия: „средно“.
  3. Ос:Можем или да зададем ос на 0, или на 1, 0 за приписване заедно с колони и 1 за приписване по редове.

Импутирането е просто процесът на заместване на липсващите стойности на нашия набор от данни.

Можем да направим това, като дефинираме нашата персонализирана функция, или можем просто да извършим импутация, като използваме класа SimpleImputer, предоставен от sklearn, както е показано по-горе.

Средно, медиано базирано импутиране помага при обработката на липсващи числови стойности. Но какво ще стане, ако някои от категоричните стойности липсват? Как можем да заменим категорични липсващи стойности?

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

За да се замени липсващата категорична стойност на данните, често използваните методи са:

  1. Най-често срещаният клас метод

Липсващата стойност се заменя от функцията value_counts на Pandas, както е показано по-долу във фрагмента.

2. Изрично заместване на липсващите данни с „Неизвестно“.

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

В този случай най-често срещаното приписване на клас ще доведе до загуба на тази информация. Вместо това можем просто да заменим липсващите категорични стойности с „Липсващи“ или „Неизвестни“.

Нека разгледаме същия набор от данни и да разработим този механизъм. Кодът за заместване на липсващите стойности е даден във фрагмент.

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

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

(Източник на изображението: Интернет)