CaseBasedReasoning/explore.ipynb

177 lines
5.2 KiB
Plaintext
Raw Normal View History

2022-12-13 13:25:31 +00:00
{
"cells": [
{
"cell_type": "code",
2022-12-22 17:35:20 +00:00
"execution_count": null,
2022-12-13 13:25:31 +00:00
"metadata": {},
"outputs": [],
"source": [
"from model import *\n",
"from similarity import *\n",
"import csv"
]
},
{
"cell_type": "code",
2022-12-22 17:35:20 +00:00
"execution_count": null,
2022-12-13 13:25:31 +00:00
"metadata": {},
"outputs": [],
2022-12-14 10:33:13 +00:00
"source": [
"def create_similarity_matrix(filename, key):\n",
" with open(filename) as file:\n",
" similarity_matrix = {}\n",
"\n",
" for line in csv.DictReader(file, skipinitialspace=True):\n",
" for k, v in line.items():\n",
" if k == key:\n",
" key_v = v\n",
" similarity_matrix[key_v] = {}\n",
" else:\n",
" similarity_matrix[key_v][k] = float(v)\n",
"\n",
" return similarity_matrix"
]
},
{
"cell_type": "code",
2022-12-22 17:35:20 +00:00
"execution_count": null,
2022-12-14 10:33:13 +00:00
"metadata": {},
2022-12-22 17:35:20 +00:00
"outputs": [],
2022-12-13 13:25:31 +00:00
"source": [
"case_base = CaseBase.from_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",
" solution_fields = (\"action\"),\n",
" encoding = \"utf-8\",\n",
" delimiter = \";\",\n",
" set_int = True\n",
")\n",
"print(case_base)\n",
"case_base[:3]"
]
},
{
"cell_type": "code",
2022-12-22 17:35:20 +00:00
"execution_count": null,
2022-12-13 13:25:31 +00:00
"metadata": {},
"outputs": [],
2022-12-14 10:33:13 +00:00
"source": [
"case_base.add_symbolic_sim(\n",
" field = \"type_left\",\n",
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
" field = \"type_front\",\n",
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
" field = \"type_vehicle\",\n",
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
" field = \"slope_street\",\n",
" similarity_matrix = create_similarity_matrix(\"data/street_slope_sim.csv\", \"type_street_slope\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
2022-12-22 16:39:16 +00:00
" field = \"street_type\",\n",
" similarity_matrix = create_similarity_matrix(\"data/street_type_sim.csv\", \"type_street\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
2022-12-14 10:33:13 +00:00
" field = \"time\",\n",
" similarity_matrix = create_similarity_matrix(\"data/time_type_sim.csv\", \"type_time\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
" field = \"weather\",\n",
" similarity_matrix = create_similarity_matrix(\"data/weather_type_sim.csv\", \"type_weather\")\n",
")\n"
]
2022-12-13 13:25:31 +00:00
},
{
"cell_type": "code",
2022-12-22 17:35:20 +00:00
"execution_count": null,
2022-12-13 13:25:31 +00:00
"metadata": {},
2022-12-22 17:35:20 +00:00
"outputs": [],
2022-12-13 13:25:31 +00:00
"source": [
"query = Query.from_problems(\n",
2022-12-22 17:35:20 +00:00
" v = 28.5,\n",
" v_left = 42.5,\n",
" v_front = 5,\n",
" d_left = -137,\n",
" d_front = 54,\n",
" type_left = \"motorcycle\",\n",
" type_front = \"truck\",\n",
" radius_curve = 2391,\n",
2022-12-22 16:39:16 +00:00
" slope_street = \"flat\",\n",
" street_type = \"country_road (separated)\",\n",
" time = \"day\",\n",
2022-12-22 17:35:20 +00:00
" weather = \"dry\",\n",
" type_vehicle = \"car\",\n",
" speed_limit = 100,\n",
2022-12-13 13:25:31 +00:00
")\n",
"\n",
2022-12-14 10:33:13 +00:00
"# sim_funcs: manhattan_sim, euclid_sim\n",
2022-12-13 13:25:31 +00:00
"retrieved = case_base.retrieve(\n",
" query,\n",
" v_left = euclid_sim,\n",
" v_front = euclid_sim,\n",
" d_left = euclid_sim,\n",
" d_front = euclid_sim,\n",
2022-12-14 10:33:13 +00:00
" type_left = symbolic_sim,\n",
" type_front = symbolic_sim,\n",
2022-12-22 16:39:16 +00:00
" radius_curve = euclid_sim,\n",
" slope_street = symbolic_sim,\n",
" street_type = symbolic_sim,\n",
" time = symbolic_sim,\n",
" weather = symbolic_sim,\n",
" type_vehicle = symbolic_sim,\n",
" speed_limit = euclid_sim,\n",
2022-12-13 13:25:31 +00:00
")\n",
"\n",
"print(\"Your Query:\")\n",
"for k, v in query.problem.items():\n",
" print(f\" - {k} = {v}\")\n",
"print()\n",
"print(\"I recommend you this car:\")\n",
"print(\" \".join(retrieved.solution.values()).capitalize())\n",
"print()\n",
"print(\"Explanation:\")\n",
"for field, sim_val in retrieved.sim_per_field.items():\n",
" print(f\" - {field} =\", retrieved.problem[field], f\"(similarity: {sim_val:.2f})\")"
]
}
],
"metadata": {
"kernelspec": {
2022-12-14 10:33:13 +00:00
"display_name": "venv",
2022-12-13 13:25:31 +00:00
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
2022-12-22 17:35:20 +00:00
"hash": "c6b11de3c41b7cafaa0ac1297b550056ae3875bbf0c337fa48ab4f33656fc527"
2022-12-13 13:25:31 +00:00
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}