Единици
1. Вовед во вештачката интелигенција во науката за податоци и аналитика: Работен тек, улоги, граници, валидација и етика 2. Собирање податоци и разбирање на изворите: шема, земање примероци, квалитет и свесност за истекување 3. Чистење и претходна обработка на податоци: Недостасува вредност, оддалеченост и конверзија на типови 4. Истражувачка анализа на податоци (EDA): дистрибуции, врски и првични сознанија 5. Инженерство на карактеристики: генерирање варијанти, кодирање, скалирање и избегнување истекување 6. Изградба на модел: дефиниција на проблем, избор на алгоритам и поделба на обука/тест 7. Евалуација на моделот: метрика, вкрстена валидација и екстремно учење 8. Визуелизација и раскажување приказни: точна графика, искрена графика 9. Генерирање кодови: Анализа со помош на AI со Python (панди) и SQL 10. Протекување податоци и репродуктивност: Тивки катастрофи и дисциплина 11. Фондација MLOps, етика, приватност и одговорна анализа
Единица 9 / 11

Генерирање кодови: Анализа со помош на AI со Python (панди) и SQL

Добивки:

  • Способност да се земе робустен SQL код и панди и да се чита и да се потврди линија по ред со давање јасна шема и цел на вештачката интелигенција
  • Способност за фаќање тивки грешки како што се броење на редови, функција за прилагодување и пропусната моќ по спојување/ПРИКЛУЧУВАЊЕ
  • Способност да се реши проблемот при отстранување грешки без да се замолчи и да се избегне извршување на кодот без да се тестира во производствената средина

Науката за податоци има два примарни јазици: SQL (Structured Query Language — јазик за барање податоци од бази на податоци) и Python (конкретно, библиотеката за панди - стандардна алатка за програмска манипулација со табелите). Во оваа единица, ќе научиме да ја користиме вештачката интелигенција како партнер за кодови: да добиваме солиден SQL код и од пандите со вистинските прашања, да го читаме и потврдуваме тој код, да го дебагираме и никогаш да не го извршуваме слепо. AI пишува повторувачки код во секунди наместо во минути; Но, ваша задача е да бидете сигурни дека кодот што го произведува ја обработува точната колона со правилна логика. Работниот код не значи правилен код.

Зошто производството на код со вештачка интелигенција е моќно, но ризично

Вештачката интелигенција обезбедува три големи придобивки во генерирањето кодови: брзина (запишува операција од 30 линии groupby-pivot во секунди), потсетник (те потсетува на функцијата на панди што сте ја заборавиле) и предавање (го објаснува кодот ред по ред). Но, носи три ризици: тивка логичка грешка (кодот што ја сумира погрешната колона работи без грешки), вградена функција (предлага метод што не постои) и стапица на принос (код што работи на мали податоци, но паѓа на 10 милиони редови). Значи, златното правило: прочитајте го кодот на вештачката интелигенција како да сте го напишале сами. Не ја води линијата што не ја разбираш.

SQL: обработува податоци на изворот

SQL ви овозможува да преземете податоци од базата на податоци и да ги обработувате таму; Можете да сумирате милиони линии без да ги повлечете во Python. Основни градежни блокови: SELECT (кои колони), WHERE (кои редови), GROUP BY (групирај и резимирај), JOIN (приклучи се на табели), HAVING (филтер по групата). Вештачката интелигенција е многу корисна за пишување сложени JOIN и функции на прозорецот, но не заборавајте да проверите две работи: дали JOIN е преку правилното копче (погрешниот клуч ги дуплира редовите) и дали логиката на филтерот е точна (особено NULL однесување и опсег на датуми).

Внимание: Не извршувајте SQL барање генерирано со вештачка интелигенција директно на базата на податоци за производство. Прво тестирајте со мала копија или LIMIT. Никогаш не извршувајте барање за АЖУРИРАЊЕ/БРИШЕЊЕ без да го потврдите условот WHERE; Погрешен WHERE може да ја избрише целата табела.

Пајтон/панди: флексибилна анализа

пандите е стандарден начин за манипулирање со табелите (DataFrame) во Python. Најефикасната употреба на вештачката интелигенција е да и се даде јасна шема и цел. Најчесто користени операции: филтер, groupby, merge, pivot_table, примени. ВИ ги пишува овие брзо; Она што сакате да го проверите е логиката: дали групирањето е во правилната колона, дали спојувањето неочекувано го промени бројот на редови (секогаш проверувајте го бројот на редови по спојувањето), дали операциите на синџирот го менуваат оригиналот.

