Added Self-guided audio tour agent

This commit is contained in:
Sakalya100 2025-03-24 19:21:24 +05:30
parent 51836ad0fc
commit c51db1ff0f
16 changed files with 683 additions and 1581 deletions

View file

@ -0,0 +1,73 @@
# 🗺️ Self-Guided Audio Tour Agent
A conversational voice agent system that generates immersive, self-guided audio tours based on the users **location**, **areas of interest**, and **tour duration**. Built on a multi-agent architecture using OpenAI Agents SDK, real-time information retrieval, and expressive TTS for natural speech output.
---
## 🚀 Features
### 🎙️ Multi-Agent Architecture
- **Orchestrator Agent**
Coordinates the overall tour flow, manages transitions, and assembles content from all expert agents.
- **History Agent**
Delivers insightful historical narratives with an authoritative voice.
- **Architecture Agent**
Highlights architectural details, styles, and design elements using a descriptive and technical tone.
- **Culture Agent**
Explores local customs, traditions, and artistic heritage with an enthusiastic voice.
- **Culinary Agent**
Describes iconic dishes and food culture in a passionate and engaging tone.
---
### 📍 Location-Aware Content Generation
- Dynamic content generation based on user-input **location**
- Real-time **web search integration** to fetch relevant, up-to-date details
- Personalized content delivery filtered by user **interest categories**
---
### ⏱️ Customizable Tour Duration
- Selectable tour length: **15, 30, or 60 minutes**
- Time allocations adapt to user interest weights and location relevance
- Ensures well-paced and proportioned narratives across sections
---
### 🔊 Expressive Speech Output
- High-quality audio generated using **Text-to-Speech (TTS)**
### How to get Started?
1. Clone the GitHub repository
```bash
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
cd ai_agent_tutorials/ai_audio_tour_agent
```
2. Install the required dependencies:
```bash
pip install -r requirements.txt
```
3. Get your OpenAI API Key
- Sign up for an [OpenAI account](https://platform.openai.com/) (or the LLM provider of your choice) and obtain your API key.
4. Run the Streamlit App
```bash
streamlit run ai_audio_tour_agent.py
```

View file

@ -0,0 +1,306 @@
from pydantic import BaseModel
from agents import Agent, WebSearchTool
from agents.model_settings import ModelSettings
ARCHITECTURE_AGENT_INSTRUCTIONS = ("""
You are the Architecture agent for a self-guided audio tour system. Given a location and the areas of interest of user, your role is to:
1. Describe architectural styles, notable buildings, urban planning, and design elements
2. Provide technical insights balanced with accessible explanations
3. Highlight the most visually striking or historically significant structures
4. Adopt a detailed, descriptive voice style when delivering architectural content
5. Make sure not to add any headings like ## Architecture. Just provide the content
6. Make sure the details are conversational and don't include any formatting or headings. It will be directly used in a audio model for converting to speech and the entire content should feel like natural speech.
7. Make sure the content is strictly between the upper and lower Word Limit as specified. For example, If the word limit is 100 to 120, it should be within that, not less than 100 or greater than 120
NOTE: Given a location, use web search to retrieve uptodate context and architectural information about the location
NOTE: Do not add any Links or Hyperlinks in your answer or never cite any source
Help users see and appreciate architectural details they might otherwise miss. Make it as detailed and elaborative as possible
""")
class Architecture(BaseModel):
output: str
architecture_agent = Agent(
name="ArchitectureAgent",
instructions=ARCHITECTURE_AGENT_INSTRUCTIONS,
model="gpt-4o",
tools=[WebSearchTool()],
model_settings=ModelSettings(tool_choice="required"),
output_type=Architecture
)
CULINARY_AGENT_INSTRUCTIONS = ("""
You are the Culinary agent for a self-guided audio tour system. Given a location and the areas of interest of user, your role is to:
1. Highlight local food specialties, restaurants, markets, and culinary traditions in the user's location
2. Explain the historical and cultural significance of local dishes and ingredients
3. Suggest food stops suitable for the tour duration
4. Adopt an enthusiastic, passionate voice style when delivering culinary content
5. Make sure not to add any headings like ## Culinary. Just provide the content
6. Make sure the details are conversational and don't include any formatting or headings. It will be directly used in a audio model for converting to speech and the entire content should feel like natural speech.
7. Make sure the content is strictly between the upper and lower Word Limit as specified. For example, If the word limit is 100 to 120, it should be within that, not less than 100 or greater than 120
NOTE: Given a location, use web search to retrieve uptodate context and culinary information about the location
NOTE: Do not add any Links or Hyperlinks in your answer or never cite any source
Make your descriptions vivid and appetizing. Include practical information like operating hours when relevant. Make it as detailed and elaborative as possible
""")
class Culinary(BaseModel):
output: str
culinary_agent = Agent(
name="CulinaryAgent",
instructions=CULINARY_AGENT_INSTRUCTIONS,
model="gpt-4o",
tools=[WebSearchTool()],
model_settings=ModelSettings(tool_choice="required"),
output_type=Culinary
)
CULTURE_AGENT_INSTRUCTIONS = ("""
You are the Culture agent for a self-guided audio tour system. Given a location and the areas of interest of user, your role is to:
1. Provide information about local traditions, customs, arts, music, and cultural practices
2. Highlight cultural venues and events relevant to the user's interests
3. Explain cultural nuances and significance that enhance the visitor's understanding
4. Adopt a warm, respectful voice style when delivering cultural content
5. Make sure not to add any headings like ## Culture. Just provide the content
6. Make sure the details are conversational and don't include any formatting or headings. It will be directly used in a audio model for converting to speech and the entire content should feel like natural speech.
7. Make sure the content is strictly between the upper and lower Word Limit as specified. For example, If the word limit is 100 to 120, it should be within that, not less than 100 or greater than 120
NOTE: Given a location, use web search to retrieve uptodate context and all the cultural information about the location
NOTE: Do not add any Links or Hyperlinks in your answer or never cite any source
Focus on authentic cultural insights that help users appreciate local ways of life. Make it as detailed and elaborative as possible
""")
class Culture(BaseModel):
output: str
culture_agent = Agent(
name="CulturalAgent",
instructions=CULTURE_AGENT_INSTRUCTIONS,
model="gpt-4o",
tools=[WebSearchTool()],
model_settings=ModelSettings(tool_choice="required"),
output_type=Culture
)
HISTORY_AGENT_INSTRUCTIONS = ("""
You are the History agent for a self-guided audio tour system. Given a location and the areas of interest of user, your role is to:
1. Provide historically accurate information about landmarks, events, and people related to the user's location
2. Prioritize the most significant historical aspects based on the user's time constraints
3. Include interesting historical facts and stories that aren't commonly known
4. Adopt an authoritative, professorial voice style when delivering historical content
5. Make sure not to add any headings like ## History. Just provide the content
6. Make sure the details are conversational and don't include any formatting or headings. It will be directly used in a audio model for converting to speech and the entire content should feel like natural speech.
7. Make sure the content is strictly between the upper and lower Word Limit as specified. For example, If the word limit is 100 to 120, it should be within that, not less than 100 or greater than 120
NOTE: Given a location, use web search to retrieve uptodate context and historical information about the location
NOTE: Do not add any Links or Hyperlinks in your answer or never cite any source
Focus on making history come alive through engaging narratives. Keep descriptions concise but informative. Make it as detailed and elaborative as possible
""")
class History(BaseModel):
output: str
historical_agent = Agent(
name="HistoricalAgent",
instructions=HISTORY_AGENT_INSTRUCTIONS,
model="gpt-4o",
output_type=History,
tools=[WebSearchTool()],
model_settings=ModelSettings(tool_choice="required"),
)
ORCHESTRATOR_INSTRUCTIONS = ("""
Your Role
You are the Orchestrator Agent for a self-guided audio tour system. Your task is to assemble a comprehensive and engaging tour for a single location by integrating pre-timed content from four specialist agents (Architecture, History, Culinary, and Culture), while adding introduction and conclusion elements.
Input Parameters
- User Location: The specific location for the tour (e.g., a landmark, neighborhood, or district)
- User Interests: User's preference across categories (Architecture, History, Culinary, Culture)
- Specialist Agent Outputs: Pre-sized content from each domain expert (Architecture, History, Culinary, Culture)
- Specialist Agent Word Limit: Word Limit from each domain expert (Architecture, History, Culinary, Culture)
Your Tasks
1. Introduction Creation (1-2 minutes)
Create an engaging and warm introduction that:
- Welcomes the user to the specific location
- Briefly outlines what the tour will cover
- Highlights which categories are emphasized based on user interests
- Sets the tone for the experience (conversational and immersive)
2. Content Integration with Deduplication
Integrate the content from all four agents in the correct order:
- Architecture History Culture Culinary
- Maintain each agent's voice and expertise
- Ensure all content fits within its allocated time budget
- Don't edit anything from your end and just accumulate the content from the specialised agents
3. Transition Development
Develop smooth transitions between the sections:
- Use natural language to move from one domain to another
- Connect themes when possible (e.g., how architecture influenced culture, or how history shaped food)
4. Conclusion Creation
Write a thoughtful concise and short conclusion that:
- Summarizes key highlights from the tour
- Reinforces the uniqueness of the location
- Connects the explored themes holistically
- Encourages the listener to explore further based on their interests
5. Final Assembly
Assemble the complete tour in the following order:
- Introduction
- Architecture
- History
- Culture
- Culinary
- Conclusion
Ensure:
- Transitions are smooth
- Content is free from redundancy
- Total duration respects the time allocation plan
- The entire output sounds like one cohesive guided experience
""")
class FinalTour(BaseModel):
introduction: str
"""A short introduction of the Tour."""
architecture: str
"""The Architectural Content"""
history: str
"""The Historical Content"""
culture: str
"""The Culture Content"""
culinary: str
"""The Culinary Content"""
conclusion: str
"""A short conclusion of the Tour."""
orchestrator_agent = Agent(
name="OrchestratorAgent",
instructions=ORCHESTRATOR_INSTRUCTIONS,
model="gpt-4o",
output_type=FinalTour,
)
PLANNER_INSTRUCTIONS = ("""
Your Role
You are the Planner Agent for a self-guided tour system. Your primary responsibility is to analyze the user's location, interests, and requested tour duration to create an optimal time allocation plan for content generation by specialist agents (Architecture, History, Culture, and Culinary).
Input Parameters
User Location: The specific location for the tour
User Interests: User's ranked preferences across categories (Architecture, History, Culture, Culinary)
Tour Duration: User's selected time (15, 30, or 60 minutes)
Your Tasks
1. Interest Analysis
Evaluate the user's interest preferences
Assign weight to each category based on expressed interest level
If no specific preferences are provided, assume equal interest in all categories
2. Location Assessment
Analyze the significance of the specified location for each category
Determine if the location has stronger relevance in particular categories
Example: A cathedral might warrant more time for Architecture and History than Culinary
3. Time Allocation Calculation
Calculate the total content time (excluding introduction and conclusion)
Reserve 1-2 minutes for introduction and 1 minute for conclusion
Distribute the remaining time among the four categories based on:
User interest weights (primary factor)
Location relevance to each category (secondary factor)
Ensure minimum time thresholds for each category (even low-interest categories get some coverage)
4. Scaling for Different Durations
15-minute tour:
Introduction: ~1 minute
Content sections: ~12-13 minutes total (divided among categories)
Conclusion: ~1 minute
Each category gets at least 1 minute, with preferred categories getting more
30-minute tour:
Introduction: ~1.5 minutes
Content sections: ~27 minutes total (divided among categories)
Conclusion: ~1.5 minutes
Each category gets at least 3 minutes, with preferred categories getting more
60-minute tour:
Introduction: ~2 minutes
Content sections: ~56 minutes total (divided among categories)
Conclusion: ~2 minutes
Each category gets at least 5 minutes, with preferred categories getting more
Your output must be a JSON object with numeric time allocations (in minutes) for each section:
- introduction
- architecture
- history
- culture
- culinary
- conclusion
Only return the number of minutes allocated to each section. Do not include explanations or text descriptions.
Example:
{
"introduction": 2,
"architecture": 15,
"history": 20,
"culture": 10,
"culinary": 9,
"conclusion": 2
}
Make sure the time allocation adheres to the interests, and the interested section is allocated more time than others.
""")
class Planner(BaseModel):
introduction: float
architecture: float
history: float
culture: float
culinary: float
conclusion: float
planner_agent = Agent(
name="PlannerAgent",
instructions=PLANNER_INSTRUCTIONS,
model="gpt-4o",
output_type=Planner,
)

View file

@ -0,0 +1,83 @@
import streamlit as st
import asyncio
from manager import TourManager
from agents import set_default_openai_key
def tts(text):
from pathlib import Path
from openai import OpenAI
client = OpenAI()
speech_file_path = Path(__file__).parent / f"speech_tour.mp3"
response = client.audio.speech.create(
model="gpt-4o-mini-tts",
voice="coral",
input=text,
instructions="""Speak with different tones based on the content sections:
- Use an inviting and warm tone for the Introduction.
- Speak in an authoritative tone for History sections.
- Use a positive and curious tone when discussing Architecture.
- Use an enthusiastic and lively tone when covering Culture.
- Use a joyful and passionate tone when talking about Culinary topics.
Keep the transitions smooth and natural between sections."""
)
response.stream_to_file(speech_file_path)
return speech_file_path
def run_async(func, *args, **kwargs):
try:
return asyncio.run(func(*args, **kwargs))
except RuntimeError:
loop = asyncio.get_event_loop()
return loop.run_until_complete(func(*args, **kwargs))
st.sidebar.title("🔑 API Settings")
api_key = st.sidebar.text_input("Enter your OpenAI API key:", type="password")
if api_key:
st.session_state["OPENAI_API_KEY"] = api_key
st.sidebar.success("API key saved!")
set_default_openai_key(api_key)
st.title("🏛️ Self-Guided Audio Tour Generator")
location = st.text_input("📍 Enter the location for your tour:")
interests = st.multiselect(
"🎯 Select your interests:",
options=["History", "Architecture", "Culinary", "Culture"]
)
duration = st.slider(
"⏱️ Select the duration of the tour (in minutes):",
min_value=5,
max_value=60,
value=30,
step=5
)
if st.button("🎧 Generate Tour"):
if "OPENAI_API_KEY" not in st.session_state:
st.error("Please enter your OpenAI API key in the sidebar.")
elif not location:
st.error("Please enter a location.")
elif not interests:
st.error("Please select at least one interest.")
else:
with st.spinner(f"Generating a {duration}-minute tour in {location} focused on {', '.join(interests)}."):
mgr = TourManager()
final_tour = run_async(
mgr.run, location, interests, duration
)
with st.expander("🎬 Tour"):
st.markdown(final_tour)
with st.spinner("Generating Audio"):
tour_audio = tts(final_tour)
st.audio(tour_audio, format="audio/mp3")

View file

@ -0,0 +1,168 @@
from __future__ import annotations
import asyncio
import time
import json
from collections.abc import Sequence
from rich.console import Console
from agents import Runner, RunResult, custom_span, gen_trace_id, trace
from agent import History, historical_agent
from agent import Culinary,culinary_agent
from agent import Culture,culture_agent
from agent import Architecture,architecture_agent
from agent import Planner, planner_agent
from agent import FinalTour, orchestrator_agent
from printer import Printer
class TourManager:
"""
Orchestrates the full flow
"""
def __init__(self) -> None:
self.console = Console()
self.printer = Printer(self.console)
async def run(self, query: str, interest: str, duration: str) -> None:
trace_id = gen_trace_id()
with trace("Tour Research trace", trace_id=trace_id):
self.printer.update_item(
"trace_id",
f"View trace: https://platform.openai.com/traces/{trace_id}",
is_done=True,
hide_checkmark=True,
)
self.printer.update_item("start", "Starting tour research...", is_done=True)
planner = await self._get_plan(query, interest, duration)
print(planner)
architecture_research = await self._get_architecture(query, interest, planner.architecture)
historical_research = await self._get_history(query, interest, planner.history)
culinary_research = await self._get_culinary(query, interest, planner.culinary)
culture_research = await self._get_culture(query, interest, planner.culture)
final_tour = await self._get_final_tour(query, interest, duration, architecture_research.output, planner.architecture, historical_research.output, planner.history, culinary_research.output, planner.culinary, culture_research.output, planner.culture)
self.printer.update_item("final_report", "", is_done=True)
self.printer.end()
tour_intro = final_tour.introduction
architecture = final_tour.architecture
history = final_tour.history
culinary = final_tour.culinary
culture = final_tour.culture
conclusion = final_tour.conclusion
final = (
"INTRODUCTION\n\n"
+ tour_intro + "\n\n"
+ "ARCHITECTURE\n\n"
+ architecture + "\n\n"
+ "HISTORY\n\n"
+ history + "\n\n"
+ "CULTURE\n\n"
+ culture + "\n\n"
+ "CULINARY\n\n"
+ culinary + "\n\n"
+ "CONCLUSION\n\n"
+ conclusion
)
return final
async def _get_plan(self, query: str, interest: str, duration: str) -> Planner:
self.printer.update_item("Planner", "Getting Time allocation for each section")
result = await Runner.run(planner_agent, f"Query: {query} Interest: {interest} Duration: {duration}")
self.printer.update_item(
"Planner",
f"Completed planning",
is_done=True,
)
return result.final_output_as(Planner)
async def _get_history(self, query: str, interest: str, duration: float) -> History:
self.printer.update_item("History", "Getting Historical Data for Location")
word_limit = int(duration) * 120
result = await Runner.run(historical_agent, f"Query: {query} Interest: {interest} Word Limit: {word_limit} - {word_limit + 20}")
self.printer.update_item(
"History",
f"Completed history research",
is_done=True,
)
return result.final_output_as(History)
# return result.final_output_as(FinancialSearchPlan)
async def _get_architecture(self, query: str, interest: str, duration: float):
self.printer.update_item("Architecture", "Getting Architectural Data for Location")
word_limit = int(duration) * 120
result = await Runner.run(architecture_agent, f"Query: {query} Interest: {interest} Word Limit: {word_limit} - {word_limit + 20}")
self.printer.update_item(
"Architecture",
f"Completed architecture research",
is_done=True,
)
return result.final_output_as(Architecture)
async def _get_culinary(self, query: str, interest: str, duration: float):
self.printer.update_item("Culinary", "Getting Culinary Data for Location")
word_limit = int(duration) * 120
result = await Runner.run(culinary_agent, f"Query: {query} Interest: {interest} Word Limit: {word_limit} - {word_limit + 20}")
self.printer.update_item(
"Culinary",
f"Completed culinary research",
is_done=True,
)
return result.final_output_as(Culinary)
async def _get_culture(self, query: str, interest: str, duration: float):
self.printer.update_item("Culture", "Getting Cultural Data for Location")
word_limit = int(duration) * 120
result = await Runner.run(culture_agent, f"Query: {query} Interest: {interest} Word Limit: {word_limit} - {word_limit + 20}")
self.printer.update_item(
"Culture",
f"Completed culture research",
is_done=True,
)
return result.final_output_as(Culture)
async def _get_final_tour(self, query: str, interest: str, duration: float, architecture: str, architecture_dur: float, history: str, history_dur: float, culinary: str, culinary_dur: float, culture: str, culture_dur:float):
self.printer.update_item("Final Tour", "Getting Final Tour")
result = await Runner.run(
orchestrator_agent,
f"""Query: {query}
Interest: {interest}
Total Tour Duration (in minutes): {duration}
Word Limit Allocation:
- Architecture: {architecture_dur*100}
- History: {history_dur*100}
- Culture: {culture_dur*100}
- Culinary: {culinary_dur*100}
Content Sections:
Architecture:
{architecture}
History:
{history}
Culture:
{culture}
Culinary:
{culinary}
"""
)
self.printer.update_item(
"Final Tour",
f"Completed Final Tour Guide Creation",
is_done=True,
)
return result.final_output_as(FinalTour)

View file

@ -0,0 +1,46 @@
from typing import Any
from rich.console import Console, Group
from rich.live import Live
from rich.spinner import Spinner
class Printer:
"""
Simple wrapper to stream status updates. Used by the financial bot
manager as it orchestrates planning, search and writing.
"""
def __init__(self, console: Console) -> None:
self.live = Live(console=console)
self.items: dict[str, tuple[str, bool]] = {}
self.hide_done_ids: set[str] = set()
self.live.start()
def end(self) -> None:
self.live.stop()
def hide_done_checkmark(self, item_id: str) -> None:
self.hide_done_ids.add(item_id)
def update_item(
self, item_id: str, content: str, is_done: bool = False, hide_checkmark: bool = False
) -> None:
self.items[item_id] = (content, is_done)
if hide_checkmark:
self.hide_done_ids.add(item_id)
self.flush()
def mark_item_done(self, item_id: str) -> None:
self.items[item_id] = (self.items[item_id][0], True)
self.flush()
def flush(self) -> None:
renderables: list[Any] = []
for item_id, (content, is_done) in self.items.items():
if is_done:
prefix = "" if item_id not in self.hide_done_ids else ""
renderables.append(prefix + content)
else:
renderables.append(Spinner("dots", text=content))
self.live.update(Group(*renderables))

View file

@ -0,0 +1,7 @@
openai==1.68.2
openai-agents==0.0.6
pydantic==2.10.6
pydantic_core==2.27.2
python-dotenv==1.0.1
rich==13.9.4
streamlit==1.43.2

View file

@ -1,162 +0,0 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
.pdm.toml
.pdm-python
.pdm-build/
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2024 Sakalya Mitra
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,98 +0,0 @@
# AutoTabML - Automated Machine Learning Code Generator for Tabular Data
AutoTabML is an innovative application designed to automate the generation of machine learning code for tabular data. Utilizing CrewAI and the Groq Llama 70B model, AutoTabML simplifies the process of building and debugging machine learning models for both regression and classification problems. With this tool, you can generate working code, debug errors, and run your code without writing a single line of code manually.
## Features
- **Automated Code Generation**: Generate Python code for machine learning tasks based on your tabular dataset and problem description.
- **EDA and Feature Engineering**: Perform comprehensive Exploratory Data Analysis (EDA) and feature engineering.
- **Model Recommendation**: Get suggestions for the most suitable machine learning models for your problem.
- **Code Modification and Debugging**: Modify generated code based on user suggestions and debug errors effortlessly.
- **In-app Execution**: Run the generated code within the application and view the results without the need for external IDEs or additional installations.
## How It Works
AutoTabML leverages multiple agents, each specializing in different aspects of the machine learning pipeline. Here's a brief overview of the agents and their roles:
- **Data Reader Agent**: Reads and loads the uploaded dataset.
- **Problem Definition Agent**: Clarifies the machine learning problem based on user input.
- **EDA Agent**: Performs exploratory data analysis to understand data characteristics.
- **Feature Engineering Agent**: Executes feature engineering based on EDA results.
- **Model Recommendation Agent**: Suggests the most suitable machine learning models.
- **Starter Code Generator Agent**: Generates the initial Python code template for the project.
- **Code Modification Agent**: Adapts the generated code according to user feedback.
- **Code Debugger Agent**: Debugs the generated code to fix any issues.
- **Compiler Agent**: Extracts and compiles the Python code.
## Technology Used
- Python
- CrewAI
- Groq
- Streamlit
## Demo
## Getting Started
### Prerequisites
- Required Python packages (listed in `requirements.txt`)
### Installation
1. Clone the repository:
```bash
git clone https://github.com/Sakalya100/AutoTabML.git
cd AutoTabML
```
2. Create and activate a virtual environment:
```bash
python3 -m venv venv
source venv/bin/activate
```
3. Install the required packages:
```bash
pip install -r requirements.txt
```
4. Set up the environment variables by creating a `.env` file in the root directory and adding your Groq API key:
```
GROQ_API_KEY=your_groq_api_key
```
### Usage
1. Run the Streamlit application:
```bash
streamlit run app.py
```
2. Open your web browser and go to `http://localhost:8501`.
3. Describe your machine learning problem and upload a sample CSV of your dataset.
4. Click on "Process" to generate the initial code. You can then modify, debug, and run the code directly within the application.
### Example Workflow
1. **Describe Your Problem**: Enter a detailed description of the machine learning problem you want to solve.
2. **Upload Dataset**: Upload your dataset in CSV format.
3. **Generate Code**: Click the "Process" button to generate the initial Python code.
4. **Modify and Debug**: Use the provided text areas to suggest code modifications or paste error messages for debugging.
5. **Run the Code**: Execute the generated code and view the results, including any plots or outputs generated during execution.
### Contributors
- **Sakalya Mitra** - **Shalu Singh**
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

View file

@ -1,546 +0,0 @@
price,area,bedrooms,bathrooms,stories,mainroad,guestroom,basement,hotwaterheating,airconditioning,parking,prefarea,furnishingstatus
13300000,7420,4,2,3,yes,no,no,no,yes,2,yes,furnished
12250000,8960,4,4,4,yes,no,no,no,yes,3,no,furnished
12250000,9960,3,2,2,yes,no,yes,no,no,2,yes,semi-furnished
12215000,7500,4,2,2,yes,no,yes,no,yes,3,yes,furnished
11410000,7420,4,1,2,yes,yes,yes,no,yes,2,no,furnished
10850000,7500,3,3,1,yes,no,yes,no,yes,2,yes,semi-furnished
10150000,8580,4,3,4,yes,no,no,no,yes,2,yes,semi-furnished
10150000,16200,5,3,2,yes,no,no,no,no,0,no,unfurnished
9870000,8100,4,1,2,yes,yes,yes,no,yes,2,yes,furnished
9800000,5750,3,2,4,yes,yes,no,no,yes,1,yes,unfurnished
9800000,13200,3,1,2,yes,no,yes,no,yes,2,yes,furnished
9681000,6000,4,3,2,yes,yes,yes,yes,no,2,no,semi-furnished
9310000,6550,4,2,2,yes,no,no,no,yes,1,yes,semi-furnished
9240000,3500,4,2,2,yes,no,no,yes,no,2,no,furnished
9240000,7800,3,2,2,yes,no,no,no,no,0,yes,semi-furnished
9100000,6000,4,1,2,yes,no,yes,no,no,2,no,semi-furnished
9100000,6600,4,2,2,yes,yes,yes,no,yes,1,yes,unfurnished
8960000,8500,3,2,4,yes,no,no,no,yes,2,no,furnished
8890000,4600,3,2,2,yes,yes,no,no,yes,2,no,furnished
8855000,6420,3,2,2,yes,no,no,no,yes,1,yes,semi-furnished
8750000,4320,3,1,2,yes,no,yes,yes,no,2,no,semi-furnished
8680000,7155,3,2,1,yes,yes,yes,no,yes,2,no,unfurnished
8645000,8050,3,1,1,yes,yes,yes,no,yes,1,no,furnished
8645000,4560,3,2,2,yes,yes,yes,no,yes,1,no,furnished
8575000,8800,3,2,2,yes,no,no,no,yes,2,no,furnished
8540000,6540,4,2,2,yes,yes,yes,no,yes,2,yes,furnished
8463000,6000,3,2,4,yes,yes,yes,no,yes,0,yes,semi-furnished
8400000,8875,3,1,1,yes,no,no,no,no,1,no,semi-furnished
8400000,7950,5,2,2,yes,no,yes,yes,no,2,no,unfurnished
8400000,5500,4,2,2,yes,no,yes,no,yes,1,yes,semi-furnished
8400000,7475,3,2,4,yes,no,no,no,yes,2,no,unfurnished
8400000,7000,3,1,4,yes,no,no,no,yes,2,no,semi-furnished
8295000,4880,4,2,2,yes,no,no,no,yes,1,yes,furnished
8190000,5960,3,3,2,yes,yes,yes,no,no,1,no,unfurnished
8120000,6840,5,1,2,yes,yes,yes,no,yes,1,no,furnished
8080940,7000,3,2,4,yes,no,no,no,yes,2,no,furnished
8043000,7482,3,2,3,yes,no,no,yes,no,1,yes,furnished
7980000,9000,4,2,4,yes,no,no,no,yes,2,no,furnished
7962500,6000,3,1,4,yes,yes,no,no,yes,2,no,unfurnished
7910000,6000,4,2,4,yes,no,no,no,yes,1,no,semi-furnished
7875000,6550,3,1,2,yes,no,yes,no,yes,0,yes,furnished
7840000,6360,3,2,4,yes,no,no,no,yes,0,yes,furnished
7700000,6480,3,2,4,yes,no,no,no,yes,2,no,unfurnished
7700000,6000,4,2,4,yes,no,no,no,no,2,no,semi-furnished
7560000,6000,4,2,4,yes,no,no,no,yes,1,no,furnished
7560000,6000,3,2,3,yes,no,no,no,yes,0,no,semi-furnished
7525000,6000,3,2,4,yes,no,no,no,yes,1,no,furnished
7490000,6600,3,1,4,yes,no,no,no,yes,3,yes,furnished
7455000,4300,3,2,2,yes,no,yes,no,no,1,no,unfurnished
7420000,7440,3,2,1,yes,yes,yes,no,yes,0,yes,semi-furnished
7420000,7440,3,2,4,yes,no,no,no,no,1,yes,unfurnished
7420000,6325,3,1,4,yes,no,no,no,yes,1,no,unfurnished
7350000,6000,4,2,4,yes,yes,no,no,yes,1,no,furnished
7350000,5150,3,2,4,yes,no,no,no,yes,2,no,semi-furnished
7350000,6000,3,2,2,yes,yes,no,no,yes,1,no,semi-furnished
7350000,6000,3,1,2,yes,no,no,no,yes,1,no,unfurnished
7343000,11440,4,1,2,yes,no,yes,no,no,1,yes,semi-furnished
7245000,9000,4,2,4,yes,yes,no,no,yes,1,yes,furnished
7210000,7680,4,2,4,yes,yes,no,no,yes,1,no,semi-furnished
7210000,6000,3,2,4,yes,yes,no,no,yes,1,no,furnished
7140000,6000,3,2,2,yes,yes,no,no,no,1,no,semi-furnished
7070000,8880,2,1,1,yes,no,no,no,yes,1,no,semi-furnished
7070000,6240,4,2,2,yes,no,no,no,yes,1,no,furnished
7035000,6360,4,2,3,yes,no,no,no,yes,2,yes,furnished
7000000,11175,3,1,1,yes,no,yes,no,yes,1,yes,furnished
6930000,8880,3,2,2,yes,no,yes,no,yes,1,no,furnished
6930000,13200,2,1,1,yes,no,yes,yes,no,1,no,furnished
6895000,7700,3,2,1,yes,no,no,no,no,2,no,unfurnished
6860000,6000,3,1,1,yes,no,no,no,yes,1,no,furnished
6790000,12090,4,2,2,yes,no,no,no,no,2,yes,furnished
6790000,4000,3,2,2,yes,no,yes,no,yes,0,yes,semi-furnished
6755000,6000,4,2,4,yes,no,no,no,yes,0,no,unfurnished
6720000,5020,3,1,4,yes,no,no,no,yes,0,yes,unfurnished
6685000,6600,2,2,4,yes,no,yes,no,no,0,yes,furnished
6650000,4040,3,1,2,yes,no,yes,yes,no,1,no,furnished
6650000,4260,4,2,2,yes,no,no,yes,no,0,no,semi-furnished
6650000,6420,3,2,3,yes,no,no,no,yes,0,yes,furnished
6650000,6500,3,2,3,yes,no,no,no,yes,0,yes,furnished
6650000,5700,3,1,1,yes,yes,yes,no,yes,2,yes,furnished
6650000,6000,3,2,3,yes,yes,no,no,yes,0,no,furnished
6629000,6000,3,1,2,yes,no,no,yes,no,1,yes,semi-furnished
6615000,4000,3,2,2,yes,no,yes,no,yes,1,no,semi-furnished
6615000,10500,3,2,1,yes,no,yes,no,yes,1,yes,furnished
6580000,6000,3,2,4,yes,no,no,no,yes,0,no,semi-furnished
6510000,3760,3,1,2,yes,no,no,yes,no,2,no,semi-furnished
6510000,8250,3,2,3,yes,no,no,no,yes,0,no,furnished
6510000,6670,3,1,3,yes,no,yes,no,no,0,yes,unfurnished
6475000,3960,3,1,1,yes,no,yes,no,no,2,no,semi-furnished
6475000,7410,3,1,1,yes,yes,yes,no,yes,2,yes,unfurnished
6440000,8580,5,3,2,yes,no,no,no,no,2,no,furnished
6440000,5000,3,1,2,yes,no,no,no,yes,0,no,semi-furnished
6419000,6750,2,1,1,yes,yes,yes,no,no,2,yes,furnished
6405000,4800,3,2,4,yes,yes,no,no,yes,0,no,furnished
6300000,7200,3,2,1,yes,no,yes,no,yes,3,no,semi-furnished
6300000,6000,4,2,4,yes,no,no,no,no,1,no,semi-furnished
6300000,4100,3,2,3,yes,no,no,no,yes,2,no,semi-furnished
6300000,9000,3,1,1,yes,no,yes,no,no,1,yes,furnished
6300000,6400,3,1,1,yes,yes,yes,no,yes,1,yes,semi-furnished
6293000,6600,3,2,3,yes,no,no,no,yes,0,yes,unfurnished
6265000,6000,4,1,3,yes,yes,yes,no,no,0,yes,unfurnished
6230000,6600,3,2,1,yes,no,yes,no,yes,0,yes,unfurnished
6230000,5500,3,1,3,yes,no,no,no,no,1,yes,unfurnished
6195000,5500,3,2,4,yes,yes,no,no,yes,1,no,semi-furnished
6195000,6350,3,2,3,yes,yes,no,no,yes,0,no,furnished
6195000,5500,3,2,1,yes,yes,yes,no,no,2,yes,furnished
6160000,4500,3,1,4,yes,no,no,no,yes,0,no,unfurnished
6160000,5450,4,2,1,yes,no,yes,no,yes,0,yes,semi-furnished
6125000,6420,3,1,3,yes,no,yes,no,no,0,yes,unfurnished
6107500,3240,4,1,3,yes,no,no,no,no,1,no,semi-furnished
6090000,6615,4,2,2,yes,yes,no,yes,no,1,no,semi-furnished
6090000,6600,3,1,1,yes,yes,yes,no,no,2,yes,semi-furnished
6090000,8372,3,1,3,yes,no,no,no,yes,2,no,unfurnished
6083000,4300,6,2,2,yes,no,no,no,no,0,no,furnished
6083000,9620,3,1,1,yes,no,yes,no,no,2,yes,furnished
6020000,6800,2,1,1,yes,yes,yes,no,no,2,no,furnished
6020000,8000,3,1,1,yes,yes,yes,no,yes,2,yes,semi-furnished
6020000,6900,3,2,1,yes,yes,yes,no,no,0,yes,unfurnished
5950000,3700,4,1,2,yes,yes,no,no,yes,0,no,furnished
5950000,6420,3,1,1,yes,no,yes,no,yes,0,yes,furnished
5950000,7020,3,1,1,yes,no,yes,no,yes,2,yes,semi-furnished
5950000,6540,3,1,1,yes,yes,yes,no,no,2,yes,furnished
5950000,7231,3,1,2,yes,yes,yes,no,yes,0,yes,semi-furnished
5950000,6254,4,2,1,yes,no,yes,no,no,1,yes,semi-furnished
5950000,7320,4,2,2,yes,no,no,no,no,0,no,furnished
5950000,6525,3,2,4,yes,no,no,no,no,1,no,furnished
5943000,15600,3,1,1,yes,no,no,no,yes,2,no,semi-furnished
5880000,7160,3,1,1,yes,no,yes,no,no,2,yes,unfurnished
5880000,6500,3,2,3,yes,no,no,no,yes,0,no,unfurnished
5873000,5500,3,1,3,yes,yes,no,no,yes,1,no,furnished
5873000,11460,3,1,3,yes,no,no,no,no,2,yes,semi-furnished
5866000,4800,3,1,1,yes,yes,yes,no,no,0,no,unfurnished
5810000,5828,4,1,4,yes,yes,no,no,no,0,no,semi-furnished
5810000,5200,3,1,3,yes,no,no,no,yes,0,no,semi-furnished
5810000,4800,3,1,3,yes,no,no,no,yes,0,no,unfurnished
5803000,7000,3,1,1,yes,no,yes,no,no,2,yes,semi-furnished
5775000,6000,3,2,4,yes,no,no,no,yes,0,no,unfurnished
5740000,5400,4,2,2,yes,no,no,no,yes,2,no,unfurnished
5740000,4640,4,1,2,yes,no,no,no,no,1,no,semi-furnished
5740000,5000,3,1,3,yes,no,no,no,yes,0,no,semi-furnished
5740000,6360,3,1,1,yes,yes,yes,no,yes,2,yes,furnished
5740000,5800,3,2,4,yes,no,no,no,yes,0,no,unfurnished
5652500,6660,4,2,2,yes,yes,yes,no,no,1,yes,semi-furnished
5600000,10500,4,2,2,yes,no,no,no,no,1,no,semi-furnished
5600000,4800,5,2,3,no,no,yes,yes,no,0,no,unfurnished
5600000,4700,4,1,2,yes,yes,yes,no,yes,1,no,furnished
5600000,5000,3,1,4,yes,no,no,no,no,0,no,furnished
5600000,10500,2,1,1,yes,no,no,no,no,1,no,semi-furnished
5600000,5500,3,2,2,yes,no,no,no,no,1,no,semi-furnished
5600000,6360,3,1,3,yes,no,no,no,no,0,yes,semi-furnished
5600000,6600,4,2,1,yes,no,yes,no,no,0,yes,semi-furnished
5600000,5136,3,1,2,yes,yes,yes,no,yes,0,yes,unfurnished
5565000,4400,4,1,2,yes,no,no,no,yes,2,yes,semi-furnished
5565000,5400,5,1,2,yes,yes,yes,no,yes,0,yes,furnished
5530000,3300,3,3,2,yes,no,yes,no,no,0,no,semi-furnished
5530000,3650,3,2,2,yes,no,no,no,no,2,no,semi-furnished
5530000,6100,3,2,1,yes,no,yes,no,no,2,yes,furnished
5523000,6900,3,1,1,yes,yes,yes,no,no,0,yes,semi-furnished
5495000,2817,4,2,2,no,yes,yes,no,no,1,no,furnished
5495000,7980,3,1,1,yes,no,no,no,no,2,no,semi-furnished
5460000,3150,3,2,1,yes,yes,yes,no,yes,0,no,furnished
5460000,6210,4,1,4,yes,yes,no,no,yes,0,no,furnished
5460000,6100,3,1,3,yes,yes,no,no,yes,0,yes,semi-furnished
5460000,6600,4,2,2,yes,yes,yes,no,no,0,yes,semi-furnished
5425000,6825,3,1,1,yes,yes,yes,no,yes,0,yes,semi-furnished
5390000,6710,3,2,2,yes,yes,yes,no,no,1,yes,furnished
5383000,6450,3,2,1,yes,yes,yes,yes,no,0,no,unfurnished
5320000,7800,3,1,1,yes,no,yes,no,yes,2,yes,unfurnished
5285000,4600,2,2,1,yes,no,no,no,yes,2,no,semi-furnished
5250000,4260,4,1,2,yes,no,yes,no,yes,0,no,furnished
5250000,6540,4,2,2,no,no,no,no,yes,0,no,semi-furnished
5250000,5500,3,2,1,yes,no,yes,no,no,0,no,semi-furnished
5250000,10269,3,1,1,yes,no,no,no,no,1,yes,semi-furnished
5250000,8400,3,1,2,yes,yes,yes,no,yes,2,yes,unfurnished
5250000,5300,4,2,1,yes,no,no,no,yes,0,yes,unfurnished
5250000,3800,3,1,2,yes,yes,yes,no,no,1,yes,unfurnished
5250000,9800,4,2,2,yes,yes,no,no,no,2,no,semi-furnished
5250000,8520,3,1,1,yes,no,no,no,yes,2,no,furnished
5243000,6050,3,1,1,yes,no,yes,no,no,0,yes,semi-furnished
5229000,7085,3,1,1,yes,yes,yes,no,no,2,yes,semi-furnished
5215000,3180,3,2,2,yes,no,no,no,no,2,no,semi-furnished
5215000,4500,4,2,1,no,no,yes,no,yes,2,no,semi-furnished
5215000,7200,3,1,2,yes,yes,yes,no,no,1,yes,furnished
5145000,3410,3,1,2,no,no,no,no,yes,0,no,semi-furnished
5145000,7980,3,1,1,yes,no,no,no,no,1,yes,semi-furnished
5110000,3000,3,2,2,yes,yes,yes,no,no,0,no,furnished
5110000,3000,3,1,2,yes,no,yes,no,no,0,no,unfurnished
5110000,11410,2,1,2,yes,no,no,no,no,0,yes,furnished
5110000,6100,3,1,1,yes,no,yes,no,yes,0,yes,semi-furnished
5075000,5720,2,1,2,yes,no,no,no,yes,0,yes,unfurnished
5040000,3540,2,1,1,no,yes,yes,no,no,0,no,semi-furnished
5040000,7600,4,1,2,yes,no,no,no,yes,2,no,furnished
5040000,10700,3,1,2,yes,yes,yes,no,no,0,no,semi-furnished
5040000,6600,3,1,1,yes,yes,yes,no,no,0,yes,furnished
5033000,4800,2,1,1,yes,yes,yes,no,no,0,no,semi-furnished
5005000,8150,3,2,1,yes,yes,yes,no,no,0,no,semi-furnished
4970000,4410,4,3,2,yes,no,yes,no,no,2,no,semi-furnished
4970000,7686,3,1,1,yes,yes,yes,yes,no,0,no,semi-furnished
4956000,2800,3,2,2,no,no,yes,no,yes,1,no,semi-furnished
4935000,5948,3,1,2,yes,no,no,no,yes,0,no,semi-furnished
4907000,4200,3,1,2,yes,no,no,no,no,1,no,furnished
4900000,4520,3,1,2,yes,no,yes,no,yes,0,no,semi-furnished
4900000,4095,3,1,2,no,yes,yes,no,yes,0,no,semi-furnished
4900000,4120,2,1,1,yes,no,yes,no,no,1,no,semi-furnished
4900000,5400,4,1,2,yes,no,no,no,no,0,no,semi-furnished
4900000,4770,3,1,1,yes,yes,yes,no,no,0,no,semi-furnished
4900000,6300,3,1,1,yes,no,no,no,yes,2,no,semi-furnished
4900000,5800,2,1,1,yes,yes,yes,no,yes,0,no,semi-furnished
4900000,3000,3,1,2,yes,no,yes,no,yes,0,no,semi-furnished
4900000,2970,3,1,3,yes,no,no,no,no,0,no,semi-furnished
4900000,6720,3,1,1,yes,no,no,no,no,0,no,unfurnished
4900000,4646,3,1,2,yes,yes,yes,no,no,2,no,semi-furnished
4900000,12900,3,1,1,yes,no,no,no,no,2,no,furnished
4893000,3420,4,2,2,yes,no,yes,no,yes,2,no,semi-furnished
4893000,4995,4,2,1,yes,no,yes,no,no,0,no,semi-furnished
4865000,4350,2,1,1,yes,no,yes,no,no,0,no,unfurnished
4830000,4160,3,1,3,yes,no,no,no,no,0,no,unfurnished
4830000,6040,3,1,1,yes,no,no,no,no,2,yes,semi-furnished
4830000,6862,3,1,2,yes,no,no,no,yes,2,yes,furnished
4830000,4815,2,1,1,yes,no,no,no,yes,0,yes,semi-furnished
4795000,7000,3,1,2,yes,no,yes,no,no,0,no,unfurnished
4795000,8100,4,1,4,yes,no,yes,no,yes,2,no,semi-furnished
4767000,3420,4,2,2,yes,no,no,no,no,0,no,semi-furnished
4760000,9166,2,1,1,yes,no,yes,no,yes,2,no,semi-furnished
4760000,6321,3,1,2,yes,no,yes,no,yes,1,no,furnished
4760000,10240,2,1,1,yes,no,no,no,yes,2,yes,unfurnished
4753000,6440,2,1,1,yes,no,no,no,yes,3,no,semi-furnished
4690000,5170,3,1,4,yes,no,no,no,yes,0,no,semi-furnished
4690000,6000,2,1,1,yes,no,yes,no,yes,1,no,furnished
4690000,3630,3,1,2,yes,no,no,no,no,2,no,semi-furnished
4690000,9667,4,2,2,yes,yes,yes,no,no,1,no,semi-furnished
4690000,5400,2,1,2,yes,no,no,no,no,0,yes,semi-furnished
4690000,4320,3,1,1,yes,no,no,no,no,0,yes,semi-furnished
4655000,3745,3,1,2,yes,no,yes,no,no,0,no,furnished
4620000,4160,3,1,1,yes,yes,yes,no,yes,0,no,unfurnished
4620000,3880,3,2,2,yes,no,yes,no,no,2,no,semi-furnished
4620000,5680,3,1,2,yes,yes,no,no,yes,1,no,semi-furnished
4620000,2870,2,1,2,yes,yes,yes,no,no,0,yes,semi-furnished
4620000,5010,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
4613000,4510,4,2,2,yes,no,yes,no,no,0,no,semi-furnished
4585000,4000,3,1,2,yes,no,no,no,no,1,no,furnished
4585000,3840,3,1,2,yes,no,no,no,no,1,yes,semi-furnished
4550000,3760,3,1,1,yes,no,no,no,no,2,no,semi-furnished
4550000,3640,3,1,2,yes,no,no,no,yes,0,no,furnished
4550000,2550,3,1,2,yes,no,yes,no,no,0,no,furnished
4550000,5320,3,1,2,yes,yes,yes,no,no,0,yes,semi-furnished
4550000,5360,3,1,2,yes,no,no,no,no,2,yes,unfurnished
4550000,3520,3,1,1,yes,no,no,no,no,0,yes,semi-furnished
4550000,8400,4,1,4,yes,no,no,no,no,3,no,unfurnished
4543000,4100,2,2,1,yes,yes,yes,no,no,0,no,semi-furnished
4543000,4990,4,2,2,yes,yes,yes,no,no,0,yes,furnished
4515000,3510,3,1,3,yes,no,no,no,no,0,no,semi-furnished
4515000,3450,3,1,2,yes,no,yes,no,no,1,no,semi-furnished
4515000,9860,3,1,1,yes,no,no,no,no,0,no,semi-furnished
4515000,3520,2,1,2,yes,no,no,no,no,0,yes,furnished
4480000,4510,4,1,2,yes,no,no,no,yes,2,no,semi-furnished
4480000,5885,2,1,1,yes,no,no,no,yes,1,no,unfurnished
4480000,4000,3,1,2,yes,no,no,no,no,2,no,furnished
4480000,8250,3,1,1,yes,no,no,no,no,0,no,furnished
4480000,4040,3,1,2,yes,no,no,no,no,1,no,semi-furnished
4473000,6360,2,1,1,yes,no,yes,no,yes,1,no,furnished
4473000,3162,3,1,2,yes,no,no,no,yes,1,no,furnished
4473000,3510,3,1,2,yes,no,no,no,no,0,no,semi-furnished
4445000,3750,2,1,1,yes,yes,yes,no,no,0,no,semi-furnished
4410000,3968,3,1,2,no,no,no,no,no,0,no,semi-furnished
4410000,4900,2,1,2,yes,no,yes,no,no,0,no,semi-furnished
4403000,2880,3,1,2,yes,no,no,no,no,0,yes,semi-furnished
4403000,4880,3,1,1,yes,no,no,no,no,2,yes,unfurnished
4403000,4920,3,1,2,yes,no,no,no,no,1,no,semi-furnished
4382000,4950,4,1,2,yes,no,no,no,yes,0,no,semi-furnished
4375000,3900,3,1,2,yes,no,no,no,no,0,no,unfurnished
4340000,4500,3,2,3,yes,no,no,yes,no,1,no,furnished
4340000,1905,5,1,2,no,no,yes,no,no,0,no,semi-furnished
4340000,4075,3,1,1,yes,yes,yes,no,no,2,no,semi-furnished
4340000,3500,4,1,2,yes,no,no,no,no,2,no,furnished
4340000,6450,4,1,2,yes,no,no,no,no,0,no,semi-furnished
4319000,4032,2,1,1,yes,no,yes,no,no,0,no,furnished
4305000,4400,2,1,1,yes,no,no,no,no,1,no,semi-furnished
4305000,10360,2,1,1,yes,no,no,no,no,1,yes,semi-furnished
4277000,3400,3,1,2,yes,no,yes,no,no,2,yes,semi-furnished
4270000,6360,2,1,1,yes,no,no,no,no,0,no,furnished
4270000,6360,2,1,2,yes,no,no,no,no,0,no,unfurnished
4270000,4500,2,1,1,yes,no,no,no,yes,2,no,furnished
4270000,2175,3,1,2,no,yes,yes,no,yes,0,no,unfurnished
4270000,4360,4,1,2,yes,no,no,no,no,0,no,furnished
4270000,7770,2,1,1,yes,no,no,no,no,1,no,furnished
4235000,6650,3,1,2,yes,yes,no,no,no,0,no,semi-furnished
4235000,2787,3,1,1,yes,no,yes,no,no,0,yes,furnished
4200000,5500,3,1,2,yes,no,no,no,yes,0,no,unfurnished
4200000,5040,3,1,2,yes,no,yes,no,yes,0,no,unfurnished
4200000,5850,2,1,1,yes,yes,yes,no,no,2,no,semi-furnished
4200000,2610,4,3,2,no,no,no,no,no,0,no,semi-furnished
4200000,2953,3,1,2,yes,no,yes,no,yes,0,no,unfurnished
4200000,2747,4,2,2,no,no,no,no,no,0,no,semi-furnished
4200000,4410,2,1,1,no,no,no,no,no,1,no,unfurnished
4200000,4000,4,2,2,no,no,no,no,no,0,no,semi-furnished
4200000,2325,3,1,2,no,no,no,no,no,0,no,semi-furnished
4200000,4600,3,2,2,yes,no,no,no,yes,1,no,semi-furnished
4200000,3640,3,2,2,yes,no,yes,no,no,0,no,unfurnished
4200000,5800,3,1,1,yes,no,no,yes,no,2,no,semi-furnished
4200000,7000,3,1,1,yes,no,no,no,no,3,no,furnished
4200000,4079,3,1,3,yes,no,no,no,no,0,no,semi-furnished
4200000,3520,3,1,2,yes,no,no,no,no,0,yes,semi-furnished
4200000,2145,3,1,3,yes,no,no,no,no,1,yes,unfurnished
4200000,4500,3,1,1,yes,no,yes,no,no,0,no,furnished
4193000,8250,3,1,1,yes,no,yes,no,no,3,no,semi-furnished
4193000,3450,3,1,2,yes,no,no,no,no,1,no,semi-furnished
4165000,4840,3,1,2,yes,no,no,no,no,1,no,semi-furnished
4165000,4080,3,1,2,yes,no,no,no,no,2,no,semi-furnished
4165000,4046,3,1,2,yes,no,yes,no,no,1,no,semi-furnished
4130000,4632,4,1,2,yes,no,no,no,yes,0,no,semi-furnished
4130000,5985,3,1,1,yes,no,yes,no,no,0,no,semi-furnished
4123000,6060,2,1,1,yes,no,yes,no,no,1,no,semi-furnished
4098500,3600,3,1,1,yes,no,yes,no,yes,0,yes,furnished
4095000,3680,3,2,2,yes,no,no,no,no,0,no,semi-furnished
4095000,4040,2,1,2,yes,no,no,no,no,1,no,semi-furnished
4095000,5600,2,1,1,yes,no,no,no,yes,0,no,semi-furnished
4060000,5900,4,2,2,no,no,yes,no,no,1,no,unfurnished
4060000,4992,3,2,2,yes,no,no,no,no,2,no,unfurnished
4060000,4340,3,1,1,yes,no,no,no,no,0,no,semi-furnished
4060000,3000,4,1,3,yes,no,yes,no,yes,2,no,semi-furnished
4060000,4320,3,1,2,yes,no,no,no,no,2,yes,furnished
4025000,3630,3,2,2,yes,no,no,yes,no,2,no,semi-furnished
4025000,3460,3,2,1,yes,no,yes,no,yes,1,no,furnished
4025000,5400,3,1,1,yes,no,no,no,no,3,no,semi-furnished
4007500,4500,3,1,2,no,no,yes,no,yes,0,no,semi-furnished
4007500,3460,4,1,2,yes,no,no,no,yes,0,no,semi-furnished
3990000,4100,4,1,1,no,no,yes,no,no,0,no,unfurnished
3990000,6480,3,1,2,no,no,no,no,yes,1,no,semi-furnished
3990000,4500,3,2,2,no,no,yes,no,yes,0,no,semi-furnished
3990000,3960,3,1,2,yes,no,no,no,no,0,no,furnished
3990000,4050,2,1,2,yes,yes,yes,no,no,0,yes,unfurnished
3920000,7260,3,2,1,yes,yes,yes,no,no,3,no,furnished
3920000,5500,4,1,2,yes,yes,yes,no,no,0,no,semi-furnished
3920000,3000,3,1,2,yes,no,no,no,no,0,no,semi-furnished
3920000,3290,2,1,1,yes,no,no,yes,no,1,no,furnished
3920000,3816,2,1,1,yes,no,yes,no,yes,2,no,furnished
3920000,8080,3,1,1,yes,no,no,no,yes,2,no,semi-furnished
3920000,2145,4,2,1,yes,no,yes,no,no,0,yes,unfurnished
3885000,3780,2,1,2,yes,yes,yes,no,no,0,no,semi-furnished
3885000,3180,4,2,2,yes,no,no,no,no,0,no,furnished
3850000,5300,5,2,2,yes,no,no,no,no,0,no,semi-furnished
3850000,3180,2,2,1,yes,no,yes,no,no,2,no,semi-furnished
3850000,7152,3,1,2,yes,no,no,no,yes,0,no,furnished
3850000,4080,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3850000,3850,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3850000,2015,3,1,2,yes,no,yes,no,no,0,yes,semi-furnished
3850000,2176,2,1,2,yes,yes,no,no,no,0,yes,semi-furnished
3836000,3350,3,1,2,yes,no,no,no,no,0,no,unfurnished
3815000,3150,2,2,1,no,no,yes,no,no,0,no,semi-furnished
3780000,4820,3,1,2,yes,no,no,no,no,0,no,semi-furnished
3780000,3420,2,1,2,yes,no,no,yes,no,1,no,semi-furnished
3780000,3600,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3780000,5830,2,1,1,yes,no,no,no,no,2,no,unfurnished
3780000,2856,3,1,3,yes,no,no,no,no,0,yes,furnished
3780000,8400,2,1,1,yes,no,no,no,no,1,no,furnished
3773000,8250,3,1,1,yes,no,no,no,no,2,no,furnished
3773000,2520,5,2,1,no,no,yes,no,yes,1,no,furnished
3773000,6930,4,1,2,no,no,no,no,no,1,no,furnished
3745000,3480,2,1,1,yes,no,no,no,no,0,yes,semi-furnished
3710000,3600,3,1,1,yes,no,no,no,no,1,no,unfurnished
3710000,4040,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3710000,6020,3,1,1,yes,no,no,no,no,0,no,semi-furnished
3710000,4050,2,1,1,yes,no,no,no,no,0,no,furnished
3710000,3584,2,1,1,yes,no,no,yes,no,0,no,semi-furnished
3703000,3120,3,1,2,no,no,yes,yes,no,0,no,semi-furnished
3703000,5450,2,1,1,yes,no,no,no,no,0,no,furnished
3675000,3630,2,1,1,yes,no,yes,no,no,0,no,furnished
3675000,3630,2,1,1,yes,no,no,no,yes,0,no,unfurnished
3675000,5640,2,1,1,no,no,no,no,no,0,no,semi-furnished
3675000,3600,2,1,1,yes,no,no,no,no,0,no,furnished
3640000,4280,2,1,1,yes,no,no,no,yes,2,no,semi-furnished
3640000,3570,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
3640000,3180,3,1,2,no,no,yes,no,no,0,no,semi-furnished
3640000,3000,2,1,2,yes,no,no,no,yes,0,no,furnished
3640000,3520,2,2,1,yes,no,yes,no,no,0,no,semi-furnished
3640000,5960,3,1,2,yes,yes,yes,no,no,0,no,unfurnished
3640000,4130,3,2,2,yes,no,no,no,no,2,no,semi-furnished
3640000,2850,3,2,2,no,no,yes,no,no,0,yes,unfurnished
3640000,2275,3,1,3,yes,no,no,yes,yes,0,yes,semi-furnished
3633000,3520,3,1,1,yes,no,no,no,no,2,yes,unfurnished
3605000,4500,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3605000,4000,2,1,1,yes,no,no,no,no,0,yes,semi-furnished
3570000,3150,3,1,2,yes,no,yes,no,no,0,no,furnished
3570000,4500,4,2,2,yes,no,yes,no,no,2,no,furnished
3570000,4500,2,1,1,no,no,no,no,no,0,no,furnished
3570000,3640,2,1,1,yes,no,no,no,no,0,no,unfurnished
3535000,3850,3,1,1,yes,no,no,no,no,2,no,unfurnished
3500000,4240,3,1,2,yes,no,no,no,yes,0,no,semi-furnished
3500000,3650,3,1,2,yes,no,no,no,no,0,no,unfurnished
3500000,4600,4,1,2,yes,no,no,no,no,0,no,semi-furnished
3500000,2135,3,2,2,no,no,no,no,no,0,no,unfurnished
3500000,3036,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
3500000,3990,3,1,2,yes,no,no,no,no,0,no,semi-furnished
3500000,7424,3,1,1,no,no,no,no,no,0,no,unfurnished
3500000,3480,3,1,1,no,no,no,no,yes,0,no,unfurnished
3500000,3600,6,1,2,yes,no,no,no,no,1,no,unfurnished
3500000,3640,2,1,1,yes,no,no,no,no,1,no,semi-furnished
3500000,5900,2,1,1,yes,no,no,no,no,1,no,furnished
3500000,3120,3,1,2,yes,no,no,no,no,1,no,unfurnished
3500000,7350,2,1,1,yes,no,no,no,no,1,no,semi-furnished
3500000,3512,2,1,1,yes,no,no,no,no,1,yes,unfurnished
3500000,9500,3,1,2,yes,no,no,no,no,3,yes,unfurnished
3500000,5880,2,1,1,yes,no,no,no,no,0,no,unfurnished
3500000,12944,3,1,1,yes,no,no,no,no,0,no,unfurnished
3493000,4900,3,1,2,no,no,no,no,no,0,no,unfurnished
3465000,3060,3,1,1,yes,no,no,no,no,0,no,unfurnished
3465000,5320,2,1,1,yes,no,no,no,no,1,yes,unfurnished
3465000,2145,3,1,3,yes,no,no,no,no,0,yes,furnished
3430000,4000,2,1,1,yes,no,no,no,no,0,no,unfurnished
3430000,3185,2,1,1,yes,no,no,no,no,2,no,unfurnished
3430000,3850,3,1,1,yes,no,no,no,no,0,no,unfurnished
3430000,2145,3,1,3,yes,no,no,no,no,0,yes,furnished
3430000,2610,3,1,2,yes,no,yes,no,no,0,yes,unfurnished
3430000,1950,3,2,2,yes,no,yes,no,no,0,yes,unfurnished
3423000,4040,2,1,1,yes,no,no,no,no,0,no,unfurnished
3395000,4785,3,1,2,yes,yes,yes,no,yes,1,no,furnished
3395000,3450,3,1,1,yes,no,yes,no,no,2,no,unfurnished
3395000,3640,2,1,1,yes,no,no,no,no,0,no,furnished
3360000,3500,4,1,2,yes,no,no,no,yes,2,no,unfurnished
3360000,4960,4,1,3,no,no,no,no,no,0,no,semi-furnished
3360000,4120,2,1,2,yes,no,no,no,no,0,no,unfurnished
3360000,4750,2,1,1,yes,no,no,no,no,0,no,unfurnished
3360000,3720,2,1,1,no,no,no,no,yes,0,no,unfurnished
3360000,3750,3,1,1,yes,no,no,no,no,0,no,unfurnished
3360000,3100,3,1,2,no,no,yes,no,no,0,no,semi-furnished
3360000,3185,2,1,1,yes,no,yes,no,no,2,no,furnished
3353000,2700,3,1,1,no,no,no,no,no,0,no,furnished
3332000,2145,3,1,2,yes,no,yes,no,no,0,yes,furnished
3325000,4040,2,1,1,yes,no,no,no,no,1,no,unfurnished
3325000,4775,4,1,2,yes,no,no,no,no,0,no,unfurnished
3290000,2500,2,1,1,no,no,no,no,yes,0,no,unfurnished
3290000,3180,4,1,2,yes,no,yes,no,yes,0,no,unfurnished
3290000,6060,3,1,1,yes,yes,yes,no,no,0,no,furnished
3290000,3480,4,1,2,no,no,no,no,no,1,no,semi-furnished
3290000,3792,4,1,2,yes,no,no,no,no,0,no,semi-furnished
3290000,4040,2,1,1,yes,no,no,no,no,0,no,unfurnished
3290000,2145,3,1,2,yes,no,yes,no,no,0,yes,furnished
3290000,5880,3,1,1,yes,no,no,no,no,1,no,unfurnished
3255000,4500,2,1,1,no,no,no,no,no,0,no,semi-furnished
3255000,3930,2,1,1,no,no,no,no,no,0,no,unfurnished
3234000,3640,4,1,2,yes,no,yes,no,no,0,no,unfurnished
3220000,4370,3,1,2,yes,no,no,no,no,0,no,unfurnished
3220000,2684,2,1,1,yes,no,no,no,yes,1,no,unfurnished
3220000,4320,3,1,1,no,no,no,no,no,1,no,unfurnished
3220000,3120,3,1,2,no,no,no,no,no,0,no,furnished
3150000,3450,1,1,1,yes,no,no,no,no,0,no,furnished
3150000,3986,2,2,1,no,yes,yes,no,no,1,no,unfurnished
3150000,3500,2,1,1,no,no,yes,no,no,0,no,semi-furnished
3150000,4095,2,1,1,yes,no,no,no,no,2,no,semi-furnished
3150000,1650,3,1,2,no,no,yes,no,no,0,no,unfurnished
3150000,3450,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
3150000,6750,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3150000,9000,3,1,2,yes,no,no,no,no,2,no,semi-furnished
3150000,3069,2,1,1,yes,no,no,no,no,1,no,unfurnished
3143000,4500,3,1,2,yes,no,no,no,yes,0,no,unfurnished
3129000,5495,3,1,1,yes,no,yes,no,no,0,no,unfurnished
3118850,2398,3,1,1,yes,no,no,no,no,0,yes,semi-furnished
3115000,3000,3,1,1,no,no,no,no,yes,0,no,unfurnished
3115000,3850,3,1,2,yes,no,no,no,no,0,no,unfurnished
3115000,3500,2,1,1,yes,no,no,no,no,0,no,unfurnished
3087000,8100,2,1,1,yes,no,no,no,no,1,no,unfurnished
3080000,4960,2,1,1,yes,no,yes,no,yes,0,no,unfurnished
3080000,2160,3,1,2,no,no,yes,no,no,0,no,semi-furnished
3080000,3090,2,1,1,yes,yes,yes,no,no,0,no,unfurnished
3080000,4500,2,1,2,yes,no,no,yes,no,1,no,semi-furnished
3045000,3800,2,1,1,yes,no,no,no,no,0,no,unfurnished
3010000,3090,3,1,2,no,no,no,no,no,0,no,semi-furnished
3010000,3240,3,1,2,yes,no,no,no,no,2,no,semi-furnished
3010000,2835,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3010000,4600,2,1,1,yes,no,no,no,no,0,no,furnished
3010000,5076,3,1,1,no,no,no,no,no,0,no,unfurnished
3010000,3750,3,1,2,yes,no,no,no,no,0,no,unfurnished
3010000,3630,4,1,2,yes,no,no,no,no,3,no,semi-furnished
3003000,8050,2,1,1,yes,no,no,no,no,0,no,unfurnished
2975000,4352,4,1,2,no,no,no,no,no,1,no,unfurnished
2961000,3000,2,1,2,yes,no,no,no,no,0,no,semi-furnished
2940000,5850,3,1,2,yes,no,yes,no,no,1,no,unfurnished
2940000,4960,2,1,1,yes,no,no,no,no,0,no,unfurnished
2940000,3600,3,1,2,no,no,no,no,no,1,no,unfurnished
2940000,3660,4,1,2,no,no,no,no,no,0,no,unfurnished
2940000,3480,3,1,2,no,no,no,no,no,1,no,semi-furnished
2940000,2700,2,1,1,no,no,no,no,no,0,no,furnished
2940000,3150,3,1,2,no,no,no,no,no,0,no,unfurnished
2940000,6615,3,1,2,yes,no,no,no,no,0,no,semi-furnished
2870000,3040,2,1,1,no,no,no,no,no,0,no,unfurnished
2870000,3630,2,1,1,yes,no,no,no,no,0,no,unfurnished
2870000,6000,2,1,1,yes,no,no,no,no,0,no,semi-furnished
2870000,5400,4,1,2,yes,no,no,no,no,0,no,unfurnished
2852500,5200,4,1,3,yes,no,no,no,no,0,no,unfurnished
2835000,3300,3,1,2,no,no,no,no,no,1,no,semi-furnished
2835000,4350,3,1,2,no,no,no,yes,no,1,no,unfurnished
2835000,2640,2,1,1,no,no,no,no,no,1,no,furnished
2800000,2650,3,1,2,yes,no,yes,no,no,1,no,unfurnished
2800000,3960,3,1,1,yes,no,no,no,no,0,no,furnished
2730000,6800,2,1,1,yes,no,no,no,no,0,no,unfurnished
2730000,4000,3,1,2,yes,no,no,no,no,1,no,unfurnished
2695000,4000,2,1,1,yes,no,no,no,no,0,no,unfurnished
2660000,3934,2,1,1,yes,no,no,no,no,0,no,unfurnished
2660000,2000,2,1,2,yes,no,no,no,no,0,no,semi-furnished
2660000,3630,3,3,2,no,yes,no,no,no,0,no,unfurnished
2660000,2800,3,1,1,yes,no,no,no,no,0,no,unfurnished
2660000,2430,3,1,1,no,no,no,no,no,0,no,unfurnished
2660000,3480,2,1,1,yes,no,no,no,no,1,no,semi-furnished
2660000,4000,3,1,1,yes,no,no,no,no,0,no,semi-furnished
2653000,3185,2,1,1,yes,no,no,no,yes,0,no,unfurnished
2653000,4000,3,1,2,yes,no,no,no,yes,0,no,unfurnished
2604000,2910,2,1,1,no,no,no,no,no,0,no,unfurnished
2590000,3600,2,1,1,yes,no,no,no,no,0,no,unfurnished
2590000,4400,2,1,1,yes,no,no,no,no,0,no,unfurnished
2590000,3600,2,2,2,yes,no,yes,no,no,1,no,furnished
2520000,2880,3,1,1,no,no,no,no,no,0,no,unfurnished
2520000,3180,3,1,1,no,no,no,no,no,0,no,unfurnished
2520000,3000,2,1,2,yes,no,no,no,no,0,no,furnished
2485000,4400,3,1,2,yes,no,no,no,no,0,no,unfurnished
2485000,3000,3,1,2,no,no,no,no,no,0,no,semi-furnished
2450000,3210,3,1,2,yes,no,yes,no,no,0,no,unfurnished
2450000,3240,2,1,1,no,yes,no,no,no,1,no,unfurnished
2450000,3000,2,1,1,yes,no,no,no,no,1,no,unfurnished
2450000,3500,2,1,1,yes,yes,no,no,no,0,no,unfurnished
2450000,4840,2,1,2,yes,no,no,no,no,0,no,unfurnished
2450000,7700,2,1,1,yes,no,no,no,no,0,no,unfurnished
2408000,3635,2,1,1,no,no,no,no,no,0,no,unfurnished
2380000,2475,3,1,2,yes,no,no,no,no,0,no,furnished
2380000,2787,4,2,2,yes,no,no,no,no,0,no,furnished
2380000,3264,2,1,1,yes,no,no,no,no,0,no,unfurnished
2345000,3640,2,1,1,yes,no,no,no,no,0,no,unfurnished
2310000,3180,2,1,1,yes,no,no,no,no,0,no,unfurnished
2275000,1836,2,1,1,no,no,yes,no,no,0,no,semi-furnished
2275000,3970,1,1,1,no,no,no,no,no,0,no,unfurnished
2275000,3970,3,1,2,yes,no,yes,no,no,0,no,unfurnished
2240000,1950,3,1,1,no,no,no,yes,no,0,no,unfurnished
2233000,5300,3,1,1,no,no,no,no,yes,0,yes,unfurnished
2135000,3000,2,1,1,no,no,no,no,no,0,no,unfurnished
2100000,2400,3,1,2,yes,no,no,no,no,0,no,unfurnished
2100000,3000,4,1,2,yes,no,no,no,no,0,no,unfurnished
2100000,3360,2,1,1,yes,no,no,no,no,1,no,unfurnished
1960000,3420,5,1,2,no,no,no,no,no,0,no,unfurnished
1890000,1700,3,1,2,yes,no,no,no,no,0,no,unfurnished
1890000,3649,2,1,1,yes,no,no,no,no,0,no,unfurnished
1855000,2990,2,1,1,no,no,no,no,no,1,no,unfurnished
1820000,3000,2,1,1,yes,no,yes,no,no,2,no,unfurnished
1767150,2400,3,1,1,no,no,no,no,no,0,no,semi-furnished
1750000,3620,2,1,1,yes,no,no,no,no,0,no,unfurnished
1750000,2910,3,1,1,no,no,no,no,no,0,no,furnished
1750000,3850,3,1,2,yes,no,no,no,no,0,no,unfurnished
1 price area bedrooms bathrooms stories mainroad guestroom basement hotwaterheating airconditioning parking prefarea furnishingstatus
2 13300000 7420 4 2 3 yes no no no yes 2 yes furnished
3 12250000 8960 4 4 4 yes no no no yes 3 no furnished
4 12250000 9960 3 2 2 yes no yes no no 2 yes semi-furnished
5 12215000 7500 4 2 2 yes no yes no yes 3 yes furnished
6 11410000 7420 4 1 2 yes yes yes no yes 2 no furnished
7 10850000 7500 3 3 1 yes no yes no yes 2 yes semi-furnished
8 10150000 8580 4 3 4 yes no no no yes 2 yes semi-furnished
9 10150000 16200 5 3 2 yes no no no no 0 no unfurnished
10 9870000 8100 4 1 2 yes yes yes no yes 2 yes furnished
11 9800000 5750 3 2 4 yes yes no no yes 1 yes unfurnished
12 9800000 13200 3 1 2 yes no yes no yes 2 yes furnished
13 9681000 6000 4 3 2 yes yes yes yes no 2 no semi-furnished
14 9310000 6550 4 2 2 yes no no no yes 1 yes semi-furnished
15 9240000 3500 4 2 2 yes no no yes no 2 no furnished
16 9240000 7800 3 2 2 yes no no no no 0 yes semi-furnished
17 9100000 6000 4 1 2 yes no yes no no 2 no semi-furnished
18 9100000 6600 4 2 2 yes yes yes no yes 1 yes unfurnished
19 8960000 8500 3 2 4 yes no no no yes 2 no furnished
20 8890000 4600 3 2 2 yes yes no no yes 2 no furnished
21 8855000 6420 3 2 2 yes no no no yes 1 yes semi-furnished
22 8750000 4320 3 1 2 yes no yes yes no 2 no semi-furnished
23 8680000 7155 3 2 1 yes yes yes no yes 2 no unfurnished
24 8645000 8050 3 1 1 yes yes yes no yes 1 no furnished
25 8645000 4560 3 2 2 yes yes yes no yes 1 no furnished
26 8575000 8800 3 2 2 yes no no no yes 2 no furnished
27 8540000 6540 4 2 2 yes yes yes no yes 2 yes furnished
28 8463000 6000 3 2 4 yes yes yes no yes 0 yes semi-furnished
29 8400000 8875 3 1 1 yes no no no no 1 no semi-furnished
30 8400000 7950 5 2 2 yes no yes yes no 2 no unfurnished
31 8400000 5500 4 2 2 yes no yes no yes 1 yes semi-furnished
32 8400000 7475 3 2 4 yes no no no yes 2 no unfurnished
33 8400000 7000 3 1 4 yes no no no yes 2 no semi-furnished
34 8295000 4880 4 2 2 yes no no no yes 1 yes furnished
35 8190000 5960 3 3 2 yes yes yes no no 1 no unfurnished
36 8120000 6840 5 1 2 yes yes yes no yes 1 no furnished
37 8080940 7000 3 2 4 yes no no no yes 2 no furnished
38 8043000 7482 3 2 3 yes no no yes no 1 yes furnished
39 7980000 9000 4 2 4 yes no no no yes 2 no furnished
40 7962500 6000 3 1 4 yes yes no no yes 2 no unfurnished
41 7910000 6000 4 2 4 yes no no no yes 1 no semi-furnished
42 7875000 6550 3 1 2 yes no yes no yes 0 yes furnished
43 7840000 6360 3 2 4 yes no no no yes 0 yes furnished
44 7700000 6480 3 2 4 yes no no no yes 2 no unfurnished
45 7700000 6000 4 2 4 yes no no no no 2 no semi-furnished
46 7560000 6000 4 2 4 yes no no no yes 1 no furnished
47 7560000 6000 3 2 3 yes no no no yes 0 no semi-furnished
48 7525000 6000 3 2 4 yes no no no yes 1 no furnished
49 7490000 6600 3 1 4 yes no no no yes 3 yes furnished
50 7455000 4300 3 2 2 yes no yes no no 1 no unfurnished
51 7420000 7440 3 2 1 yes yes yes no yes 0 yes semi-furnished
52 7420000 7440 3 2 4 yes no no no no 1 yes unfurnished
53 7420000 6325 3 1 4 yes no no no yes 1 no unfurnished
54 7350000 6000 4 2 4 yes yes no no yes 1 no furnished
55 7350000 5150 3 2 4 yes no no no yes 2 no semi-furnished
56 7350000 6000 3 2 2 yes yes no no yes 1 no semi-furnished
57 7350000 6000 3 1 2 yes no no no yes 1 no unfurnished
58 7343000 11440 4 1 2 yes no yes no no 1 yes semi-furnished
59 7245000 9000 4 2 4 yes yes no no yes 1 yes furnished
60 7210000 7680 4 2 4 yes yes no no yes 1 no semi-furnished
61 7210000 6000 3 2 4 yes yes no no yes 1 no furnished
62 7140000 6000 3 2 2 yes yes no no no 1 no semi-furnished
63 7070000 8880 2 1 1 yes no no no yes 1 no semi-furnished
64 7070000 6240 4 2 2 yes no no no yes 1 no furnished
65 7035000 6360 4 2 3 yes no no no yes 2 yes furnished
66 7000000 11175 3 1 1 yes no yes no yes 1 yes furnished
67 6930000 8880 3 2 2 yes no yes no yes 1 no furnished
68 6930000 13200 2 1 1 yes no yes yes no 1 no furnished
69 6895000 7700 3 2 1 yes no no no no 2 no unfurnished
70 6860000 6000 3 1 1 yes no no no yes 1 no furnished
71 6790000 12090 4 2 2 yes no no no no 2 yes furnished
72 6790000 4000 3 2 2 yes no yes no yes 0 yes semi-furnished
73 6755000 6000 4 2 4 yes no no no yes 0 no unfurnished
74 6720000 5020 3 1 4 yes no no no yes 0 yes unfurnished
75 6685000 6600 2 2 4 yes no yes no no 0 yes furnished
76 6650000 4040 3 1 2 yes no yes yes no 1 no furnished
77 6650000 4260 4 2 2 yes no no yes no 0 no semi-furnished
78 6650000 6420 3 2 3 yes no no no yes 0 yes furnished
79 6650000 6500 3 2 3 yes no no no yes 0 yes furnished
80 6650000 5700 3 1 1 yes yes yes no yes 2 yes furnished
81 6650000 6000 3 2 3 yes yes no no yes 0 no furnished
82 6629000 6000 3 1 2 yes no no yes no 1 yes semi-furnished
83 6615000 4000 3 2 2 yes no yes no yes 1 no semi-furnished
84 6615000 10500 3 2 1 yes no yes no yes 1 yes furnished
85 6580000 6000 3 2 4 yes no no no yes 0 no semi-furnished
86 6510000 3760 3 1 2 yes no no yes no 2 no semi-furnished
87 6510000 8250 3 2 3 yes no no no yes 0 no furnished
88 6510000 6670 3 1 3 yes no yes no no 0 yes unfurnished
89 6475000 3960 3 1 1 yes no yes no no 2 no semi-furnished
90 6475000 7410 3 1 1 yes yes yes no yes 2 yes unfurnished
91 6440000 8580 5 3 2 yes no no no no 2 no furnished
92 6440000 5000 3 1 2 yes no no no yes 0 no semi-furnished
93 6419000 6750 2 1 1 yes yes yes no no 2 yes furnished
94 6405000 4800 3 2 4 yes yes no no yes 0 no furnished
95 6300000 7200 3 2 1 yes no yes no yes 3 no semi-furnished
96 6300000 6000 4 2 4 yes no no no no 1 no semi-furnished
97 6300000 4100 3 2 3 yes no no no yes 2 no semi-furnished
98 6300000 9000 3 1 1 yes no yes no no 1 yes furnished
99 6300000 6400 3 1 1 yes yes yes no yes 1 yes semi-furnished
100 6293000 6600 3 2 3 yes no no no yes 0 yes unfurnished
101 6265000 6000 4 1 3 yes yes yes no no 0 yes unfurnished
102 6230000 6600 3 2 1 yes no yes no yes 0 yes unfurnished
103 6230000 5500 3 1 3 yes no no no no 1 yes unfurnished
104 6195000 5500 3 2 4 yes yes no no yes 1 no semi-furnished
105 6195000 6350 3 2 3 yes yes no no yes 0 no furnished
106 6195000 5500 3 2 1 yes yes yes no no 2 yes furnished
107 6160000 4500 3 1 4 yes no no no yes 0 no unfurnished
108 6160000 5450 4 2 1 yes no yes no yes 0 yes semi-furnished
109 6125000 6420 3 1 3 yes no yes no no 0 yes unfurnished
110 6107500 3240 4 1 3 yes no no no no 1 no semi-furnished
111 6090000 6615 4 2 2 yes yes no yes no 1 no semi-furnished
112 6090000 6600 3 1 1 yes yes yes no no 2 yes semi-furnished
113 6090000 8372 3 1 3 yes no no no yes 2 no unfurnished
114 6083000 4300 6 2 2 yes no no no no 0 no furnished
115 6083000 9620 3 1 1 yes no yes no no 2 yes furnished
116 6020000 6800 2 1 1 yes yes yes no no 2 no furnished
117 6020000 8000 3 1 1 yes yes yes no yes 2 yes semi-furnished
118 6020000 6900 3 2 1 yes yes yes no no 0 yes unfurnished
119 5950000 3700 4 1 2 yes yes no no yes 0 no furnished
120 5950000 6420 3 1 1 yes no yes no yes 0 yes furnished
121 5950000 7020 3 1 1 yes no yes no yes 2 yes semi-furnished
122 5950000 6540 3 1 1 yes yes yes no no 2 yes furnished
123 5950000 7231 3 1 2 yes yes yes no yes 0 yes semi-furnished
124 5950000 6254 4 2 1 yes no yes no no 1 yes semi-furnished
125 5950000 7320 4 2 2 yes no no no no 0 no furnished
126 5950000 6525 3 2 4 yes no no no no 1 no furnished
127 5943000 15600 3 1 1 yes no no no yes 2 no semi-furnished
128 5880000 7160 3 1 1 yes no yes no no 2 yes unfurnished
129 5880000 6500 3 2 3 yes no no no yes 0 no unfurnished
130 5873000 5500 3 1 3 yes yes no no yes 1 no furnished
131 5873000 11460 3 1 3 yes no no no no 2 yes semi-furnished
132 5866000 4800 3 1 1 yes yes yes no no 0 no unfurnished
133 5810000 5828 4 1 4 yes yes no no no 0 no semi-furnished
134 5810000 5200 3 1 3 yes no no no yes 0 no semi-furnished
135 5810000 4800 3 1 3 yes no no no yes 0 no unfurnished
136 5803000 7000 3 1 1 yes no yes no no 2 yes semi-furnished
137 5775000 6000 3 2 4 yes no no no yes 0 no unfurnished
138 5740000 5400 4 2 2 yes no no no yes 2 no unfurnished
139 5740000 4640 4 1 2 yes no no no no 1 no semi-furnished
140 5740000 5000 3 1 3 yes no no no yes 0 no semi-furnished
141 5740000 6360 3 1 1 yes yes yes no yes 2 yes furnished
142 5740000 5800 3 2 4 yes no no no yes 0 no unfurnished
143 5652500 6660 4 2 2 yes yes yes no no 1 yes semi-furnished
144 5600000 10500 4 2 2 yes no no no no 1 no semi-furnished
145 5600000 4800 5 2 3 no no yes yes no 0 no unfurnished
146 5600000 4700 4 1 2 yes yes yes no yes 1 no furnished
147 5600000 5000 3 1 4 yes no no no no 0 no furnished
148 5600000 10500 2 1 1 yes no no no no 1 no semi-furnished
149 5600000 5500 3 2 2 yes no no no no 1 no semi-furnished
150 5600000 6360 3 1 3 yes no no no no 0 yes semi-furnished
151 5600000 6600 4 2 1 yes no yes no no 0 yes semi-furnished
152 5600000 5136 3 1 2 yes yes yes no yes 0 yes unfurnished
153 5565000 4400 4 1 2 yes no no no yes 2 yes semi-furnished
154 5565000 5400 5 1 2 yes yes yes no yes 0 yes furnished
155 5530000 3300 3 3 2 yes no yes no no 0 no semi-furnished
156 5530000 3650 3 2 2 yes no no no no 2 no semi-furnished
157 5530000 6100 3 2 1 yes no yes no no 2 yes furnished
158 5523000 6900 3 1 1 yes yes yes no no 0 yes semi-furnished
159 5495000 2817 4 2 2 no yes yes no no 1 no furnished
160 5495000 7980 3 1 1 yes no no no no 2 no semi-furnished
161 5460000 3150 3 2 1 yes yes yes no yes 0 no furnished
162 5460000 6210 4 1 4 yes yes no no yes 0 no furnished
163 5460000 6100 3 1 3 yes yes no no yes 0 yes semi-furnished
164 5460000 6600 4 2 2 yes yes yes no no 0 yes semi-furnished
165 5425000 6825 3 1 1 yes yes yes no yes 0 yes semi-furnished
166 5390000 6710 3 2 2 yes yes yes no no 1 yes furnished
167 5383000 6450 3 2 1 yes yes yes yes no 0 no unfurnished
168 5320000 7800 3 1 1 yes no yes no yes 2 yes unfurnished
169 5285000 4600 2 2 1 yes no no no yes 2 no semi-furnished
170 5250000 4260 4 1 2 yes no yes no yes 0 no furnished
171 5250000 6540 4 2 2 no no no no yes 0 no semi-furnished
172 5250000 5500 3 2 1 yes no yes no no 0 no semi-furnished
173 5250000 10269 3 1 1 yes no no no no 1 yes semi-furnished
174 5250000 8400 3 1 2 yes yes yes no yes 2 yes unfurnished
175 5250000 5300 4 2 1 yes no no no yes 0 yes unfurnished
176 5250000 3800 3 1 2 yes yes yes no no 1 yes unfurnished
177 5250000 9800 4 2 2 yes yes no no no 2 no semi-furnished
178 5250000 8520 3 1 1 yes no no no yes 2 no furnished
179 5243000 6050 3 1 1 yes no yes no no 0 yes semi-furnished
180 5229000 7085 3 1 1 yes yes yes no no 2 yes semi-furnished
181 5215000 3180 3 2 2 yes no no no no 2 no semi-furnished
182 5215000 4500 4 2 1 no no yes no yes 2 no semi-furnished
183 5215000 7200 3 1 2 yes yes yes no no 1 yes furnished
184 5145000 3410 3 1 2 no no no no yes 0 no semi-furnished
185 5145000 7980 3 1 1 yes no no no no 1 yes semi-furnished
186 5110000 3000 3 2 2 yes yes yes no no 0 no furnished
187 5110000 3000 3 1 2 yes no yes no no 0 no unfurnished
188 5110000 11410 2 1 2 yes no no no no 0 yes furnished
189 5110000 6100 3 1 1 yes no yes no yes 0 yes semi-furnished
190 5075000 5720 2 1 2 yes no no no yes 0 yes unfurnished
191 5040000 3540 2 1 1 no yes yes no no 0 no semi-furnished
192 5040000 7600 4 1 2 yes no no no yes 2 no furnished
193 5040000 10700 3 1 2 yes yes yes no no 0 no semi-furnished
194 5040000 6600 3 1 1 yes yes yes no no 0 yes furnished
195 5033000 4800 2 1 1 yes yes yes no no 0 no semi-furnished
196 5005000 8150 3 2 1 yes yes yes no no 0 no semi-furnished
197 4970000 4410 4 3 2 yes no yes no no 2 no semi-furnished
198 4970000 7686 3 1 1 yes yes yes yes no 0 no semi-furnished
199 4956000 2800 3 2 2 no no yes no yes 1 no semi-furnished
200 4935000 5948 3 1 2 yes no no no yes 0 no semi-furnished
201 4907000 4200 3 1 2 yes no no no no 1 no furnished
202 4900000 4520 3 1 2 yes no yes no yes 0 no semi-furnished
203 4900000 4095 3 1 2 no yes yes no yes 0 no semi-furnished
204 4900000 4120 2 1 1 yes no yes no no 1 no semi-furnished
205 4900000 5400 4 1 2 yes no no no no 0 no semi-furnished
206 4900000 4770 3 1 1 yes yes yes no no 0 no semi-furnished
207 4900000 6300 3 1 1 yes no no no yes 2 no semi-furnished
208 4900000 5800 2 1 1 yes yes yes no yes 0 no semi-furnished
209 4900000 3000 3 1 2 yes no yes no yes 0 no semi-furnished
210 4900000 2970 3 1 3 yes no no no no 0 no semi-furnished
211 4900000 6720 3 1 1 yes no no no no 0 no unfurnished
212 4900000 4646 3 1 2 yes yes yes no no 2 no semi-furnished
213 4900000 12900 3 1 1 yes no no no no 2 no furnished
214 4893000 3420 4 2 2 yes no yes no yes 2 no semi-furnished
215 4893000 4995 4 2 1 yes no yes no no 0 no semi-furnished
216 4865000 4350 2 1 1 yes no yes no no 0 no unfurnished
217 4830000 4160 3 1 3 yes no no no no 0 no unfurnished
218 4830000 6040 3 1 1 yes no no no no 2 yes semi-furnished
219 4830000 6862 3 1 2 yes no no no yes 2 yes furnished
220 4830000 4815 2 1 1 yes no no no yes 0 yes semi-furnished
221 4795000 7000 3 1 2 yes no yes no no 0 no unfurnished
222 4795000 8100 4 1 4 yes no yes no yes 2 no semi-furnished
223 4767000 3420 4 2 2 yes no no no no 0 no semi-furnished
224 4760000 9166 2 1 1 yes no yes no yes 2 no semi-furnished
225 4760000 6321 3 1 2 yes no yes no yes 1 no furnished
226 4760000 10240 2 1 1 yes no no no yes 2 yes unfurnished
227 4753000 6440 2 1 1 yes no no no yes 3 no semi-furnished
228 4690000 5170 3 1 4 yes no no no yes 0 no semi-furnished
229 4690000 6000 2 1 1 yes no yes no yes 1 no furnished
230 4690000 3630 3 1 2 yes no no no no 2 no semi-furnished
231 4690000 9667 4 2 2 yes yes yes no no 1 no semi-furnished
232 4690000 5400 2 1 2 yes no no no no 0 yes semi-furnished
233 4690000 4320 3 1 1 yes no no no no 0 yes semi-furnished
234 4655000 3745 3 1 2 yes no yes no no 0 no furnished
235 4620000 4160 3 1 1 yes yes yes no yes 0 no unfurnished
236 4620000 3880 3 2 2 yes no yes no no 2 no semi-furnished
237 4620000 5680 3 1 2 yes yes no no yes 1 no semi-furnished
238 4620000 2870 2 1 2 yes yes yes no no 0 yes semi-furnished
239 4620000 5010 3 1 2 yes no yes no no 0 no semi-furnished
240 4613000 4510 4 2 2 yes no yes no no 0 no semi-furnished
241 4585000 4000 3 1 2 yes no no no no 1 no furnished
242 4585000 3840 3 1 2 yes no no no no 1 yes semi-furnished
243 4550000 3760 3 1 1 yes no no no no 2 no semi-furnished
244 4550000 3640 3 1 2 yes no no no yes 0 no furnished
245 4550000 2550 3 1 2 yes no yes no no 0 no furnished
246 4550000 5320 3 1 2 yes yes yes no no 0 yes semi-furnished
247 4550000 5360 3 1 2 yes no no no no 2 yes unfurnished
248 4550000 3520 3 1 1 yes no no no no 0 yes semi-furnished
249 4550000 8400 4 1 4 yes no no no no 3 no unfurnished
250 4543000 4100 2 2 1 yes yes yes no no 0 no semi-furnished
251 4543000 4990 4 2 2 yes yes yes no no 0 yes furnished
252 4515000 3510 3 1 3 yes no no no no 0 no semi-furnished
253 4515000 3450 3 1 2 yes no yes no no 1 no semi-furnished
254 4515000 9860 3 1 1 yes no no no no 0 no semi-furnished
255 4515000 3520 2 1 2 yes no no no no 0 yes furnished
256 4480000 4510 4 1 2 yes no no no yes 2 no semi-furnished
257 4480000 5885 2 1 1 yes no no no yes 1 no unfurnished
258 4480000 4000 3 1 2 yes no no no no 2 no furnished
259 4480000 8250 3 1 1 yes no no no no 0 no furnished
260 4480000 4040 3 1 2 yes no no no no 1 no semi-furnished
261 4473000 6360 2 1 1 yes no yes no yes 1 no furnished
262 4473000 3162 3 1 2 yes no no no yes 1 no furnished
263 4473000 3510 3 1 2 yes no no no no 0 no semi-furnished
264 4445000 3750 2 1 1 yes yes yes no no 0 no semi-furnished
265 4410000 3968 3 1 2 no no no no no 0 no semi-furnished
266 4410000 4900 2 1 2 yes no yes no no 0 no semi-furnished
267 4403000 2880 3 1 2 yes no no no no 0 yes semi-furnished
268 4403000 4880 3 1 1 yes no no no no 2 yes unfurnished
269 4403000 4920 3 1 2 yes no no no no 1 no semi-furnished
270 4382000 4950 4 1 2 yes no no no yes 0 no semi-furnished
271 4375000 3900 3 1 2 yes no no no no 0 no unfurnished
272 4340000 4500 3 2 3 yes no no yes no 1 no furnished
273 4340000 1905 5 1 2 no no yes no no 0 no semi-furnished
274 4340000 4075 3 1 1 yes yes yes no no 2 no semi-furnished
275 4340000 3500 4 1 2 yes no no no no 2 no furnished
276 4340000 6450 4 1 2 yes no no no no 0 no semi-furnished
277 4319000 4032 2 1 1 yes no yes no no 0 no furnished
278 4305000 4400 2 1 1 yes no no no no 1 no semi-furnished
279 4305000 10360 2 1 1 yes no no no no 1 yes semi-furnished
280 4277000 3400 3 1 2 yes no yes no no 2 yes semi-furnished
281 4270000 6360 2 1 1 yes no no no no 0 no furnished
282 4270000 6360 2 1 2 yes no no no no 0 no unfurnished
283 4270000 4500 2 1 1 yes no no no yes 2 no furnished
284 4270000 2175 3 1 2 no yes yes no yes 0 no unfurnished
285 4270000 4360 4 1 2 yes no no no no 0 no furnished
286 4270000 7770 2 1 1 yes no no no no 1 no furnished
287 4235000 6650 3 1 2 yes yes no no no 0 no semi-furnished
288 4235000 2787 3 1 1 yes no yes no no 0 yes furnished
289 4200000 5500 3 1 2 yes no no no yes 0 no unfurnished
290 4200000 5040 3 1 2 yes no yes no yes 0 no unfurnished
291 4200000 5850 2 1 1 yes yes yes no no 2 no semi-furnished
292 4200000 2610 4 3 2 no no no no no 0 no semi-furnished
293 4200000 2953 3 1 2 yes no yes no yes 0 no unfurnished
294 4200000 2747 4 2 2 no no no no no 0 no semi-furnished
295 4200000 4410 2 1 1 no no no no no 1 no unfurnished
296 4200000 4000 4 2 2 no no no no no 0 no semi-furnished
297 4200000 2325 3 1 2 no no no no no 0 no semi-furnished
298 4200000 4600 3 2 2 yes no no no yes 1 no semi-furnished
299 4200000 3640 3 2 2 yes no yes no no 0 no unfurnished
300 4200000 5800 3 1 1 yes no no yes no 2 no semi-furnished
301 4200000 7000 3 1 1 yes no no no no 3 no furnished
302 4200000 4079 3 1 3 yes no no no no 0 no semi-furnished
303 4200000 3520 3 1 2 yes no no no no 0 yes semi-furnished
304 4200000 2145 3 1 3 yes no no no no 1 yes unfurnished
305 4200000 4500 3 1 1 yes no yes no no 0 no furnished
306 4193000 8250 3 1 1 yes no yes no no 3 no semi-furnished
307 4193000 3450 3 1 2 yes no no no no 1 no semi-furnished
308 4165000 4840 3 1 2 yes no no no no 1 no semi-furnished
309 4165000 4080 3 1 2 yes no no no no 2 no semi-furnished
310 4165000 4046 3 1 2 yes no yes no no 1 no semi-furnished
311 4130000 4632 4 1 2 yes no no no yes 0 no semi-furnished
312 4130000 5985 3 1 1 yes no yes no no 0 no semi-furnished
313 4123000 6060 2 1 1 yes no yes no no 1 no semi-furnished
314 4098500 3600 3 1 1 yes no yes no yes 0 yes furnished
315 4095000 3680 3 2 2 yes no no no no 0 no semi-furnished
316 4095000 4040 2 1 2 yes no no no no 1 no semi-furnished
317 4095000 5600 2 1 1 yes no no no yes 0 no semi-furnished
318 4060000 5900 4 2 2 no no yes no no 1 no unfurnished
319 4060000 4992 3 2 2 yes no no no no 2 no unfurnished
320 4060000 4340 3 1 1 yes no no no no 0 no semi-furnished
321 4060000 3000 4 1 3 yes no yes no yes 2 no semi-furnished
322 4060000 4320 3 1 2 yes no no no no 2 yes furnished
323 4025000 3630 3 2 2 yes no no yes no 2 no semi-furnished
324 4025000 3460 3 2 1 yes no yes no yes 1 no furnished
325 4025000 5400 3 1 1 yes no no no no 3 no semi-furnished
326 4007500 4500 3 1 2 no no yes no yes 0 no semi-furnished
327 4007500 3460 4 1 2 yes no no no yes 0 no semi-furnished
328 3990000 4100 4 1 1 no no yes no no 0 no unfurnished
329 3990000 6480 3 1 2 no no no no yes 1 no semi-furnished
330 3990000 4500 3 2 2 no no yes no yes 0 no semi-furnished
331 3990000 3960 3 1 2 yes no no no no 0 no furnished
332 3990000 4050 2 1 2 yes yes yes no no 0 yes unfurnished
333 3920000 7260 3 2 1 yes yes yes no no 3 no furnished
334 3920000 5500 4 1 2 yes yes yes no no 0 no semi-furnished
335 3920000 3000 3 1 2 yes no no no no 0 no semi-furnished
336 3920000 3290 2 1 1 yes no no yes no 1 no furnished
337 3920000 3816 2 1 1 yes no yes no yes 2 no furnished
338 3920000 8080 3 1 1 yes no no no yes 2 no semi-furnished
339 3920000 2145 4 2 1 yes no yes no no 0 yes unfurnished
340 3885000 3780 2 1 2 yes yes yes no no 0 no semi-furnished
341 3885000 3180 4 2 2 yes no no no no 0 no furnished
342 3850000 5300 5 2 2 yes no no no no 0 no semi-furnished
343 3850000 3180 2 2 1 yes no yes no no 2 no semi-furnished
344 3850000 7152 3 1 2 yes no no no yes 0 no furnished
345 3850000 4080 2 1 1 yes no no no no 0 no semi-furnished
346 3850000 3850 2 1 1 yes no no no no 0 no semi-furnished
347 3850000 2015 3 1 2 yes no yes no no 0 yes semi-furnished
348 3850000 2176 2 1 2 yes yes no no no 0 yes semi-furnished
349 3836000 3350 3 1 2 yes no no no no 0 no unfurnished
350 3815000 3150 2 2 1 no no yes no no 0 no semi-furnished
351 3780000 4820 3 1 2 yes no no no no 0 no semi-furnished
352 3780000 3420 2 1 2 yes no no yes no 1 no semi-furnished
353 3780000 3600 2 1 1 yes no no no no 0 no semi-furnished
354 3780000 5830 2 1 1 yes no no no no 2 no unfurnished
355 3780000 2856 3 1 3 yes no no no no 0 yes furnished
356 3780000 8400 2 1 1 yes no no no no 1 no furnished
357 3773000 8250 3 1 1 yes no no no no 2 no furnished
358 3773000 2520 5 2 1 no no yes no yes 1 no furnished
359 3773000 6930 4 1 2 no no no no no 1 no furnished
360 3745000 3480 2 1 1 yes no no no no 0 yes semi-furnished
361 3710000 3600 3 1 1 yes no no no no 1 no unfurnished
362 3710000 4040 2 1 1 yes no no no no 0 no semi-furnished
363 3710000 6020 3 1 1 yes no no no no 0 no semi-furnished
364 3710000 4050 2 1 1 yes no no no no 0 no furnished
365 3710000 3584 2 1 1 yes no no yes no 0 no semi-furnished
366 3703000 3120 3 1 2 no no yes yes no 0 no semi-furnished
367 3703000 5450 2 1 1 yes no no no no 0 no furnished
368 3675000 3630 2 1 1 yes no yes no no 0 no furnished
369 3675000 3630 2 1 1 yes no no no yes 0 no unfurnished
370 3675000 5640 2 1 1 no no no no no 0 no semi-furnished
371 3675000 3600 2 1 1 yes no no no no 0 no furnished
372 3640000 4280 2 1 1 yes no no no yes 2 no semi-furnished
373 3640000 3570 3 1 2 yes no yes no no 0 no semi-furnished
374 3640000 3180 3 1 2 no no yes no no 0 no semi-furnished
375 3640000 3000 2 1 2 yes no no no yes 0 no furnished
376 3640000 3520 2 2 1 yes no yes no no 0 no semi-furnished
377 3640000 5960 3 1 2 yes yes yes no no 0 no unfurnished
378 3640000 4130 3 2 2 yes no no no no 2 no semi-furnished
379 3640000 2850 3 2 2 no no yes no no 0 yes unfurnished
380 3640000 2275 3 1 3 yes no no yes yes 0 yes semi-furnished
381 3633000 3520 3 1 1 yes no no no no 2 yes unfurnished
382 3605000 4500 2 1 1 yes no no no no 0 no semi-furnished
383 3605000 4000 2 1 1 yes no no no no 0 yes semi-furnished
384 3570000 3150 3 1 2 yes no yes no no 0 no furnished
385 3570000 4500 4 2 2 yes no yes no no 2 no furnished
386 3570000 4500 2 1 1 no no no no no 0 no furnished
387 3570000 3640 2 1 1 yes no no no no 0 no unfurnished
388 3535000 3850 3 1 1 yes no no no no 2 no unfurnished
389 3500000 4240 3 1 2 yes no no no yes 0 no semi-furnished
390 3500000 3650 3 1 2 yes no no no no 0 no unfurnished
391 3500000 4600 4 1 2 yes no no no no 0 no semi-furnished
392 3500000 2135 3 2 2 no no no no no 0 no unfurnished
393 3500000 3036 3 1 2 yes no yes no no 0 no semi-furnished
394 3500000 3990 3 1 2 yes no no no no 0 no semi-furnished
395 3500000 7424 3 1 1 no no no no no 0 no unfurnished
396 3500000 3480 3 1 1 no no no no yes 0 no unfurnished
397 3500000 3600 6 1 2 yes no no no no 1 no unfurnished
398 3500000 3640 2 1 1 yes no no no no 1 no semi-furnished
399 3500000 5900 2 1 1 yes no no no no 1 no furnished
400 3500000 3120 3 1 2 yes no no no no 1 no unfurnished
401 3500000 7350 2 1 1 yes no no no no 1 no semi-furnished
402 3500000 3512 2 1 1 yes no no no no 1 yes unfurnished
403 3500000 9500 3 1 2 yes no no no no 3 yes unfurnished
404 3500000 5880 2 1 1 yes no no no no 0 no unfurnished
405 3500000 12944 3 1 1 yes no no no no 0 no unfurnished
406 3493000 4900 3 1 2 no no no no no 0 no unfurnished
407 3465000 3060 3 1 1 yes no no no no 0 no unfurnished
408 3465000 5320 2 1 1 yes no no no no 1 yes unfurnished
409 3465000 2145 3 1 3 yes no no no no 0 yes furnished
410 3430000 4000 2 1 1 yes no no no no 0 no unfurnished
411 3430000 3185 2 1 1 yes no no no no 2 no unfurnished
412 3430000 3850 3 1 1 yes no no no no 0 no unfurnished
413 3430000 2145 3 1 3 yes no no no no 0 yes furnished
414 3430000 2610 3 1 2 yes no yes no no 0 yes unfurnished
415 3430000 1950 3 2 2 yes no yes no no 0 yes unfurnished
416 3423000 4040 2 1 1 yes no no no no 0 no unfurnished
417 3395000 4785 3 1 2 yes yes yes no yes 1 no furnished
418 3395000 3450 3 1 1 yes no yes no no 2 no unfurnished
419 3395000 3640 2 1 1 yes no no no no 0 no furnished
420 3360000 3500 4 1 2 yes no no no yes 2 no unfurnished
421 3360000 4960 4 1 3 no no no no no 0 no semi-furnished
422 3360000 4120 2 1 2 yes no no no no 0 no unfurnished
423 3360000 4750 2 1 1 yes no no no no 0 no unfurnished
424 3360000 3720 2 1 1 no no no no yes 0 no unfurnished
425 3360000 3750 3 1 1 yes no no no no 0 no unfurnished
426 3360000 3100 3 1 2 no no yes no no 0 no semi-furnished
427 3360000 3185 2 1 1 yes no yes no no 2 no furnished
428 3353000 2700 3 1 1 no no no no no 0 no furnished
429 3332000 2145 3 1 2 yes no yes no no 0 yes furnished
430 3325000 4040 2 1 1 yes no no no no 1 no unfurnished
431 3325000 4775 4 1 2 yes no no no no 0 no unfurnished
432 3290000 2500 2 1 1 no no no no yes 0 no unfurnished
433 3290000 3180 4 1 2 yes no yes no yes 0 no unfurnished
434 3290000 6060 3 1 1 yes yes yes no no 0 no furnished
435 3290000 3480 4 1 2 no no no no no 1 no semi-furnished
436 3290000 3792 4 1 2 yes no no no no 0 no semi-furnished
437 3290000 4040 2 1 1 yes no no no no 0 no unfurnished
438 3290000 2145 3 1 2 yes no yes no no 0 yes furnished
439 3290000 5880 3 1 1 yes no no no no 1 no unfurnished
440 3255000 4500 2 1 1 no no no no no 0 no semi-furnished
441 3255000 3930 2 1 1 no no no no no 0 no unfurnished
442 3234000 3640 4 1 2 yes no yes no no 0 no unfurnished
443 3220000 4370 3 1 2 yes no no no no 0 no unfurnished
444 3220000 2684 2 1 1 yes no no no yes 1 no unfurnished
445 3220000 4320 3 1 1 no no no no no 1 no unfurnished
446 3220000 3120 3 1 2 no no no no no 0 no furnished
447 3150000 3450 1 1 1 yes no no no no 0 no furnished
448 3150000 3986 2 2 1 no yes yes no no 1 no unfurnished
449 3150000 3500 2 1 1 no no yes no no 0 no semi-furnished
450 3150000 4095 2 1 1 yes no no no no 2 no semi-furnished
451 3150000 1650 3 1 2 no no yes no no 0 no unfurnished
452 3150000 3450 3 1 2 yes no yes no no 0 no semi-furnished
453 3150000 6750 2 1 1 yes no no no no 0 no semi-furnished
454 3150000 9000 3 1 2 yes no no no no 2 no semi-furnished
455 3150000 3069 2 1 1 yes no no no no 1 no unfurnished
456 3143000 4500 3 1 2 yes no no no yes 0 no unfurnished
457 3129000 5495 3 1 1 yes no yes no no 0 no unfurnished
458 3118850 2398 3 1 1 yes no no no no 0 yes semi-furnished
459 3115000 3000 3 1 1 no no no no yes 0 no unfurnished
460 3115000 3850 3 1 2 yes no no no no 0 no unfurnished
461 3115000 3500 2 1 1 yes no no no no 0 no unfurnished
462 3087000 8100 2 1 1 yes no no no no 1 no unfurnished
463 3080000 4960 2 1 1 yes no yes no yes 0 no unfurnished
464 3080000 2160 3 1 2 no no yes no no 0 no semi-furnished
465 3080000 3090 2 1 1 yes yes yes no no 0 no unfurnished
466 3080000 4500 2 1 2 yes no no yes no 1 no semi-furnished
467 3045000 3800 2 1 1 yes no no no no 0 no unfurnished
468 3010000 3090 3 1 2 no no no no no 0 no semi-furnished
469 3010000 3240 3 1 2 yes no no no no 2 no semi-furnished
470 3010000 2835 2 1 1 yes no no no no 0 no semi-furnished
471 3010000 4600 2 1 1 yes no no no no 0 no furnished
472 3010000 5076 3 1 1 no no no no no 0 no unfurnished
473 3010000 3750 3 1 2 yes no no no no 0 no unfurnished
474 3010000 3630 4 1 2 yes no no no no 3 no semi-furnished
475 3003000 8050 2 1 1 yes no no no no 0 no unfurnished
476 2975000 4352 4 1 2 no no no no no 1 no unfurnished
477 2961000 3000 2 1 2 yes no no no no 0 no semi-furnished
478 2940000 5850 3 1 2 yes no yes no no 1 no unfurnished
479 2940000 4960 2 1 1 yes no no no no 0 no unfurnished
480 2940000 3600 3 1 2 no no no no no 1 no unfurnished
481 2940000 3660 4 1 2 no no no no no 0 no unfurnished
482 2940000 3480 3 1 2 no no no no no 1 no semi-furnished
483 2940000 2700 2 1 1 no no no no no 0 no furnished
484 2940000 3150 3 1 2 no no no no no 0 no unfurnished
485 2940000 6615 3 1 2 yes no no no no 0 no semi-furnished
486 2870000 3040 2 1 1 no no no no no 0 no unfurnished
487 2870000 3630 2 1 1 yes no no no no 0 no unfurnished
488 2870000 6000 2 1 1 yes no no no no 0 no semi-furnished
489 2870000 5400 4 1 2 yes no no no no 0 no unfurnished
490 2852500 5200 4 1 3 yes no no no no 0 no unfurnished
491 2835000 3300 3 1 2 no no no no no 1 no semi-furnished
492 2835000 4350 3 1 2 no no no yes no 1 no unfurnished
493 2835000 2640 2 1 1 no no no no no 1 no furnished
494 2800000 2650 3 1 2 yes no yes no no 1 no unfurnished
495 2800000 3960 3 1 1 yes no no no no 0 no furnished
496 2730000 6800 2 1 1 yes no no no no 0 no unfurnished
497 2730000 4000 3 1 2 yes no no no no 1 no unfurnished
498 2695000 4000 2 1 1 yes no no no no 0 no unfurnished
499 2660000 3934 2 1 1 yes no no no no 0 no unfurnished
500 2660000 2000 2 1 2 yes no no no no 0 no semi-furnished
501 2660000 3630 3 3 2 no yes no no no 0 no unfurnished
502 2660000 2800 3 1 1 yes no no no no 0 no unfurnished
503 2660000 2430 3 1 1 no no no no no 0 no unfurnished
504 2660000 3480 2 1 1 yes no no no no 1 no semi-furnished
505 2660000 4000 3 1 1 yes no no no no 0 no semi-furnished
506 2653000 3185 2 1 1 yes no no no yes 0 no unfurnished
507 2653000 4000 3 1 2 yes no no no yes 0 no unfurnished
508 2604000 2910 2 1 1 no no no no no 0 no unfurnished
509 2590000 3600 2 1 1 yes no no no no 0 no unfurnished
510 2590000 4400 2 1 1 yes no no no no 0 no unfurnished
511 2590000 3600 2 2 2 yes no yes no no 1 no furnished
512 2520000 2880 3 1 1 no no no no no 0 no unfurnished
513 2520000 3180 3 1 1 no no no no no 0 no unfurnished
514 2520000 3000 2 1 2 yes no no no no 0 no furnished
515 2485000 4400 3 1 2 yes no no no no 0 no unfurnished
516 2485000 3000 3 1 2 no no no no no 0 no semi-furnished
517 2450000 3210 3 1 2 yes no yes no no 0 no unfurnished
518 2450000 3240 2 1 1 no yes no no no 1 no unfurnished
519 2450000 3000 2 1 1 yes no no no no 1 no unfurnished
520 2450000 3500 2 1 1 yes yes no no no 0 no unfurnished
521 2450000 4840 2 1 2 yes no no no no 0 no unfurnished
522 2450000 7700 2 1 1 yes no no no no 0 no unfurnished
523 2408000 3635 2 1 1 no no no no no 0 no unfurnished
524 2380000 2475 3 1 2 yes no no no no 0 no furnished
525 2380000 2787 4 2 2 yes no no no no 0 no furnished
526 2380000 3264 2 1 1 yes no no no no 0 no unfurnished
527 2345000 3640 2 1 1 yes no no no no 0 no unfurnished
528 2310000 3180 2 1 1 yes no no no no 0 no unfurnished
529 2275000 1836 2 1 1 no no yes no no 0 no semi-furnished
530 2275000 3970 1 1 1 no no no no no 0 no unfurnished
531 2275000 3970 3 1 2 yes no yes no no 0 no unfurnished
532 2240000 1950 3 1 1 no no no yes no 0 no unfurnished
533 2233000 5300 3 1 1 no no no no yes 0 yes unfurnished
534 2135000 3000 2 1 1 no no no no no 0 no unfurnished
535 2100000 2400 3 1 2 yes no no no no 0 no unfurnished
536 2100000 3000 4 1 2 yes no no no no 0 no unfurnished
537 2100000 3360 2 1 1 yes no no no no 1 no unfurnished
538 1960000 3420 5 1 2 no no no no no 0 no unfurnished
539 1890000 1700 3 1 2 yes no no no no 0 no unfurnished
540 1890000 3649 2 1 1 yes no no no no 0 no unfurnished
541 1855000 2990 2 1 1 no no no no no 1 no unfurnished
542 1820000 3000 2 1 1 yes no yes no no 2 no unfurnished
543 1767150 2400 3 1 1 no no no no no 0 no semi-furnished
544 1750000 3620 2 1 1 yes no no no no 0 no unfurnished
545 1750000 2910 3 1 1 no no no no no 0 no furnished
546 1750000 3850 3 1 2 yes no no no no 0 no unfurnished

View file

@ -1,151 +0,0 @@
"sepal.length","sepal.width","petal.length","petal.width","variety"
5.1,3.5,1.4,.2,"Setosa"
4.9,3,1.4,.2,"Setosa"
4.7,3.2,1.3,.2,"Setosa"
4.6,3.1,1.5,.2,"Setosa"
5,3.6,1.4,.2,"Setosa"
5.4,3.9,1.7,.4,"Setosa"
4.6,3.4,1.4,.3,"Setosa"
5,3.4,1.5,.2,"Setosa"
4.4,2.9,1.4,.2,"Setosa"
4.9,3.1,1.5,.1,"Setosa"
5.4,3.7,1.5,.2,"Setosa"
4.8,3.4,1.6,.2,"Setosa"
4.8,3,1.4,.1,"Setosa"
4.3,3,1.1,.1,"Setosa"
5.8,4,1.2,.2,"Setosa"
5.7,4.4,1.5,.4,"Setosa"
5.4,3.9,1.3,.4,"Setosa"
5.1,3.5,1.4,.3,"Setosa"
5.7,3.8,1.7,.3,"Setosa"
5.1,3.8,1.5,.3,"Setosa"
5.4,3.4,1.7,.2,"Setosa"
5.1,3.7,1.5,.4,"Setosa"
4.6,3.6,1,.2,"Setosa"
5.1,3.3,1.7,.5,"Setosa"
4.8,3.4,1.9,.2,"Setosa"
5,3,1.6,.2,"Setosa"
5,3.4,1.6,.4,"Setosa"
5.2,3.5,1.5,.2,"Setosa"
5.2,3.4,1.4,.2,"Setosa"
4.7,3.2,1.6,.2,"Setosa"
4.8,3.1,1.6,.2,"Setosa"
5.4,3.4,1.5,.4,"Setosa"
5.2,4.1,1.5,.1,"Setosa"
5.5,4.2,1.4,.2,"Setosa"
4.9,3.1,1.5,.2,"Setosa"
5,3.2,1.2,.2,"Setosa"
5.5,3.5,1.3,.2,"Setosa"
4.9,3.6,1.4,.1,"Setosa"
4.4,3,1.3,.2,"Setosa"
5.1,3.4,1.5,.2,"Setosa"
5,3.5,1.3,.3,"Setosa"
4.5,2.3,1.3,.3,"Setosa"
4.4,3.2,1.3,.2,"Setosa"
5,3.5,1.6,.6,"Setosa"
5.1,3.8,1.9,.4,"Setosa"
4.8,3,1.4,.3,"Setosa"
5.1,3.8,1.6,.2,"Setosa"
4.6,3.2,1.4,.2,"Setosa"
5.3,3.7,1.5,.2,"Setosa"
5,3.3,1.4,.2,"Setosa"
7,3.2,4.7,1.4,"Versicolor"
6.4,3.2,4.5,1.5,"Versicolor"
6.9,3.1,4.9,1.5,"Versicolor"
5.5,2.3,4,1.3,"Versicolor"
6.5,2.8,4.6,1.5,"Versicolor"
5.7,2.8,4.5,1.3,"Versicolor"
6.3,3.3,4.7,1.6,"Versicolor"
4.9,2.4,3.3,1,"Versicolor"
6.6,2.9,4.6,1.3,"Versicolor"
5.2,2.7,3.9,1.4,"Versicolor"
5,2,3.5,1,"Versicolor"
5.9,3,4.2,1.5,"Versicolor"
6,2.2,4,1,"Versicolor"
6.1,2.9,4.7,1.4,"Versicolor"
5.6,2.9,3.6,1.3,"Versicolor"
6.7,3.1,4.4,1.4,"Versicolor"
5.6,3,4.5,1.5,"Versicolor"
5.8,2.7,4.1,1,"Versicolor"
6.2,2.2,4.5,1.5,"Versicolor"
5.6,2.5,3.9,1.1,"Versicolor"
5.9,3.2,4.8,1.8,"Versicolor"
6.1,2.8,4,1.3,"Versicolor"
6.3,2.5,4.9,1.5,"Versicolor"
6.1,2.8,4.7,1.2,"Versicolor"
6.4,2.9,4.3,1.3,"Versicolor"
6.6,3,4.4,1.4,"Versicolor"
6.8,2.8,4.8,1.4,"Versicolor"
6.7,3,5,1.7,"Versicolor"
6,2.9,4.5,1.5,"Versicolor"
5.7,2.6,3.5,1,"Versicolor"
5.5,2.4,3.8,1.1,"Versicolor"
5.5,2.4,3.7,1,"Versicolor"
5.8,2.7,3.9,1.2,"Versicolor"
6,2.7,5.1,1.6,"Versicolor"
5.4,3,4.5,1.5,"Versicolor"
6,3.4,4.5,1.6,"Versicolor"
6.7,3.1,4.7,1.5,"Versicolor"
6.3,2.3,4.4,1.3,"Versicolor"
5.6,3,4.1,1.3,"Versicolor"
5.5,2.5,4,1.3,"Versicolor"
5.5,2.6,4.4,1.2,"Versicolor"
6.1,3,4.6,1.4,"Versicolor"
5.8,2.6,4,1.2,"Versicolor"
5,2.3,3.3,1,"Versicolor"
5.6,2.7,4.2,1.3,"Versicolor"
5.7,3,4.2,1.2,"Versicolor"
5.7,2.9,4.2,1.3,"Versicolor"
6.2,2.9,4.3,1.3,"Versicolor"
5.1,2.5,3,1.1,"Versicolor"
5.7,2.8,4.1,1.3,"Versicolor"
6.3,3.3,6,2.5,"Virginica"
5.8,2.7,5.1,1.9,"Virginica"
7.1,3,5.9,2.1,"Virginica"
6.3,2.9,5.6,1.8,"Virginica"
6.5,3,5.8,2.2,"Virginica"
7.6,3,6.6,2.1,"Virginica"
4.9,2.5,4.5,1.7,"Virginica"
7.3,2.9,6.3,1.8,"Virginica"
6.7,2.5,5.8,1.8,"Virginica"
7.2,3.6,6.1,2.5,"Virginica"
6.5,3.2,5.1,2,"Virginica"
6.4,2.7,5.3,1.9,"Virginica"
6.8,3,5.5,2.1,"Virginica"
5.7,2.5,5,2,"Virginica"
5.8,2.8,5.1,2.4,"Virginica"
6.4,3.2,5.3,2.3,"Virginica"
6.5,3,5.5,1.8,"Virginica"
7.7,3.8,6.7,2.2,"Virginica"
7.7,2.6,6.9,2.3,"Virginica"
6,2.2,5,1.5,"Virginica"
6.9,3.2,5.7,2.3,"Virginica"
5.6,2.8,4.9,2,"Virginica"
7.7,2.8,6.7,2,"Virginica"
6.3,2.7,4.9,1.8,"Virginica"
6.7,3.3,5.7,2.1,"Virginica"
7.2,3.2,6,1.8,"Virginica"
6.2,2.8,4.8,1.8,"Virginica"
6.1,3,4.9,1.8,"Virginica"
6.4,2.8,5.6,2.1,"Virginica"
7.2,3,5.8,1.6,"Virginica"
7.4,2.8,6.1,1.9,"Virginica"
7.9,3.8,6.4,2,"Virginica"
6.4,2.8,5.6,2.2,"Virginica"
6.3,2.8,5.1,1.5,"Virginica"
6.1,2.6,5.6,1.4,"Virginica"
7.7,3,6.1,2.3,"Virginica"
6.3,3.4,5.6,2.4,"Virginica"
6.4,3.1,5.5,1.8,"Virginica"
6,3,4.8,1.8,"Virginica"
6.9,3.1,5.4,2.1,"Virginica"
6.7,3.1,5.6,2.4,"Virginica"
6.9,3.1,5.1,2.3,"Virginica"
5.8,2.7,5.1,1.9,"Virginica"
6.8,3.2,5.9,2.3,"Virginica"
6.7,3.3,5.7,2.5,"Virginica"
6.7,3,5.2,2.3,"Virginica"
6.3,2.5,5,1.9,"Virginica"
6.5,3,5.2,2,"Virginica"
6.2,3.4,5.4,2.3,"Virginica"
5.9,3,5.1,1.8,"Virginica"
1 sepal.length sepal.width petal.length petal.width variety
2 5.1 3.5 1.4 .2 Setosa
3 4.9 3 1.4 .2 Setosa
4 4.7 3.2 1.3 .2 Setosa
5 4.6 3.1 1.5 .2 Setosa
6 5 3.6 1.4 .2 Setosa
7 5.4 3.9 1.7 .4 Setosa
8 4.6 3.4 1.4 .3 Setosa
9 5 3.4 1.5 .2 Setosa
10 4.4 2.9 1.4 .2 Setosa
11 4.9 3.1 1.5 .1 Setosa
12 5.4 3.7 1.5 .2 Setosa
13 4.8 3.4 1.6 .2 Setosa
14 4.8 3 1.4 .1 Setosa
15 4.3 3 1.1 .1 Setosa
16 5.8 4 1.2 .2 Setosa
17 5.7 4.4 1.5 .4 Setosa
18 5.4 3.9 1.3 .4 Setosa
19 5.1 3.5 1.4 .3 Setosa
20 5.7 3.8 1.7 .3 Setosa
21 5.1 3.8 1.5 .3 Setosa
22 5.4 3.4 1.7 .2 Setosa
23 5.1 3.7 1.5 .4 Setosa
24 4.6 3.6 1 .2 Setosa
25 5.1 3.3 1.7 .5 Setosa
26 4.8 3.4 1.9 .2 Setosa
27 5 3 1.6 .2 Setosa
28 5 3.4 1.6 .4 Setosa
29 5.2 3.5 1.5 .2 Setosa
30 5.2 3.4 1.4 .2 Setosa
31 4.7 3.2 1.6 .2 Setosa
32 4.8 3.1 1.6 .2 Setosa
33 5.4 3.4 1.5 .4 Setosa
34 5.2 4.1 1.5 .1 Setosa
35 5.5 4.2 1.4 .2 Setosa
36 4.9 3.1 1.5 .2 Setosa
37 5 3.2 1.2 .2 Setosa
38 5.5 3.5 1.3 .2 Setosa
39 4.9 3.6 1.4 .1 Setosa
40 4.4 3 1.3 .2 Setosa
41 5.1 3.4 1.5 .2 Setosa
42 5 3.5 1.3 .3 Setosa
43 4.5 2.3 1.3 .3 Setosa
44 4.4 3.2 1.3 .2 Setosa
45 5 3.5 1.6 .6 Setosa
46 5.1 3.8 1.9 .4 Setosa
47 4.8 3 1.4 .3 Setosa
48 5.1 3.8 1.6 .2 Setosa
49 4.6 3.2 1.4 .2 Setosa
50 5.3 3.7 1.5 .2 Setosa
51 5 3.3 1.4 .2 Setosa
52 7 3.2 4.7 1.4 Versicolor
53 6.4 3.2 4.5 1.5 Versicolor
54 6.9 3.1 4.9 1.5 Versicolor
55 5.5 2.3 4 1.3 Versicolor
56 6.5 2.8 4.6 1.5 Versicolor
57 5.7 2.8 4.5 1.3 Versicolor
58 6.3 3.3 4.7 1.6 Versicolor
59 4.9 2.4 3.3 1 Versicolor
60 6.6 2.9 4.6 1.3 Versicolor
61 5.2 2.7 3.9 1.4 Versicolor
62 5 2 3.5 1 Versicolor
63 5.9 3 4.2 1.5 Versicolor
64 6 2.2 4 1 Versicolor
65 6.1 2.9 4.7 1.4 Versicolor
66 5.6 2.9 3.6 1.3 Versicolor
67 6.7 3.1 4.4 1.4 Versicolor
68 5.6 3 4.5 1.5 Versicolor
69 5.8 2.7 4.1 1 Versicolor
70 6.2 2.2 4.5 1.5 Versicolor
71 5.6 2.5 3.9 1.1 Versicolor
72 5.9 3.2 4.8 1.8 Versicolor
73 6.1 2.8 4 1.3 Versicolor
74 6.3 2.5 4.9 1.5 Versicolor
75 6.1 2.8 4.7 1.2 Versicolor
76 6.4 2.9 4.3 1.3 Versicolor
77 6.6 3 4.4 1.4 Versicolor
78 6.8 2.8 4.8 1.4 Versicolor
79 6.7 3 5 1.7 Versicolor
80 6 2.9 4.5 1.5 Versicolor
81 5.7 2.6 3.5 1 Versicolor
82 5.5 2.4 3.8 1.1 Versicolor
83 5.5 2.4 3.7 1 Versicolor
84 5.8 2.7 3.9 1.2 Versicolor
85 6 2.7 5.1 1.6 Versicolor
86 5.4 3 4.5 1.5 Versicolor
87 6 3.4 4.5 1.6 Versicolor
88 6.7 3.1 4.7 1.5 Versicolor
89 6.3 2.3 4.4 1.3 Versicolor
90 5.6 3 4.1 1.3 Versicolor
91 5.5 2.5 4 1.3 Versicolor
92 5.5 2.6 4.4 1.2 Versicolor
93 6.1 3 4.6 1.4 Versicolor
94 5.8 2.6 4 1.2 Versicolor
95 5 2.3 3.3 1 Versicolor
96 5.6 2.7 4.2 1.3 Versicolor
97 5.7 3 4.2 1.2 Versicolor
98 5.7 2.9 4.2 1.3 Versicolor
99 6.2 2.9 4.3 1.3 Versicolor
100 5.1 2.5 3 1.1 Versicolor
101 5.7 2.8 4.1 1.3 Versicolor
102 6.3 3.3 6 2.5 Virginica
103 5.8 2.7 5.1 1.9 Virginica
104 7.1 3 5.9 2.1 Virginica
105 6.3 2.9 5.6 1.8 Virginica
106 6.5 3 5.8 2.2 Virginica
107 7.6 3 6.6 2.1 Virginica
108 4.9 2.5 4.5 1.7 Virginica
109 7.3 2.9 6.3 1.8 Virginica
110 6.7 2.5 5.8 1.8 Virginica
111 7.2 3.6 6.1 2.5 Virginica
112 6.5 3.2 5.1 2 Virginica
113 6.4 2.7 5.3 1.9 Virginica
114 6.8 3 5.5 2.1 Virginica
115 5.7 2.5 5 2 Virginica
116 5.8 2.8 5.1 2.4 Virginica
117 6.4 3.2 5.3 2.3 Virginica
118 6.5 3 5.5 1.8 Virginica
119 7.7 3.8 6.7 2.2 Virginica
120 7.7 2.6 6.9 2.3 Virginica
121 6 2.2 5 1.5 Virginica
122 6.9 3.2 5.7 2.3 Virginica
123 5.6 2.8 4.9 2 Virginica
124 7.7 2.8 6.7 2 Virginica
125 6.3 2.7 4.9 1.8 Virginica
126 6.7 3.3 5.7 2.1 Virginica
127 7.2 3.2 6 1.8 Virginica
128 6.2 2.8 4.8 1.8 Virginica
129 6.1 3 4.9 1.8 Virginica
130 6.4 2.8 5.6 2.1 Virginica
131 7.2 3 5.8 1.6 Virginica
132 7.4 2.8 6.1 1.9 Virginica
133 7.9 3.8 6.4 2 Virginica
134 6.4 2.8 5.6 2.2 Virginica
135 6.3 2.8 5.1 1.5 Virginica
136 6.1 2.6 5.6 1.4 Virginica
137 7.7 3 6.1 2.3 Virginica
138 6.3 3.4 5.6 2.4 Virginica
139 6.4 3.1 5.5 1.8 Virginica
140 6 3 4.8 1.8 Virginica
141 6.9 3.1 5.4 2.1 Virginica
142 6.7 3.1 5.6 2.4 Virginica
143 6.9 3.1 5.1 2.3 Virginica
144 5.8 2.7 5.1 1.9 Virginica
145 6.8 3.2 5.9 2.3 Virginica
146 6.7 3.3 5.7 2.5 Virginica
147 6.7 3 5.2 2.3 Virginica
148 6.3 2.5 5 1.9 Virginica
149 6.5 3 5.2 2 Virginica
150 6.2 3.4 5.4 2.3 Virginica
151 5.9 3 5.1 1.8 Virginica

View file

@ -1,151 +0,0 @@
sepal.length,sepal.width,petal.length,petal.width,variety
5.1,NA,1.4,0.2,Setosa
4.9,3,1.4,0.2,Setosa
4.7,3.2,,,Setosa
4.6,,1.5,0.2,Setosa
5,3.6,1.4,0.2,Setosa
5.4,3.9,1.7,0.4,Setosa
4.6,3.4,1.4,0.3,Setosa
5,3.4,1.5,0.2,Setosa
4.4,2.9,1.4,0.2,Setosa
4.9,3.1,1.5,0.1,Setosa
5.4,3.7,1.5,0.2,Setosa
4.8,3.4,1.6,0.2,Setosa
4.8,3,1.4,0.1,Setosa
4.3,3,1.1,0.1,Setosa
5.8,4,1.2,0.2,Setosa
5.7,4.4,1.5,0.4,Setosa
5.4,3.9,1.3,0.4,Setosa
5.1,3.5,1.4,0.3,Setosa
5.7,3.8,1.7,0.3,Setosa
5.1,3.8,1.5,0.3,Setosa
5.4,3.4,1.7,0.2,Setosa
5.1,3.7,1.5,0.4,Setosa
4.6,3.6,1,0.2,Setosa
5.1,3.3,1.7,0.5,Setosa
4.8,3.4,1.9,0.2,Setosa
5,3,1.6,0.2,Setosa
5,3.4,1.6,0.4,Setosa
5.2,3.5,1.5,0.2,Setosa
5.2,3.4,1.4,0.2,Setosa
4.7,3.2,1.6,0.2,Setosa
4.8,3.1,1.6,0.2,Setosa
5.4,3.4,1.5,0.4,Setosa
5.2,4.1,1.5,0.1,Setosa
5.5,4.2,1.4,0.2,Setosa
4.9,3.1,1.5,0.2,Setosa
5,3.2,1.2,0.2,Setosa
5.5,3.5,1.3,0.2,Setosa
4.9,3.6,1.4,0.1,Setosa
4.4,3,1.3,0.2,Setosa
5.1,3.4,1.5,0.2,Setosa
5,3.5,1.3,0.3,Setosa
4.5,2.3,1.3,0.3,Setosa
4.4,3.2,1.3,0.2,Setosa
5,3.5,1.6,0.6,Setosa
5.1,3.8,1.9,0.4,Setosa
4.8,3,1.4,0.3,Setosa
5.1,3.8,1.6,0.2,Setosa
4.6,3.2,1.4,0.2,Setosa
5.3,3.7,1.5,0.2,Setosa
5,3.3,1.4,0.2,Setosa
7,3.2,4.7,1.4,Versicolor
6.4,3.2,4.5,1.5,Versicolor
6.9,3.1,4.9,1.5,Versicolor
5.5,2.3,4,1.3,Versicolor
6.5,2.8,4.6,1.5,Versicolor
5.7,2.8,4.5,1.3,Versicolor
6.3,3.3,4.7,1.6,Versicolor
4.9,2.4,3.3,1,Versicolor
6.6,2.9,4.6,1.3,Versicolor
5.2,2.7,3.9,1.4,Versicolor
5,2,3.5,1,Versicolor
5.9,3,4.2,1.5,Versicolor
6,2.2,4,1,Versicolor
6.1,2.9,4.7,1.4,Versicolor
5.6,2.9,3.6,1.3,Versicolor
6.7,3.1,4.4,1.4,Versicolor
5.6,3,4.5,1.5,Versicolor
5.8,2.7,4.1,1,Versicolor
6.2,2.2,4.5,1.5,Versicolor
5.6,2.5,3.9,1.1,Versicolor
5.9,3.2,4.8,1.8,Versicolor
6.1,2.8,4,1.3,Versicolor
6.3,2.5,4.9,1.5,Versicolor
6.1,2.8,4.7,1.2,Versicolor
6.4,2.9,4.3,1.3,Versicolor
6.6,3,4.4,1.4,Versicolor
6.8,2.8,4.8,1.4,Versicolor
6.7,3,5,1.7,Versicolor
6,2.9,4.5,1.5,Versicolor
5.7,2.6,3.5,1,Versicolor
5.5,2.4,3.8,1.1,Versicolor
5.5,2.4,3.7,1,Versicolor
5.8,2.7,3.9,1.2,Versicolor
6,2.7,5.1,1.6,Versicolor
5.4,3,4.5,1.5,Versicolor
6,3.4,4.5,1.6,Versicolor
6.7,3.1,4.7,1.5,Versicolor
6.3,2.3,4.4,1.3,Versicolor
5.6,3,4.1,1.3,Versicolor
5.5,2.5,4,1.3,Versicolor
5.5,2.6,4.4,1.2,Versicolor
6.1,3,4.6,1.4,Versicolor
5.8,2.6,4,1.2,Versicolor
5,2.3,3.3,1,Versicolor
5.6,2.7,4.2,1.3,Versicolor
5.7,3,4.2,1.2,Versicolor
5.7,2.9,4.2,1.3,Versicolor
6.2,2.9,4.3,1.3,Versicolor
5.1,2.5,3,1.1,Versicolor
5.7,2.8,4.1,1.3,Versicolor
6.3,3.3,6,2.5,Virginica
5.8,2.7,5.1,1.9,Virginica
7.1,3,5.9,2.1,Virginica
6.3,2.9,5.6,1.8,Virginica
6.5,3,5.8,2.2,Virginica
7.6,3,6.6,2.1,Virginica
4.9,2.5,4.5,1.7,Virginica
7.3,2.9,6.3,1.8,Virginica
6.7,2.5,5.8,1.8,Virginica
7.2,3.6,6.1,2.5,Virginica
6.5,3.2,5.1,2,Virginica
6.4,2.7,5.3,1.9,Virginica
6.8,3,5.5,2.1,Virginica
5.7,2.5,5,2,Virginica
5.8,2.8,5.1,2.4,Virginica
6.4,3.2,5.3,2.3,Virginica
6.5,3,5.5,1.8,Virginica
7.7,3.8,6.7,2.2,Virginica
7.7,2.6,6.9,2.3,Virginica
6,2.2,5,1.5,Virginica
6.9,3.2,5.7,2.3,Virginica
5.6,2.8,4.9,2,Virginica
7.7,2.8,6.7,2,Virginica
6.3,2.7,4.9,1.8,Virginica
6.7,3.3,5.7,2.1,Virginica
7.2,3.2,6,1.8,Virginica
6.2,2.8,4.8,1.8,Virginica
6.1,3,4.9,1.8,Virginica
6.4,2.8,5.6,2.1,Virginica
7.2,3,5.8,1.6,Virginica
7.4,2.8,6.1,1.9,Virginica
7.9,3.8,6.4,2,Virginica
6.4,2.8,5.6,2.2,Virginica
6.3,2.8,5.1,1.5,Virginica
6.1,2.6,5.6,1.4,Virginica
7.7,3,6.1,2.3,Virginica
6.3,3.4,5.6,2.4,Virginica
6.4,3.1,5.5,1.8,Virginica
6,3,4.8,1.8,Virginica
6.9,3.1,5.4,2.1,Virginica
6.7,3.1,5.6,2.4,Virginica
6.9,3.1,5.1,2.3,Virginica
5.8,2.7,5.1,1.9,Virginica
6.8,3.2,5.9,2.3,Virginica
6.7,3.3,5.7,2.5,Virginica
6.7,3,5.2,2.3,Virginica
6.3,2.5,5,1.9,Virginica
6.5,3,5.2,2,Virginica
6.2,3.4,5.4,2.3,Virginica
5.9,3,5.1,1.8,Virginica
1 sepal.length sepal.width petal.length petal.width variety
2 5.1 NA 1.4 0.2 Setosa
3 4.9 3 1.4 0.2 Setosa
4 4.7 3.2 Setosa
5 4.6 1.5 0.2 Setosa
6 5 3.6 1.4 0.2 Setosa
7 5.4 3.9 1.7 0.4 Setosa
8 4.6 3.4 1.4 0.3 Setosa
9 5 3.4 1.5 0.2 Setosa
10 4.4 2.9 1.4 0.2 Setosa
11 4.9 3.1 1.5 0.1 Setosa
12 5.4 3.7 1.5 0.2 Setosa
13 4.8 3.4 1.6 0.2 Setosa
14 4.8 3 1.4 0.1 Setosa
15 4.3 3 1.1 0.1 Setosa
16 5.8 4 1.2 0.2 Setosa
17 5.7 4.4 1.5 0.4 Setosa
18 5.4 3.9 1.3 0.4 Setosa
19 5.1 3.5 1.4 0.3 Setosa
20 5.7 3.8 1.7 0.3 Setosa
21 5.1 3.8 1.5 0.3 Setosa
22 5.4 3.4 1.7 0.2 Setosa
23 5.1 3.7 1.5 0.4 Setosa
24 4.6 3.6 1 0.2 Setosa
25 5.1 3.3 1.7 0.5 Setosa
26 4.8 3.4 1.9 0.2 Setosa
27 5 3 1.6 0.2 Setosa
28 5 3.4 1.6 0.4 Setosa
29 5.2 3.5 1.5 0.2 Setosa
30 5.2 3.4 1.4 0.2 Setosa
31 4.7 3.2 1.6 0.2 Setosa
32 4.8 3.1 1.6 0.2 Setosa
33 5.4 3.4 1.5 0.4 Setosa
34 5.2 4.1 1.5 0.1 Setosa
35 5.5 4.2 1.4 0.2 Setosa
36 4.9 3.1 1.5 0.2 Setosa
37 5 3.2 1.2 0.2 Setosa
38 5.5 3.5 1.3 0.2 Setosa
39 4.9 3.6 1.4 0.1 Setosa
40 4.4 3 1.3 0.2 Setosa
41 5.1 3.4 1.5 0.2 Setosa
42 5 3.5 1.3 0.3 Setosa
43 4.5 2.3 1.3 0.3 Setosa
44 4.4 3.2 1.3 0.2 Setosa
45 5 3.5 1.6 0.6 Setosa
46 5.1 3.8 1.9 0.4 Setosa
47 4.8 3 1.4 0.3 Setosa
48 5.1 3.8 1.6 0.2 Setosa
49 4.6 3.2 1.4 0.2 Setosa
50 5.3 3.7 1.5 0.2 Setosa
51 5 3.3 1.4 0.2 Setosa
52 7 3.2 4.7 1.4 Versicolor
53 6.4 3.2 4.5 1.5 Versicolor
54 6.9 3.1 4.9 1.5 Versicolor
55 5.5 2.3 4 1.3 Versicolor
56 6.5 2.8 4.6 1.5 Versicolor
57 5.7 2.8 4.5 1.3 Versicolor
58 6.3 3.3 4.7 1.6 Versicolor
59 4.9 2.4 3.3 1 Versicolor
60 6.6 2.9 4.6 1.3 Versicolor
61 5.2 2.7 3.9 1.4 Versicolor
62 5 2 3.5 1 Versicolor
63 5.9 3 4.2 1.5 Versicolor
64 6 2.2 4 1 Versicolor
65 6.1 2.9 4.7 1.4 Versicolor
66 5.6 2.9 3.6 1.3 Versicolor
67 6.7 3.1 4.4 1.4 Versicolor
68 5.6 3 4.5 1.5 Versicolor
69 5.8 2.7 4.1 1 Versicolor
70 6.2 2.2 4.5 1.5 Versicolor
71 5.6 2.5 3.9 1.1 Versicolor
72 5.9 3.2 4.8 1.8 Versicolor
73 6.1 2.8 4 1.3 Versicolor
74 6.3 2.5 4.9 1.5 Versicolor
75 6.1 2.8 4.7 1.2 Versicolor
76 6.4 2.9 4.3 1.3 Versicolor
77 6.6 3 4.4 1.4 Versicolor
78 6.8 2.8 4.8 1.4 Versicolor
79 6.7 3 5 1.7 Versicolor
80 6 2.9 4.5 1.5 Versicolor
81 5.7 2.6 3.5 1 Versicolor
82 5.5 2.4 3.8 1.1 Versicolor
83 5.5 2.4 3.7 1 Versicolor
84 5.8 2.7 3.9 1.2 Versicolor
85 6 2.7 5.1 1.6 Versicolor
86 5.4 3 4.5 1.5 Versicolor
87 6 3.4 4.5 1.6 Versicolor
88 6.7 3.1 4.7 1.5 Versicolor
89 6.3 2.3 4.4 1.3 Versicolor
90 5.6 3 4.1 1.3 Versicolor
91 5.5 2.5 4 1.3 Versicolor
92 5.5 2.6 4.4 1.2 Versicolor
93 6.1 3 4.6 1.4 Versicolor
94 5.8 2.6 4 1.2 Versicolor
95 5 2.3 3.3 1 Versicolor
96 5.6 2.7 4.2 1.3 Versicolor
97 5.7 3 4.2 1.2 Versicolor
98 5.7 2.9 4.2 1.3 Versicolor
99 6.2 2.9 4.3 1.3 Versicolor
100 5.1 2.5 3 1.1 Versicolor
101 5.7 2.8 4.1 1.3 Versicolor
102 6.3 3.3 6 2.5 Virginica
103 5.8 2.7 5.1 1.9 Virginica
104 7.1 3 5.9 2.1 Virginica
105 6.3 2.9 5.6 1.8 Virginica
106 6.5 3 5.8 2.2 Virginica
107 7.6 3 6.6 2.1 Virginica
108 4.9 2.5 4.5 1.7 Virginica
109 7.3 2.9 6.3 1.8 Virginica
110 6.7 2.5 5.8 1.8 Virginica
111 7.2 3.6 6.1 2.5 Virginica
112 6.5 3.2 5.1 2 Virginica
113 6.4 2.7 5.3 1.9 Virginica
114 6.8 3 5.5 2.1 Virginica
115 5.7 2.5 5 2 Virginica
116 5.8 2.8 5.1 2.4 Virginica
117 6.4 3.2 5.3 2.3 Virginica
118 6.5 3 5.5 1.8 Virginica
119 7.7 3.8 6.7 2.2 Virginica
120 7.7 2.6 6.9 2.3 Virginica
121 6 2.2 5 1.5 Virginica
122 6.9 3.2 5.7 2.3 Virginica
123 5.6 2.8 4.9 2 Virginica
124 7.7 2.8 6.7 2 Virginica
125 6.3 2.7 4.9 1.8 Virginica
126 6.7 3.3 5.7 2.1 Virginica
127 7.2 3.2 6 1.8 Virginica
128 6.2 2.8 4.8 1.8 Virginica
129 6.1 3 4.9 1.8 Virginica
130 6.4 2.8 5.6 2.1 Virginica
131 7.2 3 5.8 1.6 Virginica
132 7.4 2.8 6.1 1.9 Virginica
133 7.9 3.8 6.4 2 Virginica
134 6.4 2.8 5.6 2.2 Virginica
135 6.3 2.8 5.1 1.5 Virginica
136 6.1 2.6 5.6 1.4 Virginica
137 7.7 3 6.1 2.3 Virginica
138 6.3 3.4 5.6 2.4 Virginica
139 6.4 3.1 5.5 1.8 Virginica
140 6 3 4.8 1.8 Virginica
141 6.9 3.1 5.4 2.1 Virginica
142 6.7 3.1 5.6 2.4 Virginica
143 6.9 3.1 5.1 2.3 Virginica
144 5.8 2.7 5.1 1.9 Virginica
145 6.8 3.2 5.9 2.3 Virginica
146 6.7 3.3 5.7 2.5 Virginica
147 6.7 3 5.2 2.3 Virginica
148 6.3 2.5 5 1.9 Virginica
149 6.5 3 5.2 2 Virginica
150 6.2 3.4 5.4 2.3 Virginica
151 5.9 3 5.1 1.8 Virginica

View file

@ -1,285 +0,0 @@
import streamlit as st
import pandas as pd
import os
from crewai import Crew
from langchain_groq import ChatGroq
import streamlit_ace as st_ace
import traceback
import contextlib
import io
from crewai_tools import FileReadTool
import matplotlib.pyplot as plt
import glob
from dotenv import load_dotenv
from autotabml_agents import initialize_agents
from autotabml_tasks import create_tasks
TEMP_DIR = "temp_dir"
OUTPUT_DIR = "Output_dir"
# Ensure the temporary directory exists
if not os.path.exists(TEMP_DIR):
os.makedirs(TEMP_DIR)
# Ensure the Output directory exits
if not os.path.exists(OUTPUT_DIR):
os.makedirs(OUTPUT_DIR)
# Function to save uploaded file
def save_uploaded_file(uploaded_file):
file_path = os.path.join(TEMP_DIR, uploaded_file.name)
with open(file_path, 'wb') as f:
f.write(uploaded_file.getbuffer())
return file_path
# load the .env file
load_dotenv()
# Set up Groq API key
groq_api_key = os.getenv("GROQ_API_KEY") # os.environ["GROQ_API_KEY"] =
def main():
# Set custom CSS for UI
set_custom_css()
# Initialize session state for edited code
if 'edited_code' not in st.session_state:
st.session_state['edited_code'] = ""
# Initialize session state for whether the initial code is generated
if 'code_generated' not in st.session_state:
st.session_state['code_generated'] = False
# Header with futuristic design
st.markdown("""
<div class="header">
<h1>AutoTabML</h1>
<p>Automated Machine Learning Code Generation for Tabluar Data</p>
</div>
""", unsafe_allow_html=True)
# Sidebar for customization options
st.sidebar.title('LLM Model')
model = st.sidebar.selectbox(
'Model',
["groq/llama-3.1-8b-instant"]
)
# Initialize LLM
llm = initialize_llm(model)
# User inputs
user_question = st.text_area("Describe your ML problem:", key="user_question")
uploaded_file = st.file_uploader("Upload a sample .csv of your data", key="uploaded_file")
try:
file_name = uploaded_file.name
except:
file_name = "dataset.csv"
# Initialize agents
agents = initialize_agents(llm,file_name,TEMP_DIR)
# Process uploaded file
if uploaded_file:
try:
file_path = save_uploaded_file(uploaded_file)
df = pd.read_csv(uploaded_file)
st.write("Data successfully uploaded:")
st.dataframe(df.head())
data_upload = True
except Exception as e:
st.error(f"Error reading the file: {e}")
data_upload = False
else:
df = None
data_upload = False
# Process button
if st.button('Process'):
tasks = create_tasks("Process",user_question,file_name, data_upload, df, None, st.session_state['edited_code'], None, agents)
with st.spinner('Processing...'):
crew = Crew(
agents=list(agents.values()),
tasks=tasks,
verbose=True
)
result = crew.kickoff()
if result: # Only call st_ace if code has a valid value
code = str(result).strip("```")
if 'python' in code:
code = code[code.index('python')+1:]
try:
filt_idx = code.index("```")
code = code[:filt_idx]
except:
pass
st.session_state['edited_code'] = code
st.session_state['code_generated'] = True
st.session_state['edited_code'] = st_ace.st_ace(
value=st.session_state['edited_code'],
language='python',
theme='monokai',
keybinding='vscode',
min_lines=20,
max_lines=50
)
if st.session_state['code_generated']:
# Show options for modification, debugging, and running the code
suggestion = st.text_area("Suggest modifications to the generated code (optional):", key="suggestion")
if st.button('Modify'):
if st.session_state['edited_code'] and suggestion:
tasks = create_tasks("Modify",user_question,file_name, data_upload, df, suggestion, st.session_state['edited_code'], None, agents)
with st.spinner('Modifying code...'):
crew = Crew(
agents=list(agents.values()),
tasks=tasks,
verbose=True
)
result = crew.kickoff()
if result: # Only call st_ace if code has a valid value
code = str(result).strip("```")
try:
filter_idx = code.index("```")
code = code[:filter_idx]
except:
pass
st.session_state['edited_code'] = code
st.write("Modified code:")
st.session_state['edited_code']= st_ace.st_ace(
value=st.session_state['edited_code'],
language='python',
theme='monokai',
keybinding='vscode',
min_lines=20,
max_lines=50
)
debugger = st.text_area("Paste error message here for debugging (optional):", key="debugger")
if st.button('Debug'):
if st.session_state['edited_code'] and debugger:
tasks = create_tasks("Debug",user_question,file_name, data_upload, df, None, st.session_state['edited_code'], debugger, agents)
with st.spinner('Debugging code...'):
crew = Crew(
agents=list(agents.values()),
tasks=tasks,
verbose=True
)
result = crew.kickoff()
if result: # Only call st_ace if code has a valid value
code = str(result).strip("```")
try:
filter_idx = code.index("```")
code = code[:filter_idx]
except:
pass
st.session_state['edited_code'] = code
st.write("Debugged code:")
st.session_state['edited_code'] = st_ace.st_ace(
value=st.session_state['edited_code'],
language='python',
theme='monokai',
keybinding='vscode',
min_lines=20,
max_lines=50
)
if st.button('Run'):
output = io.StringIO()
with contextlib.redirect_stdout(output):
try:
globals().update({'dataset': df})
final_code = st.session_state["edited_code"]
with st.expander("Final Code"):
st.code(final_code, language='python')
exec(final_code, globals())
result = output.getvalue()
success = True
except Exception as e:
result = str(e)
success = False
st.subheader('Output:')
st.text(result)
figs = [manager.canvas.figure for manager in plt._pylab_helpers.Gcf.get_all_fig_managers()]
if figs:
st.subheader('Generated Plots:')
for fig in figs:
st.pyplot(fig)
if success:
st.success("Code executed successfully!")
else:
st.error("Code execution failed! Waiting for debugging input...")
# Move the generated files section to the sidebar
with st.sidebar:
st.header('Output_dir :')
files = glob.glob(os.path.join(OUTPUT_DIR, '*'))
for file in files:
if os.path.isfile(file):
with open(file, 'rb') as f:
st.download_button(label=f'Download {os.path.basename(file)}', data=f, file_name=os.path.basename(file))
# Function to set custom CSS for futuristic UI
def set_custom_css():
st.markdown("""
<style>
body {
background: #0e0e0e;
color: #e0e0e0;
font-family: 'Roboto', sans-serif;
}
.header {
background: linear-gradient(135deg, #6e3aff, #b839ff);
padding: 10px;
border-radius: 10px;
}
.header h1, .header p {
color: white;
text-align: center;
}
.stButton button {
background-color: #b839ff;
color: white;
border-radius: 10px;
font-size: 16px;
padding: 10px 20px;
}
.stButton button:hover {
background-color: #6e3aff;
color: #e0e0e0;
}
.spinner {
display: flex;
justify-content: center;
align-items: center;
}
</style>
""", unsafe_allow_html=True)
# Function to initialize LLM
def initialize_llm(model):
return ChatGroq(
temperature=0,
groq_api_key=groq_api_key,
model_name=model
)
if __name__ == "__main__":
main()

View file

@ -1,90 +0,0 @@
from crewai import Agent
from crewai_tools import FileReadTool
# Function to initialize agents
def initialize_agents(llm,file_name,Temp_dir):
file_read_tool = FileReadTool()
return {
"Data_Reader_Agent": Agent(
role='Data_Reader_Agent',
goal="Read the uploaded dataset and provide it to other agents.",
backstory="Responsible for reading the uploaded dataset.",
verbose=True,
allow_delegation=False,
llm=llm,
tools=[file_read_tool]
),
"Problem_Definition_Agent": Agent(
role='Problem_Definition_Agent',
goal="Clarify the machine learning problem the user wants to solve.",
backstory="Expert in defining machine learning problems.",
verbose=True,
allow_delegation=False,
llm=llm,
),
"EDA_Agent": Agent(
role='EDA_Agent',
goal="Perform all possible Exploratory Data Analysis (EDA) on the data provided by the user.",
backstory="Specializes in conducting comprehensive EDA to understand the data characteristics, distributions, and relationships.",
verbose=True,
allow_delegation=False,
llm=llm,
),
"Feature_Engineering_Agent": Agent(
role='Feature_Engineering_Agent',
goal="Perform feature engineering on the data based on the EDA results provided by the EDA agent.",
backstory="Expert in deriving new features, transforming existing features, and preprocessing data to prepare it for modeling.",
verbose=True,
allow_delegation=False,
llm=llm,
),
"Model_Recommendation_Agent": Agent(
role='Model_Recommendation_Agent',
goal="Suggest the most suitable machine learning models.",
backstory="Expert in recommending machine learning algorithms.",
verbose=True,
allow_delegation=False,
llm=llm,
),
"Starter_Code_Generator_Agent": Agent(
role='Starter_Code_Generator_Agent',
goal=f"Generate starter Python code for the project. Always give dataset name as '{Temp_dir}/{file_name}",
backstory="Code wizard for generating starter code templates.",
verbose=True,
allow_delegation=False,
llm=llm,
),
"Code_Modification_Agent": Agent(
role='Code_Modification_Agent',
goal="Modify the generated Python code based on user suggestions.",
backstory="Expert in adapting code according to user feedback.",
verbose=True,
allow_delegation=False,
llm=llm,
),
# "Code_Runner_Agent": Agent(
# role='Code_Runner_Agent',
# goal="Run the generated Python code and catch any errors.",
# backstory="Debugging expert.",
# verbose=True,
# allow_delegation=True,
# llm=llm,
# ),
"Code_Debugger_Agent": Agent(
role='Code_Debugger_Agent',
goal="Debug the generated Python code.",
backstory="Seasoned code debugger.",
verbose=True,
allow_delegation=False,
llm=llm,
),
"Compiler_Agent":Agent(
role = "Code_compiler",
goal = "Extract only the python code. Remove any other things like backticks ``` and any thing like ```python```",
backstory = "You are the compiler which extract only the python code.",
verbose = True,
allow_delegation = False,
llm = llm
)
}

View file

@ -1,66 +0,0 @@
from crewai import Task
# Function to create tasks based on user inputs
def create_tasks(func_call,user_question,file_name, data_upload, df, suggestion, edited_code, debugger, agents):
info = df.info()
tasks = []
if(func_call == "Process"):
tasks.append(Task(
description=f"Clarify the ML problem: {user_question}",
agent=agents["Problem_Definition_Agent"],
expected_output="A clear and concise definition of the ML problem."
)
)
if data_upload:
tasks.extend([
Task(
description=f"Evaluate the data provided by the file name . This is the data: {df}",
agent=agents["EDA_Agent"],
expected_output="An assessment of the EDA and preprocessing like dataset info, missing value, duplication, outliers etc. on the data provided"
),
Task(
description=f"Feature Engineering on data {df} based on EDA output: {info}",
agent=agents["Feature_Engineering_Agent"],
expected_output="An assessment of the Featuring Engineering and preprocessing like handling missing values, handling duplication, handling outliers, feature encoding, feature scaling etc. on the data provided"
)
])
tasks.extend([
Task(
description="Suggest suitable ML models.",
agent=agents["Model_Recommendation_Agent"],
expected_output="A list of suitable ML models."
),
Task(
description=f"Generate starter Python code based on feature engineering, where column names are {df.columns.tolist()}. Generate only the code without any extra text",
agent=agents["Starter_Code_Generator_Agent"],
expected_output="Starter Python code."
),
])
if(func_call == "Modify"):
if suggestion:
tasks.append(
Task(
description=f"Modify the already generated code {edited_code} according to the suggestion: {suggestion} \n\n Do not generate entire new code.",
agent=agents["Code_Modification_Agent"],
expected_output="Modified code."
)
)
if(func_call == "Debug"):
if debugger:
tasks.append(
Task(
description=f"Debug and fix any errors for data with column names {df.columns.tolist()} with data as {df} in the generated code: {edited_code} \n\n According to the debugging: {debugger}. \n\n Do not generate entire new code. Just remove the error in the code by modifying only necessary parts of the code.",
agent=agents["Code_Debugger_Agent"],
expected_output="Debugged and successfully executed code."
)
)
tasks.append(
Task(
description = "Your job is to only extract python code from string",
agent = agents["Compiler_Agent"],
expected_output = "Running python code."
)
)
return tasks

View file

@ -1,11 +0,0 @@
streamlit
pandas
crewai
langchain_groq
streamlit_ace
crewai_tools
matplotlib
python-dotenv
seaborn
scikit-learn
tensorflow