Changed output, added some comments
This commit is contained in:
parent
c0fed7c932
commit
d5da356345
@ -1,11 +1,31 @@
|
|||||||
{
|
{
|
||||||
"cells": [
|
"cells": [
|
||||||
|
{
|
||||||
|
"attachments": {},
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Verkehrsszenario_Verhaltensprädiktion\n",
|
||||||
|
"\n",
|
||||||
|
"Es soll vorausgesagt werden, ob ein Fahrzeug in einer gegebenen Verkehrssituation das vorausfahrende Fahrzeug überholen wird. Dazu werden der Abstand und die Geschwindigkeit zum vorausfahrenden Fahrzeug gemessen. Zudem wird diese Information von einem Fahrzeug auf der linken Spur gemessen, welches sich von hinten nähert. Als weitere Informationen liegen die jeweiligen Fahrzeugtypen, das Wetter, die Tageszeit und die Straßenart und -krümmung vor.\n",
|
||||||
|
"\n",
|
||||||
|
"Mögliche vorherzusagende Reaktionen des Fahrzeugs sind: Geschwindigkeit und Spur beibehalten (continue), Verzögern (decelerate), Spurwechsel bei gleicher Geschwindigkeit (lane change) und Spurwechsel mit Beschleunigung (accelerated lane change).\n",
|
||||||
|
"Entwerfen Sie dazu ein geeignetes Ähnlichkeitsmaß und ermitteln Sie eine Repräsentation des Modells mit Hilfe von Case Based Learning (Verfahren aus der Vorlesung)\n",
|
||||||
|
"\n",
|
||||||
|
"## Aufgabenstellung\n",
|
||||||
|
"Entwickeln Sie eine Software, welche bei Eingabe einer Verkehrssituation (im gleichen Format) die Aktion des Fahrzeugs voraussagen kann. Diskutieren Sie Ihre Konfiguration und das Ergebnis.\n",
|
||||||
|
"\n",
|
||||||
|
"## Eingangsdaten\n",
|
||||||
|
"Ein Datensatz von Messungen in welchem ähnliche Situationen aufgezeichnet wurden -> data/SIM_001.csv"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": null,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
"# Imports\n",
|
||||||
"from model import *\n",
|
"from model import *\n",
|
||||||
"from similarity import *\n",
|
"from similarity import *\n",
|
||||||
"import csv"
|
"import csv"
|
||||||
@ -18,6 +38,16 @@
|
|||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"def create_similarity_matrix(filename, key):\n",
|
"def create_similarity_matrix(filename, key):\n",
|
||||||
|
" \"\"\" \n",
|
||||||
|
" Generates similarity matrix \n",
|
||||||
|
" \n",
|
||||||
|
" Arguments:\n",
|
||||||
|
" filename: the csv file name as string\n",
|
||||||
|
" key: the title of the csv which is the value in the first line and col\n",
|
||||||
|
"\n",
|
||||||
|
" Returns:\n",
|
||||||
|
" similarity dict\n",
|
||||||
|
" \"\"\"\n",
|
||||||
" with open(filename) as file:\n",
|
" with open(filename) as file:\n",
|
||||||
" similarity_matrix = {}\n",
|
" similarity_matrix = {}\n",
|
||||||
"\n",
|
"\n",
|
||||||
@ -38,16 +68,17 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"case_base = CaseBase.from_csv(\n",
|
"\"\"\"\n",
|
||||||
|
"Read data/SIM_001.csv\n",
|
||||||
|
"\"\"\"\n",
|
||||||
|
"case_base_obj = CaseBase.from_csv(\n",
|
||||||
" \"data/SIM_001.csv\",\n",
|
" \"data/SIM_001.csv\",\n",
|
||||||
" problem_fields = (\"v\", \"v_left\", \"v_front\", \"d_left\", \"d_front\", \"type_left\", \"type_front\", \"radius_curve(m)\", \"slope_street\", \"street_type\", \"time\", \"weather\", \"type_vehicle\", \"speed_limit(km/h)\"),\n",
|
" problem_fields = (\"v\", \"v_left\", \"v_front\", \"d_left\", \"d_front\", \"type_left\", \"type_front\", \"radius_curve(m)\", \"slope_street\", \"street_type\", \"time\", \"weather\", \"type_vehicle\", \"speed_limit(km/h)\"),\n",
|
||||||
" solution_fields = (\"action\"),\n",
|
" solution_fields = (\"action\"),\n",
|
||||||
" encoding = \"utf-8\",\n",
|
" encoding = \"utf-8\",\n",
|
||||||
" delimiter = \";\",\n",
|
" delimiter = \";\",\n",
|
||||||
" set_int = True\n",
|
" set_int = True\n",
|
||||||
")\n",
|
")"
|
||||||
"print(case_base)\n",
|
|
||||||
"case_base[:3]"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -56,40 +87,48 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"case_base.add_symbolic_sim(\n",
|
"\"\"\"\n",
|
||||||
|
"Read similarity matrices.\n",
|
||||||
|
" data/vehicle_type_sim.csv\n",
|
||||||
|
" data/street_slope_sim.csv\n",
|
||||||
|
" data/street_type_sim.csv\n",
|
||||||
|
" data/time_type_sim.csv\n",
|
||||||
|
" data/weather_type_sim.csv\n",
|
||||||
|
"\"\"\"\n",
|
||||||
|
"case_base_obj.add_symbolic_sim(\n",
|
||||||
" field = \"type_left\",\n",
|
" field = \"type_left\",\n",
|
||||||
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
|
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
|
||||||
")\n",
|
")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"case_base.add_symbolic_sim(\n",
|
"case_base_obj.add_symbolic_sim(\n",
|
||||||
" field = \"type_front\",\n",
|
" field = \"type_front\",\n",
|
||||||
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
|
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
|
||||||
")\n",
|
")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"case_base.add_symbolic_sim(\n",
|
"case_base_obj.add_symbolic_sim(\n",
|
||||||
" field = \"type_vehicle\",\n",
|
" field = \"type_vehicle\",\n",
|
||||||
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
|
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
|
||||||
")\n",
|
")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"case_base.add_symbolic_sim(\n",
|
"case_base_obj.add_symbolic_sim(\n",
|
||||||
" field = \"slope_street\",\n",
|
" field = \"slope_street\",\n",
|
||||||
" similarity_matrix = create_similarity_matrix(\"data/street_slope_sim.csv\", \"type_street_slope\")\n",
|
" similarity_matrix = create_similarity_matrix(\"data/street_slope_sim.csv\", \"type_street_slope\")\n",
|
||||||
")\n",
|
")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"case_base.add_symbolic_sim(\n",
|
"case_base_obj.add_symbolic_sim(\n",
|
||||||
" field = \"street_type\",\n",
|
" field = \"street_type\",\n",
|
||||||
" similarity_matrix = create_similarity_matrix(\"data/street_type_sim.csv\", \"type_street\")\n",
|
" similarity_matrix = create_similarity_matrix(\"data/street_type_sim.csv\", \"type_street\")\n",
|
||||||
")\n",
|
")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"case_base.add_symbolic_sim(\n",
|
"case_base_obj.add_symbolic_sim(\n",
|
||||||
" field = \"time\",\n",
|
" field = \"time\",\n",
|
||||||
" similarity_matrix = create_similarity_matrix(\"data/time_type_sim.csv\", \"type_time\")\n",
|
" similarity_matrix = create_similarity_matrix(\"data/time_type_sim.csv\", \"type_time\")\n",
|
||||||
")\n",
|
")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"case_base.add_symbolic_sim(\n",
|
"case_base_obj.add_symbolic_sim(\n",
|
||||||
" field = \"weather\",\n",
|
" field = \"weather\",\n",
|
||||||
" similarity_matrix = create_similarity_matrix(\"data/weather_type_sim.csv\", \"type_weather\")\n",
|
" similarity_matrix = create_similarity_matrix(\"data/weather_type_sim.csv\", \"type_weather\")\n",
|
||||||
")\n"
|
")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -98,6 +137,7 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
|
"# TODO Read query from cli\n",
|
||||||
"query = Query.from_problems(\n",
|
"query = Query.from_problems(\n",
|
||||||
" v = 28.5,\n",
|
" v = 28.5,\n",
|
||||||
" v_left = 42.5,\n",
|
" v_left = 42.5,\n",
|
||||||
@ -116,7 +156,7 @@
|
|||||||
")\n",
|
")\n",
|
||||||
"\n",
|
"\n",
|
||||||
"# sim_funcs: manhattan_sim, euclid_sim\n",
|
"# sim_funcs: manhattan_sim, euclid_sim\n",
|
||||||
"retrieved = case_base.retrieve(\n",
|
"retrieved = case_base_obj.retrieve(\n",
|
||||||
" query,\n",
|
" query,\n",
|
||||||
" v_left = euclid_sim,\n",
|
" v_left = euclid_sim,\n",
|
||||||
" v_front = euclid_sim,\n",
|
" v_front = euclid_sim,\n",
|
||||||
@ -137,12 +177,11 @@
|
|||||||
"for k, v in query.problem.items():\n",
|
"for k, v in query.problem.items():\n",
|
||||||
" print(f\" - {k} = {v}\")\n",
|
" print(f\" - {k} = {v}\")\n",
|
||||||
"print()\n",
|
"print()\n",
|
||||||
"print(\"I recommend you this car:\")\n",
|
"print(\"Prediction: \" + \" \".join(retrieved.solution.values()).capitalize())\n",
|
||||||
"print(\" \".join(retrieved.solution.values()).capitalize())\n",
|
|
||||||
"print()\n",
|
"print()\n",
|
||||||
"print(\"Explanation:\")\n",
|
"print(\"Explanation:\")\n",
|
||||||
"for field, sim_val in retrieved.sim_per_field.items():\n",
|
"for field, val in retrieved.sim_per_field.items():\n",
|
||||||
" print(f\" - {field} =\", retrieved.problem[field], f\"(similarity: {sim_val:.2f})\")"
|
" print(f\" - {field} =\", retrieved.problem[field], f\"(similarity: {val:.2f})\")"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
Loading…
Reference in New Issue
Block a user