You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/sr/2-Regression/2-Data/README.md

20 KiB

Изградња модела регресије помоћу Scikit-learn: припрема и визуализација података

Инфографика визуализације података

Инфографика: Dasani Madipalli

Квиз пре предавања

Ова лекција је доступна на R!

Увод

Сада када сте поставили алате који су вам потребни за изградњу модела машинског учења помоћу Scikit-learn, спремни сте да почнете да постављате питања о вашим подацима. Док радите са подацима и примењујете решења машинског учења, веома је важно да знате како да поставите право питање како бисте правилно искористили потенцијале вашег скупа података.

У овој лекцији ћете научити:

  • Како припремити податке за изградњу модела.
  • Како користити Matplotlib за визуализацију података.

Постављање правог питања о вашим подацима

Питање које желите да добијете одговор одредиће који тип алгоритама машинског учења ћете користити. Квалитет одговора који добијете у великој мери зависи од природе ваших података.

Погледајте подаци који су обезбеђени за ову лекцију. Можете отворити овај .csv фајл у VS Code. Брзим прегледом одмах се види да постоје празнине и мешавина стрингова и нумеричких података. Такође постоји необичан стубац под називом 'Package' где су подаци мешавина 'sacks', 'bins' и других вредности. Подаци су, у ствари, прилично неуредни.

ML за почетнике - Како анализирати и очистити скуп података

🎥 Кликните на слику изнад за кратак видео о припреми података за ову лекцију.

У ствари, није баш уобичајено добити скуп података који је потпуно спреман за употребу и креирање модела машинског учења одмах. У овој лекцији ћете научити како да припремите сирове податке користећи стандардне Python библиотеке. Такође ћете научити различите технике за визуализацију података.

Студија случаја: 'тржиште бундева'

У овом директоријуму ћете пронаћи .csv фајл у корену data директоријума под називом US-pumpkins.csv који садржи 1757 линија података о тржишту бундева, сортираних по градовима. Ово су сирови подаци извучени из Specialty Crops Terminal Markets Standard Reports које дистрибуира Министарство пољопривреде Сједињених Америчких Држава.

Припрема података

Ови подаци су у јавном домену. Могу се преузети у многим одвојеним фајловима, по градовима, са веб сајта USDA. Да бисмо избегли превише одвојених фајлова, спојили смо све податке о градовима у један табеларни документ, тако да смо већ припремили податке мало. Сада, хајде да детаљније погледамо податке.

Подаци о бундевама - рани закључци

Шта примећујете о овим подацима? Већ сте видели да постоји мешавина стрингова, бројева, празнина и чудних вредности које треба да разумете.

Које питање можете поставити о овим подацима, користећи технику регресије? Шта кажете на "Предвидите цену бундеве за продају током одређеног месеца". Поново гледајући податке, постоје неке промене које треба да направите да бисте креирали структуру података неопходну за задатак.

Вежба - анализа података о бундевама

Хајде да користимо Pandas, (име значи Python Data Analysis) алат веома користан за обликовање података, да анализирамо и припремимо ове податке о бундевама.

Прво, проверите недостајуће датуме

Прво ћете морати да предузмете кораке да проверите недостајуће датуме:

  1. Конвертујте датуме у формат месеца (ово су амерички датуми, па је формат MM/DD/YYYY).
  2. Извуците месец у нови стубац.

Отворите notebook.ipynb фајл у Visual Studio Code и увезите табеларни документ у нови Pandas dataframe.

  1. Користите функцију head() да видите првих пет редова.

    import pandas as pd
    pumpkins = pd.read_csv('../data/US-pumpkins.csv')
    pumpkins.head()
    

    Коју функцију бисте користили да видите последњих пет редова?

  2. Проверите да ли постоје недостајући подаци у тренутном dataframe-у:

    pumpkins.isnull().sum()
    

    Постоје недостајући подаци, али можда неће бити битни за задатак.

  3. Да бисте свој dataframe учинили лакшим за рад, изаберите само стубце који су вам потребни, користећи функцију loc која из оригиналног dataframe-а извлачи групу редова (прослеђено као први параметар) и стубаца (прослеђено као други параметар). Израз : у случају испод значи "сви редови".

    columns_to_select = ['Package', 'Low Price', 'High Price', 'Date']
    pumpkins = pumpkins.loc[:, columns_to_select]
    

Друго, одредите просечну цену бундеве

Размислите како да одредите просечну цену бундеве у датом месецу. Које стубце бисте изабрали за овај задатак? Савет: биће вам потребна 3 стубца.

Решење: узмите просек стубаца Low Price и High Price да попуните нови стубац Price, и конвертујте стубац Date да приказује само месец. Срећом, према горњој провери, нема недостајућих података за датуме или цене.

  1. Да бисте израчунали просек, додајте следећи код:

    price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2
    
    month = pd.DatetimeIndex(pumpkins['Date']).month
    
    

    Слободно испишите било које податке које желите да проверите користећи print(month).

  2. Сада, копирајте своје конвертоване податке у нови Pandas dataframe:

    new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price})
    

    Исписивање вашег dataframe-а ће вам показати чист, уредан скуп података на којем можете изградити свој нови модел регресије.