трансакција

SQL

панди

контролен пункт

Филтрирање

КАДЕ

df[df.x > 5]

NULL/NaN однесување

групирање

ГРУПА ПО

df.groupby()

Дали е тоа вистинската колона?

спојуваат

ПРИКЛУЧЕТЕ СЕ

df.merge()

Промена на бројот на редови

Резиме

AVG(), SUM()

.mean(), .sum()

Која колона беше собрана

Подреди по

НАРАЧАЈ ПО

.sort_values()

Насока (нагорно/спуштање)

дедупликација

РАЗЛИЧНИ

.drop_duplicates()

Во кои колони?

Дебагирање: со вештачка интелигенција

Кога кодот не успее, вештачката интелигенција е одличен партнер за дебагирање. Дајте му ја целосната порака за грешка и соодветниот фрагмент од код. Но, пазете се од две стапици. Прво, вештачката интелигенција може да предложи решение што ја „замолчува“ грешката (на пример, криење предупредувања) - ова не ја поправа грешката, туку ја крие. Второ, вештачката интелигенција понекогаш тивко менува друго однесување додека „решава“ проблем. Правило: разберете ја поправката, решите да не го исклучите звукот и проверете дали излезот е сè уште точен по поправката.

Сакате код кој може да се толкува и да се одржува

Кога купувате код од вештачка интелигенција, побарајте код што може да се чита и одржува, а не само код што „работи“. Кога вие или некој колега ќе го отворите тој код неколку месеци подоцна, тој треба да може да разбере што прави. За да го направите ова, создадете навика вештачката интелигенција да вклучува три работи: значајни имиња на променливи (orders_temiz, не df2), кратки линии за коментари на критичните чекори (објаснување зошто, а не што се прави) и именувана константа наместо магичен број (ACCEPT_ESIGI = 0,85 наместо 0,85 закопана во кодот). Исто така, избегнувајте долги синџири со една линија (поврзување на пет дејства во една линија); овие го отежнуваат дебагирањето. Стандардно, вештачката интелигенција често произведува концизен и „паметен“ код; Ако јасно кажете „пишува читливо, толкува, одржувано“, ќе добиете многу поодржлив излез. Ова е, исто така, основата на репродуктивноста (Единица 10): кодот што не е разбран е код што не може безбедно да се изврши повторно.

три мини футроли

Случај 1 - ПРИКЛУЧУВАЈ репликација. Аналитичарот ги комбинира нарачките со табелата на производи и откри дека вкупниот промет е 3 пати поголем. Причина: секој производ имаше повеќе редови (различни бои) во табелата со производи; ПРИДРУЖЕТЕ се дупликат на секоја нарачка. Кодот на вештачката интелигенција „работеше“, но бројот на линии скокна од 240 илјади на 690 илјади. Лекција: секогаш проверувајте го бројот на линии по спојување/ПРИКЛУЧУВАЊЕ.

Случај 2 — Функција за фитинг. Тој предложи AI df.groupby('x').summarize() на практикант; Не постои таков метод кај пандите (постои .agg()). Шифрата не функционираше, практикантот беше изгубен 20 минути. Лекција: потврдете ја функцијата што не ја препознавате од документот; ВИ може да состави методи.

Случај 3 - Колапс на приносот. Еден код ја бараше базата на податоци при примена за секој ред; Трчаше на 5.000 линии, траеше 9 часа на 4 милиони линии и запре. Кога АИ предложи векторизирано (серија) решение, времето беше намалено на 40 секунди. Лекција: кодот што работи на мали податоци може да се сруши на големи податоци; Размислете за ефикасноста.

Четири шаблони за копирање

1) Барање SQL со шема:

Вашата улога: SQL асистент (PostgreSQL). Табели: - нарачки (ид, клиент_ид, временски печат на датум, нумерички износ) - клиенти (ид, градски текст) Задача: Добијте го вкупниот промет и бројот на нарачки по град во 2024 година, подредени по промет во опаѓачки редослед. Објаснете како се справувате со NULL градови. Прво ќе го тестирам барањето со LIMIT; АЖУРИРАЈ/ИЗБРИШИ генерација.

