A NumPy és Pandas együttes használata jelentős mértékben elősegíti a statisztikai számítások, adatelemzés és adatkezelés hatékonyságát Pythonban. A következő szakaszokban a két eszközkészlet alapvető funkcióit és azok alkalmazásait vizsgáljuk, bemutatva a különféle típusú adatkereteket és az azokkal végzett műveleteket.

A NumPy könyvtárat széleskörűen használják az adatelemzésben és a tudományos számításokban, mivel gyorsan kezel nagy mennyiségű adatot és biztosítja a szükséges statisztikai számításokat. Az alábbi kód segítségével például egyszerű statisztikai mutatókat érhetünk el egy adott adatmintáról, amely egyenletes eloszlású számokból áll 0 és 1 között.

A percentile() függvény lineáris interpolációt alkalmaz, hogy kiszámolja a mediánt egy páros számú értékekből álló minta esetén. Az min() és max() függvények a legkisebb és legnagyobb értékeket adják vissza a minta alapján, míg az mean() és std() a középértéket és szórást számolják ki.

A kimeneti adatok, például egy egyenletes eloszlású minta esetén, az alábbiak szerint nézhetnek ki:

makefile
Minimum: 0.000
Q1 érték: 0.237 Medián: 0.500 Átlag: 0.495 Szórás: 0.295 Q3 érték: 0.747 Maximum: 0.999

Ez a kód segít a minta alapvető statisztikai elemzésében. A NumPy segítségével gyorsan és hatékonyan végezhetünk ilyen számításokat.

Mi a Pandas?

A Pandas egy másik hasznos Python csomag, amely szorosan integrálható más csomagokkal, mint például a NumPy és a Matplotlib. A Pandas telepítése egyszerű: a parancssorban a pip3 install pandas parancs kiadásával történik. A Pandas egy rendkívül erőteljes adatkezelő eszközkészlet, amely különböző fájlformátumokkal (CSV, XML, HTML) képes dolgozni.

A Pandas egyik alapvető adatstruktúrája a DataFrame, amely egy kétdimenziós táblázatos adatszerkezetet képvisel, és gyakran hasonlít egy Excel táblázatra. A DataFrame lehetővé teszi az adatok könnyű kezelését, elemzését és vizualizációját. Az adatok forrása lehet például fájl, adatbázis, vagy webszolgáltatás. A DataFrame oszlopai különböző típusú adatokat tartalmazhatnak, és a sorok, illetve az oszlopok is címkézhetők, ami nagyban megkönnyíti az adatok kezelését.

A Pandas lehetőséget ad a következő típusú műveletek végrehajtására:

  • Adatelemzés és statisztikák generálása

  • Adattisztítási feladatok végrehajtása

  • Adatok csoportosítása, átalakítása, átrendezése

  • Hiányzó adatok kezelése

  • DataFrame-ek összekapcsolása

A Pandas DataFrame-eken való munkavégzés sokféle feladatot lefedhet, például az adatok olvasását, rendezését, oszlopok típusának ellenőrzését, és statisztikai elemzések készítését.

Lássuk, hogyan hozhatunk létre egy egyszerű DataFrame-et Pandas-ban:

python
import pandas as pd
import numpy as np myarray = np.array([[10, 30, 20], [50, 40, 60], [1000, 2000, 3000]]) rownames = ['apples', 'oranges', 'beer'] colnames = ['January', 'February', 'March'] mydf = pd.DataFrame(myarray, index=rownames, columns=colnames) print(mydf) print(mydf.describe())

Ez a kód egy 3x3-as mátrixot hoz létre, amelyet DataFrame-ként jelenítünk meg. A describe() függvény segítségével statisztikai információkat kaphatunk az adatok minden egyes oszlopáról: átlag, szórás, minimum és maximum értékek, valamint percentilisek (25%, 50%, 75%).

A kimenet az alábbi módon jelenik meg:

yaml
January February March
apples 10 30 20 oranges 50 40 60 beer 1000 2000 3000 January February March count 3.0 3.0 3.0 mean 353.333 690.0 1026.667 std 560.387 1134.504 1709.074 min 10.0 30.0 20.0 25% 30.0 35.0 40.0
50% 50.0 40.0 60.0
75% 525.0 1020.0 1530.0 max 1000.0 2000.0 3000.0

A Pandas lehetőséget ad arra is, hogy numerikus adatokat használjunk a DataFrame-ekben. A következő példában véletlenszerű számokat generálunk a np.random.randn() függvénnyel, és azokat egy DataFrame-ben helyezzük el.

python
import pandas as pd
import numpy as np df1 = pd.DataFrame(np.random.randn(10, 4), columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.random.randn(7, 3), columns=['A', 'B', 'C'])
df3 = df1 + df2

A fenti kódban két különböző DataFrame-et hozunk létre, majd azokat összeadjuk. Az összeadás eredménye NaN (Not a Number) értékekkel lesz kitöltve, ahol a DataFrame-ek különböző számú sorral rendelkeznek.

Pandas a logikai műveletek kezelésére is képes. A következő kódban a két DataFrame-et logikai műveletekkel (és, vagy, nem) kombináljuk:

python
import pandas as pd df1 = pd.DataFrame({'a': [1, 0, 1], 'b': [0, 1, 1]}, dtype=bool) df2 = pd.DataFrame({'a': [0, 1, 1], 'b': [1, 1, 0]}, dtype=bool) print("df1 & df2:") print(df1 & df2) print("df1 | df2:") print(df1 | df2) print("df1 ^ df2:") print(df1 ^ df2)

A logikai műveletek (ÉS, VAGY, KIZÁRÓ VAGY) az alábbi eredményeket adhatják:

mathematica
df1 & df2:
a b 0 False False 1 False True 2 True False df1 | df2: a b 0 True True 1 True True 2 True True df1 ^ df2: a b 0 True True 1 True False 2 False True

Pandas tehát nemcsak a hagyományos számadatok kezelésére alkalmas, hanem logikai műveletek végrehajtására és komplex adatelemzési feladatok ellátására is.

A Pandas és NumPy eszközkészletek segítségével az adatelemzés sokkal hatékonyabbá válik. Fontos megérteni, hogy a különböző típusú adatkeretek (DataFrame, Series, stb.) különböző problémákra kínálnak megoldást, és a megfelelő eszköz kiválasztása kulcsfontosságú a sikeres elemzéshez. Továbbá a Pandas számos beépített funkcióval rendelkezik, amelyek lehetővé teszik az adatok gyors tisztítását, átalakítását és összekapcsolását, így időt takaríthatunk meg, miközben pontos és részletes elemzéseket készí

Hogyan működik a promptmérnökség és a Hugging Face platform?

A Hugging Face nem épít saját nyelvi modelleket, mint az OpenAI vagy a Cohere. Ezzel szemben a Hugging Face egy olyan platform, amely számos nyílt forráskódú nyelvi modellel rendelkezik, amelyeket a felhasználók finomhangolhatnak és alkalmazhatnak. Ez a platform mára a kollaboráció központjává vált, mivel hatalmas választékot kínál különböző nagyméretű nyelvi modellekből (LLM). A Hugging Face legfőbb könyvtárai a datasets, tokenizers és transformers, melyek kulcsfontosságú szerepet játszanak a természetes nyelv feldolgozásában (NLP).

A datasets könyvtár különböző adathalmazokat biztosít, amelyek a természetes nyelv feldolgozásához szükségesek. A tokenizers könyvtár segít a szöveges adatokat numerikus értékekre alakítani, míg a transformers könyvtár talán a legimpozánsabb, mivel hatalmas számú előre betanított BERT-alapú modellt kínál, amelyek különböző NLP feladatok ellátására képesek. Ezek közé tartozik például a szöveg generálása, a kérdés-válasz rendszerek vagy a szövegösszegzés.

A Hugging Face model hub-ja lehetőséget biztosít a modellek online tesztelésére is, és a weboldalon különféle NLP feladatokat próbálhatunk ki, például a BERT-tel végzett maszkolt szókitöltést, az Electrával történő entitásfelismerést vagy a DistilBERT segítségével történő kérdés-válasz megoldásokat.

Az AI21, egy másik jelentős szereplő, hasonlóan API-kon keresztül kínál nagy nyelvi modelleket, de saját alkalmazásokat is fejleszt, mint például a Jurassic-1 modellt. Ez a modell hasonló méretű a GPT-3-hoz, és a vállalat elsősorban az olvasási és írási feladatok támogatására összpontosít.

A legújabb AI-innovációk között szerepel az InflectionAI, amelynek célja, hogy az emberek és a számítógépek közötti interakciót olyan módon alakítsa, ahogyan az emberek egymással kommunikálnak. Az Anthropic, amelyet 2021-ben alapítottak a korábbi OpenAI munkatársai, a legújabb generatív AI megoldásokkal versenyez, például a Claude 2 modellel, amely képes akár 75 000 szó szöveges tartalom összegzésére is.

A promptmérnökség egy új terület, amely az AI alapú rendszerek számára kialakított szöveges promptok megalkotásával foglalkozik. A cél, hogy ezen promptok segíthessék az AI-t a felhasználók igényeinek megfelelő kimenetek előállításában. Ha például egy tájat szeretnénk generálni, az AI rendszer számára egyszerűbb feladat, ha azt mondjuk, hogy „sötét táj” vagy „világos táj”, de ha a feladat a „szép táj” generálása, már nehezebb dolga van a rendszernek. Az ilyen szubjektív vagy absztrakt fogalmak esetén az AI számára egyértelműbb a konkrét, jól meghatározott leírás. A promptmérnökség kezdetben főként a szövegből képet generáló rendszerekhez kapcsolódott, de ma már számos más típusú prompt létezik, például hangalapú vagy vázlat-alapú promptok, amelyek rajzokból képeket generálnak.

A prompt kifejezés egy szöveges utasítást jelöl, amelyet a felhasználók adnak a nagyméretű nyelvi modelleknek (LLM), míg a completion az a válasz, amit az AI ad a prompt alapján. A promptok típusai között szerepelnek a zero-shot, one-shot, few-shot és instruction promptok. A zero-shot prompt egyszerűen egy feladat leírását tartalmazza, míg a one-shot egy példát, és a few-shot több példát is adhat a feladathoz. Az utóbbiak különösen hasznosak, mivel a modell több információt kap, ami pontosabb eredményekhez vezethet. Az instruction promptok speciálisan a modellek finomhangolásához szükségesek, és meghatározzák, hogy a modell milyen módon válaszoljon a felhasználói kérdésekre.

A T0 egy különleges modell, amely még kisebb, mint a GPT-3, de ugyanakkor jobban teljesít különböző nyelvi feladatokon. Ennek a modellnek a sikerét az indokolja, hogy több feladatot is tartalmazó adathalmazon képezték, és ezért képes új feladatokhoz is alkalmazkodni.

A promptok fontos szerepet játszanak az AI rendszerek működésében, hiszen irányítják a generált válaszokat. Az AI válaszai minőségét jelentősen befolyásolja a promptok megfelelő struktúrája. A promptmérnökség tehát kulcsfontosságú tényező a mesterséges intelligenciával történő hatékony kommunikációban, és bár eleinte inkább a képgenerálásra összpontosított, ma már a videógenerálás, hang- és szövegértelmezés területére is kiterjedt.