Али чекајте! Овде има нешто чудно

Ако погледате стубац Package, бундеве се продају у многим различитим конфигурацијама. Неке се продају у мерама '1 1/9 bushel', неке у '1/2 bushel', неке по бундевама, неке по фунти, а неке у великим кутијама са различитим ширинама.

Бундеве изгледа веома тешко конзистентно измерити

Копајући у оригиналне податке, занимљиво је да све што има Unit of Sale једнако 'EACH' или 'PER BIN' такође има тип Package по инчу, по бин-у, или 'each'. Бундеве изгледа веома тешко конзистентно измерити, па хајде да их филтрирамо тако што ћемо изабрати само бундеве са стрингом 'bushel' у њиховом стубцу Package.

  1. Додајте филтер на врху фајла, испод почетног .csv увоза:

    pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)]
    

    Ако сада испишете податке, можете видети да добијате само око 415 редова података који садрже бундеве по бушелу.

Али чекајте! Постоји још једна ствар коју треба урадити

Да ли сте приметили да се количина бушела разликује по реду? Морате нормализовати цене тако да приказујете цене по бушелу, па урадите мало математике да их стандардизујете.

  1. Додајте ове линије након блока који креира нови dataframe new_pumpkins:

    new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9)
    
    new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2)
    

Према The Spruce Eats, тежина бушела зависи од врсте производа, јер је то мерење запремине. "Бушел парадајза, на пример, треба да тежи 56 фунти... Листови и зелени производи заузимају више простора са мање тежине, па бушел спанаћа тежи само 20 фунти." Све је прилично компликовано! Хајде да се не замарамо конверзијом бушела у фунте, већ да одредимо цену по бушелу. Све ово проучавање бушела бундева, међутим, показује колико је важно разумети природу ваших података!

Сада можете анализирати цене по јединици на основу њихове мере бушела. Ако још једном испишете податке, можете видети како су стандардизовани.

Да ли сте приметили да су бундеве које се продају по пола бушела веома скупе? Можете ли схватити зашто? Савет: мале бундеве су много скупље од великих, вероватно зато што их има много више по бушелу, с обзиром на неискоришћени простор који заузима једна велика шупља бундева за питу.

Стратегије визуализације

Део улоге научника података је да демонстрира квалитет и природу података са којима ради. Да би то урадили, често креирају занимљиве визуализације, или графиконе, дијаграме и табеле, који приказују различите аспекте података. На овај начин могу визуелно приказати односе и празнине које је иначе тешко открити.

ML за почетнике - Како визуализовати податке помоћу Matplotlib

🎥 Кликните на слику изнад за кратак видео о визуализацији података за ову лекцију.

Визуализације такође могу помоћи у одређивању технике машинског учења која је најприкладнија за податке. Распршени графикон који изгледа као да прати линију, на пример, указује на то да су подаци добар кандидат за вежбу линеарне регресије.

Једна библиотека за визуализацију података која добро функционише у Jupyter нотебоок-овима је Matplotlib (коју сте такође видели у претходној лекцији).

Стекните више искуства са визуализацијом података у овим туторијалима.

Вежба - експериментисање са Matplotlib

Покушајте да креирате неке основне графиконе за приказ новог dataframe-а који сте управо креирали. Шта би показао основни графикон линија?

  1. Увезите Matplotlib на врху фајла, испод увоза Pandas:

    import matplotlib.pyplot as plt
    
  2. Поново покрените цео нотебоок да освежите.

  3. На дну нотебоок-а, додајте ћелију за приказ података као кутију:

    price = new_pumpkins.Price
    month = new_pumpkins.Month
    plt.scatter(price, month)
    plt.show()
    

    Распршени графикон који показује однос цене и месеца

    Да ли је ово користан графикон? Да ли вас нешто изненађује?

    Није нарочито користан јер само приказује ваше податке као распон тачака у датом месецу.

Учинимо га корисним

Да би графикони приказивали корисне податке, обично је потребно груписати податке на неки начин. Хајде да покушамо да креирамо графикон где оса y приказује месеце, а подаци показују расподелу података.

  1. Додајте ћелију за креирање груписаног стубичастог графикона:

    new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar')
    plt.ylabel("Pumpkin Price")
    

    Стубичасти графикон који показује однос цене и месеца

    Ово је кориснија визуализација података! Чини се да указује на то да је највиша цена бундева у септембру и октобру. Да ли то одговара вашим очекивањима? Зашто или зашто не?


🚀Изазов

Истражите различите типове визуализација које Matplotlib нуди. Који типови су најприкладнији за проблеме регресије?

Квиз после предавања

Преглед и самостално учење

Погледајте многе начине за визуализацију података. Направите списак различитих библиотека које су доступне и забележите које су најбоље за одређене типове задатака, на пример 2D визуализације у односу на 3D визуализације. Шта откривате?

Задатак

Истраживање визуализације


Одрицање од одговорности:
Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције Co-op Translator. Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не сносимо одговорност за било каква погрешна тумачења или неспоразуме који могу произаћи из коришћења овог превода.