Inleiding
Language-Integrated Data Analysis (LIDA) is een krachtige tool die is ontworpen om het maken van visualisaties te automatiseren, waardoor het genereren van grammatica-agnostische visualisaties en infographics mogelijk wordt. LIDA pakt verschillende kritieke taken aan: het interpreteren van datasemantiek, het identificeren van geschikte visualisatiedoelen en het genereren van gedetailleerde visualisatiespecificaties. LIDA conceptualiseert visualisatiegeneratie als een proces met meerdere stappen en gebruikt goed gestructureerde pijplijnen, die grote taalmodellen (LLM's) en beeldgeneratiemodellen (IGM's).
Overzicht
- LIDA automatiseert datavisualisatie door grote taalmodellen (LLM's) en beeldgeneratiemodellen (IGM's) te combineren in een meerfasenproces, waardoor het eenvoudiger wordt om grammatica-agnostische visualisaties te maken.
- Belangrijkste onderdelen van LIDA omvatten hulpmiddelen voor het samenvatten van gegevens, het identificeren van doelen, het genereren van visualisaties en het maken van infographics, waardoor uitgebreide workflows voor gegevensanalyse mogelijk worden.
- Het platform ondersteunt diverse programmeertalen zoals Python, R en C++, waardoor gebruikers visualisaties in verschillende formaten kunnen maken zonder dat ze gebonden zijn aan een specifieke grammatica.
- LIDA beschikt over een hybride interface, waarbij directe manipulatie wordt gecombineerd met opdrachten in natuurlijke taal om datavisualisatie toegankelijk te maken voor zowel technische als niet-technische gebruikers.
- Geavanceerde mogelijkheden zoals visualisatiereparatie, aanbevelingen en uitleg zijn ingebouwd, verbeteren de datageletterdheid en stellen gebruikers in staat visuele uitkomsten te verfijnen door middel van geautomatiseerde evaluatie.
- LIDA wil datagestuurde inzichten democratiseren, waarmee gebruikers complexe datasets kunnen omzetten in zinvolle visualisaties voor betere besluitvorming.
Inhoudsopgave
Belangrijkste kenmerken van LIDA
- Grammatica-agnostische visualisaties: Of u nu Python, R of C++ gebruikt, LIDA stelt u in staat om visuele output te produceren zonder vast te zitten aan een specifieke programmeertaal. Deze flexibiliteit maakt het makkelijker voor gebruikers met verschillende programmeerachtergronden.
- Meertraps generatiepijplijn: Lida orkestreert naadloos een workflow die verloopt van het samenvatten van gegevens tot het maken van visualisaties, waardoor gebruikers gemakkelijker door complexe datasets kunnen navigeren.
- Hybride gebruikersinterface: De optie voor directe manipulatie en meertalige interfaces in natuurlijke taal maakt LIDA toegankelijk voor een breder publiek, van datawetenschappers tot bedrijfsanalisten. Gebruikers kunnen interacteren via opdrachten in natuurlijke taal, waardoor datavisualisatie intuïtief en eenvoudig wordt.
Taalgeïntegreerde data-analyse (LIDA)-architectuur
- samenvatting: Converteer datasets naar bondige beschrijvingen in natuurlijke taal met informatie zoals alle kolomnamen, distributie, enz.
- DOEL-ontdekker:Identificeert potentiële visualisatie- of analytische doelen op basis van de dataset. Het genereert een 'n' aantal doelen, waarbij n een parameter is die door de gebruiker is gekozen.
- Viz-generator: Genereer automatisch code om visualisaties te maken op basis van de context van de dataset en de opgegeven doelen.
- Infograaf: Creëer, evalueer, verfijn en voer visualisatiecode uit om volledig vormgegeven specificaties te produceren.
Kenmerken van LIDA
Kenmerk | Beschrijving |
Samenvatting van gegevens | LIDA comprimeert grote datasets tot compacte samenvattingen in natuurlijke taal, die als basis dienen voor toekomstige bewerkingen. |
Geautomatiseerde data-exploratie | LIDA biedt een volledig geautomatiseerde modus voor het genereren van zinvolle visualisatiedoelen op basis van onbekende datasets. |
Grammatica-agnostische visualisaties | LIDA genereert visualisaties in elke grammatica (Altair, Matplotlib, Seaborn in Python, of R, C++, etc.). |
Infographics Generatie | Zet gegevens om in gestileerde, aantrekkelijke infographics met behulp van beeldgeneratiemodellen voor gepersonaliseerde verhalen. |
VizOps – Bewerkingen op visualisaties | Gedetailleerde bewerkingen op gegenereerde visualisaties, verbetering van toegankelijkheid, datageletterdheid en foutopsporing. |
Visualisatie Uitleg | Biedt diepgaande beschrijvingen van visualisatiecode, wat bijdraagt aan toegankelijkheid, educatie en betekenisgeving. |
Self-Evaluatie | LLM's worden gebruikt om multidimensionale evaluatiescores voor visualisaties te genereren op basis van best practices. |
Visualisatie Reparatie | Verbetert of repareert visualisaties automatisch met behulp van zelfevaluatie of door de gebruiker verstrekte feedback. |
Visualisatie-aanbevelingen | Geeft aanbevelingen voor aanvullende visualisaties op basis van context of bestaande visualisaties ter vergelijking of om perspectieven toe te voegen. |
Installaties LIDA
Om LIDA te gebruiken, moet u LIDA installeren met de volgende opdracht:
pip install -U lida
We gebruiken llmx om LLM-tekstgeneratoren te maken met ondersteuning voor meerdere LLM-aanbieders.
!pip install llmx
LIDA in actie: voorspelling van hartziekten
Om de aanwezigheid van hartziekten te voorspellen, proberen we de Heart Attack Analysis & Prediction Dataset te analyseren, die 14 klinische kenmerken bevat, zoals leeftijd, cholesterol en type pijn op de borst. In deze handleiding werken we met heart.csv: Dataset voor analyse en voorspelling van hartaanvallen.
LIDA WebUI instellen
Om LIDA's webui te gebruiken, moeten we eerst de OpenAI-sleutel instellen:
import os
os.environ['OPENAI_API_KEY']='sk-test'
Voer nu deze opdracht uit en klik op de url:
!lida ui --port=8080 --docs
Klik op de live demo-knop:
Let op: U moet uw openai-sleutel instellen om de web-UI te kunnen gebruiken.
Werken met taalmodellen
“gpt-3.5-turbo-0301” is het model dat standaard is geselecteerd.
U kunt op Generatie-instellingen klikken om de LLM-provider, het model en andere instellingen te wijzigen.
Visualiseren en inzicht verkrijgen met LIDA met behulp van Python
In deze gids richt ik mij op het visualiseren en verkrijgen van inzichten met LIDA met behulp van Python.
In deze demo gebruik ik de Cohere LLM-provider. U kunt met de muis over de Cohere's dashboard en ontvang uw proef-API-sleutel om modellen van Cohere te gebruiken.
from llmx import llm
from llmx.datamodel import TextGenerationConfig
import os
os.environ['COHERE_API_KEY']='Your_API_Key'
messages = [
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "What is osmosis?"}
]
gen = llm(provider="cohere")
config = TextGenerationConfig(model="command-r-plus-08-2024", max_tokens=50)
response = gen.generate(messages, config=config, use_cache=True)
print(response.text[0].content)
Osmose is een fundamenteel proces in de biologie en scheikunde waarbij een oplosmiddel,
meestal beweegt water zich via een semipermeabel membraan vanuit een gebied van
lagere opgeloste stofconcentratie naar een regio met een hogere opgeloste stofconcentratie, met als doel
om de concentraties aan beide kanten gelijk te maken
from lida import Manager, llm
lida = Manager(text_gen = gen)
summary = lida.summarize("heart.csv")
print(summary)
uitgang
{'naam': 'hart.csv', 'bestandsnaam': 'hart.csv', 'datasetbeschrijving': '',
'velden': [{'kolom': 'leeftijd', 'eigenschappen': {'dtype': 'nummer', 'std': 9,
'min': 29, 'max': 77, 'voorbeelden': [46, 66, 48], 'aantal_unieke_waarden': 41,
'semantisch_type': '', 'beschrijving': ''}}, {'kolom': 'geslacht', 'eigenschappen':
{'dtype': 'nummer', 'std': 0, 'min': 0, 'max': 1, 'voorbeelden': [0, 1],
'num_unique_values': 2, 'semantisch_type': '', 'beschrijving': ''}}, {'kolom':
'cp', 'eigenschappen': {'dtype': 'nummer', 'std': 1, 'min': 0, 'max': 3,
'voorbeelden': [2, 0], 'aantal_unieke_waarden': 4, 'semantisch_type': '',
'beschrijving': ''}}, {'kolom': 'trtbps', 'eigenschappen': {'dtype': 'nummer',
'std': 17, 'min': 94, 'max': 200, 'monsters': [104, 123],
'num_unique_values': 49, 'semantisch_type': '', 'beschrijving': ''}}, {'kolom':
'chol', 'eigenschappen': {'dtype': 'nummer', 'std': 51, 'min': 126, 'max': 564,
'voorbeelden': [277, 169], 'aantal_unieke_waarden': 152, 'semantisch_type': '',
'beschrijving': ''}}, {'kolom': 'fbs', 'eigenschappen': {'dtype': 'nummer',
'std': 0, 'min': 0, 'max': 1, 'voorbeelden': [0, 1], 'num_unieke_waarden': 2,
'semantisch_type': '', 'beschrijving': ''}}, {'kolom': 'restecg',
'eigenschappen': {'dtype': 'nummer', 'std': 0, 'min': 0, 'max': 2, 'voorbeelden':
[0, 1], 'num_unieke_waarden': 3, 'semantisch_type': '', 'beschrijving': ''}},
{'kolom': 'thalachh', 'eigenschappen': {'dtype': 'nummer', 'std': 22, 'min':
71, 'max': 202, 'voorbeelden': [159, 152], 'aantal_unieke_waarden': 91,
'semantisch_type': '', 'beschrijving': ''}}, {'kolom': 'exng', 'eigenschappen':
{'dtype': 'nummer', 'std': 0, 'min': 0, 'max': 1, 'voorbeelden': [1, 0],
'num_unique_values': 2, 'semantisch_type': '', 'beschrijving': ''}}, {'kolom':
'oldpeak', 'eigenschappen': {'dtype': 'nummer', 'std': 1.1610750220686343,
'min': 0.0, 'max': 6.2, 'voorbeelden': [1.9, 3.0], 'aantal_unieke_waarden': 40,
'semantisch_type': '', 'beschrijving': ''}}, {'kolom': 'slp', 'eigenschappen':
{'dtype': 'nummer', 'std': 0, 'min': 0, 'max': 2, 'voorbeelden': [0, 2],
'num_unique_values': 3, 'semantisch_type': '', 'beschrijving': ''}}, {'kolom':
'caa', 'eigenschappen': {'dtype': 'nummer', 'std': 1, 'min': 0, 'max': 4,
'voorbeelden': [2, 4], 'aantal_unieke_waarden': 5, 'semantisch_type': '',
'beschrijving': ''}}, {'kolom': 'thall', 'eigenschappen': {'dtype': 'nummer',
'std': 0, 'min': 0, 'max': 3, 'voorbeelden': [2, 0], 'num_unieke_waarden': 4,
'semantisch_type': '', 'beschrijving': ''}}, {'kolom': 'uitvoer', 'eigenschappen':
{'dtype': 'nummer', 'std': 0, 'min': 0, 'max': 1, 'voorbeelden': [0, 1],
'num_unieke_waarden': 2, 'semantisch_type': '', 'beschrijving': ''}}],
'veld_namen': ['leeftijd', 'geslacht', 'cp', 'trtbps', 'chol', 'fbs', 'restecg',
'thalachh', 'exng', 'oude piek', 'slp', 'caa', 'thall', 'uitvoer']}
goals = lida.goals(summary=summary, n=5, persona="A data scientist focused on using predictive analytics to improve early detection and prevention of heart disease.") # generate goals (n is no. of goals)
5 Doelen die we hebben gegenereerd
'n' is het aantal doelen dat we met behulp van de samenvatting genereren. Laten we eens kijken naar de 5 doelen die we hebben gegenereerd:
goals[0]
doel 0
Vraag: Welke invloed heeft leeftijd op het risico op hartziekten?Visualisatie: Spreidingsdiagram met 'leeftijd' op de x-as en 'output' (hart
aanwezigheid van ziekte) als gekleurde datapuntenRationale: Deze visualisatie zal ons helpen begrijpen of er een
correlatie tussen leeftijd en risico op hartziekten. Door leeftijd uit te zetten tegen de
aanwezigheid van hartziekten, kunnen we eventuele trends of patronen identificeren die
duiden op een hoger risico op bepaalde leeftijden, wat helpt bij strategieën voor vroege detectie.
goals[1]
doel 1
Vraag: Bestaat er een genderongelijkheid in het voorkomen van hartziekten?Visualisatie: Gestapelde staafdiagram waarin het aantal 'geslacht' (gender) wordt vergeleken met
'output' (aanwezigheid van hartziekte)Onderbouwing: Deze grafiek zal eventuele genderverschillen in hartziekten onthullen
gevallen. Door de verdeling van mannen en vrouwen met en zonder te vergelijken
hartziekten, we kunnen beoordelen of het ene geslacht vatbaarder is, wat
cruciaal voor gerichte preventie-inspanningen.
goals[2]
doel 2
Vraag: Welke invloed heeft het cholesterolgehalte op de gezondheid van het hart?Visualisatie: Boxplot van 'chol' (cholesterol) gegroepeerd op 'output' (hart
aanwezigheid van ziekte)Rationale: Deze grafiek zal de verdeling van cholesterolniveaus illustreren
bij personen met en zonder hartziekte. We kunnen bepalen of hogere
cholesterol wordt in verband gebracht met een verhoogd risico op hartziekten,
inzichten voor preventieve maatregelen.
goals[3]
doel 3
Question: Are there specific chest pain types linked to heart disease?
Visualization: Violin plot of 'cp' (chest pain type) colored by 'output'
(heart disease presence)
Rationale: This visualization will help us understand if certain types of
chest pain are more prevalent in heart disease cases. By examining the
distribution of chest pain types, we can identify patterns that may aid in
early diagnosis and treatment planning.
goals[4]
doel 4
Vraag: Wat is het verband tussen de hartslag in rust en hartziekten?Visualisatie: Spreidingsdiagram met 'thalachh' (rusthartslag) op de y-
as en 'output' (aanwezigheid van hartziekte) als gekleurde datapuntenOnderbouwing: Deze grafiek zal een eventuele relatie tussen de hartslag in rust en de hartslag in rust onthullen.
en hartziekten. Door de hartslag in rust te visualiseren tegen de
aanwezigheid van hartziekten, kunnen we bepalen of hogere of lagere tarieven zijn
geassocieerd met een verhoogd risico, en die richtinggevend zijn voor strategieën voor vroege interventie.
Grafieken genereren voor elk doel
Laten we grafieken voor elk doel genereren en inzichten verkrijgen uit de visualisaties.
charts = []
for i in range(5):
charts.append(lida.visualize(summary=summary, goal=goals[i], library="seaborn"))
charts[0][0]
charts[1][0]
charts[2][0]
charts[3][0]
charts[4][0]
lida.edit Functie om wijzigingen in de grafiek voor te stellen
Laten we eens kijken naar de lida.edit-functie om wijzigingen in de grafiek voor te stellen. Laten we de titel en kleur van de plot wijzigen.
# modify chart using natural language
instructions = ["change the color to red", "shorten the title"]
edited_charts = lida.edit(code=charts[4][0].code, summary=summary, instructions=instructions, library='seaborn')
lida.explain Functie om de code te beoordelen en uit te leggen
We hebben ook de mogelijkheid om de lida.explain-functie te gebruiken om de code te bekijken en uitleg te geven over de code (specifiek voor de grafiek van doel-0 hier)
explanation = lida.explain(code=charts[0][0].code)
print(explanation[0][0]['explanation'])
Deze code maakt een scatterplot met behulp van de Seaborn-bibliotheek, met 'leeftijd' op de x-as en 'output' (aanwezigheid van hartziekte) als gekleurde datapunten. De legenda is toegevoegd met de titel 'Heart Disease Presence' om onderscheid te maken tussen de twee mogelijke outputs. De titel van de plot biedt context en vraagt naar de impact van leeftijd op het risico op hartziekte.
Met LIDA kunnen gebruikers ook de code evalueren en een score aan de code geven met behulp van lida.evaluate:
evaluations = lida.evaluate(code=charts[4][0].code, goal=goals[4], library='seaborn')
print(evaluations[0][0])
{'dimension': 'bugs', 'score': 8, 'rationale': "De code bevat geen syntaxisfouten
en is grotendeels bugvrij. Er is echter een potentieel probleem met de variabele
'output' in de spreidingsdiagram, omdat deze niet is gedefinieerd in de meegeleverde code
fragment. Ervan uitgaande dat 'output' een kolom in de DataFrame is, zou de code
werken zoals bedoeld, maar dit kan verwarring of fouten veroorzaken als de kolomnaam
is niet juist."}
Met een gegeven code kunnen we meer visualisaties aanbevelen met behulp van lida.recommend.
recommendations = lida.recommend(code=charts[1][0].code, summary=summary, n=2)
Referenties en bronnen
- Officiële LIDA-documentatie: [LIDA-documentatie]
- GitHub-opslagplaats: [Microsoft LIDA GitHub]
Conclusie
LIDA zorgt voor een revolutie in het landschap van datavisualisatie door naadloze integratie machine learning mogelijkheden in het proces. De multi-stage pipeline vereenvoudigt de creatie van zinvolle, grammatica-agnostische visualisaties en infographics, waardoor data-inzichten toegankelijker worden, zelfs voor mensen zonder uitgebreide programmeervaardigheden. Door natuurlijke taalinterfaces te combineren met directe manipulatie kunnen technische en niet-technische gebruikers complexe datasets omzetten in duidelijke, visueel aantrekkelijke verhalen. De ingebouwde functies van het platform voor visualisatiereparatie, aanbevelingen en zelfevaluatie verbeteren de datageletterdheid verder en stellen gebruikers in staat om visuele outputs effectief te verfijnen. Uiteindelijk faciliteert het betere datagestuurde besluitvorming door het proces van het omzetten van data in bruikbare inzichten te stroomlijnen.
Als u op zoek bent naar een uitgebreide generatieve AI-cursus, verken dan GenAI-hoogtepunt vandaag nog en til je vaardigheden naar een hoger niveau!
Veelgestelde Vragen / FAQ
Antw. De Viz Generator genereert code om visualisaties te maken.
Antw. LIDA is grammatica-agnostisch, wat betekent dat het visualisaties kan genereren in elke visualisatiegrammatica zoals Altair, Matplotlib, ggplot of Seaborn in Python, evenals in andere programmeertalen zoals R en C++.
Antw. Een beperking van LIDA is de afhankelijkheid van de nauwkeurigheid van grote taalmodellen en de kwaliteit van de data. Als de modellen onjuiste doelen of samenvattingen genereren, kan dit leiden tot suboptimale of misleidende visualisaties.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoData.Network Verticale generatieve AI. Versterk jezelf. Toegang hier.
- PlatoAiStream. Web3-intelligentie. Kennis versterkt. Toegang hier.
- PlatoESG. carbon, CleanTech, Energie, Milieu, Zonne, Afvalbeheer. Toegang hier.
- Plato Gezondheid. Intelligentie op het gebied van biotech en klinische proeven. Toegang hier.
- Bron: https://www.analyticsvidhya.com/blog/2024/10/lida/