2) процес на панди со контролен пункт:

Имам DataFrames df (нарачки) и df_customers (клиенти). Пресметајте просечен износ по град. ВАЖНО: отпечатете го бројот на редови пред и по спојувањето за да видам дали има дуплирање. Објаснете во која колона сте споиле и зошто избравте внатрешно/лево.

3) Објаснување и верификација на кодот:

Објаснете го следниов код на панди линија по ред: што прави секоја линија, какви претпоставки прави, во кои случаи може да даде погрешни резултати? Дозволете ми да знам дали сум користел функција за епирање. Код: [залепи]

4) Дебагирање:

Овој код ја дава оваа грешка. Целосна порака за грешка: [залепи]. Код: [паста]. Објаснете ја ROOT причината за грешката и поправете ја. Поправете го со тоа што всушност ќе го решите проблемот, а не со замолчување на предупредувањето. Исто така, наведете дали поправката го променила излезот.

Слаб промпт / Силен промпт

Слаба навестување:

Напиши барање што ми дава продажба по град.

Имињата на табелите, колоните, типот на базата на податоци, однесувањето NULL се нејасни. Вештачката интелигенција е вообичаена, веројатно ќе произведе барање што не одговара на вашата табела.

Моќен потсетник:

Вашата улога: SQL асистент (MySQL 8). Табела: продажба (ID, градски варчар, износ децимален, датум датум). Задача: Добијте го вкупниот и просечниот износ, бројот на нарачки по град за 2024 година; Сортирање се намалува по вкупен износ; Прикажи само градови со повеќе од 100 нарачки (ИМААТ). NULL исклучува град. Објаснете го барањето; Ќе тестирам со LIMIT.

Овде базата на податоци, шема, филтер, сортирање и NULL правило се очигледни.

Вообичаени грешки

  • Вклучување на кодот без да го прочитате. Работниот код не е точен код; Кодот што манипулира со погрешна колона исто така работи без грешки.
  • Не се проверува бројот на редови по спојување/ПРИКЛУЧУВАЊЕ. Погрешниот клуч тивко ги дуплира редовите и ги надува збирките.
  • Не се потврдува функцијата на монтирање. ВИ може да предложи методи кои не постојат; Потврдете од документот дека не го препознавате.
  • Не размислувајќи за ефикасност. применува/јамка работи на паѓања на мали податоци на милиони редови; векторизираат.
  • Работи директно на базата на податоци за производство. Особено извршувањето на АЖУРИРАЊЕ/БРИШЕЊЕ без WHERE или тестирање е катастрофално.
Совет: стекнете навика да додавате „линија за валидација“ на секое парче код што го добивате од вештачката интелигенција: број на линии пред и по обработката, неколку примероци линии и критичен збир рачно. Овие три проверки ги фаќаат повеќето тивки логички грешки.

Сумирано

AI е моќен партнер кој брзо произведува SQL и код за панди, но не е слеп авторитет. Јасно дајте му ја шемата и целта; Прочитајте го кодот што го произведува како да сте го напишале сами; Проверете го бројот на редови, функциите на фитинг и пропусната моќ по спојувањето/ПРИКЛУЧУВАЊЕТО; Не го стартувајте без да го тестирате на базата на податоци за производство. Кога дебагирате, имајте за цел да го решите проблемот, а не да го замолчите. Кодот што работи не е точниот код; Само вие можете да ја гарантирате точноста.

Задача за апликација

Изберете прашање за анализа (на пр. „месечен обрт по канал“) и побарајте код од вештачката интелигенција и со SQL и со панди. Прочитајте ги двата кодови ред по ред, проверете го бројот на линии по спојувањето/ПРИКЛУЧУВАЊЕТО и рачно потврдете барем една критична сума. Споредете дали двата кодови даваат ист резултат; Ако е различно, дознајте зошто.

листа за проверка

  • [ ] Дали јасно ѝ ја дадов табелата/шемата и целта на вештачката интелигенција?
  • [ ] Дали го прочитав и разбрав кодот што го произведе ред по ред?
  • [ ] Дали го проверив бројот на линии по спојување/ПРИКЛУЧУВАЊЕ?
  • [ ] Дали ги потврдив функциите што не ги препознавам од документацијата?
  • [ ] Дали прво го тестирав кодот на безбедни/мали податоци, а не во производствената средина?