Compare commits
2
Commits
No files matched your search
+3
-1
@@ -185,4 +185,6 @@ ipython_config.py
|
|||||||
|
|
||||||
|
|
||||||
.conda*/
|
.conda*/
|
||||||
dead/
|
|
||||||
|
data/
|
||||||
|
# for rn
|
||||||
File diff suppressed because it is too large.
Load diff
+66
-20
@@ -1,13 +1,45 @@
|
|||||||
|
import sys
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
import urllib.request
|
import urllib.request
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
import logging
|
||||||
from global_config import DATA_FILE_NAME
|
from global_config import DATA_FILE_NAME
|
||||||
|
|
||||||
|
# Configure logging
|
||||||
|
logging.basicConfig(
|
||||||
|
level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s"
|
||||||
|
)
|
||||||
|
|
||||||
# Define parameters
|
# Define parameters
|
||||||
latitude, longitude = 21.04815477090267, 105.80123159165096 # lmao
|
latitude, longitude = 21.04815477090267, 105.80123159165096 # Default: Hanoi
|
||||||
start_date = "1981-01-01"
|
# start_date = "1981-01-01"
|
||||||
|
start_date = "2001-01-01"
|
||||||
end_date = datetime.now().strftime("%Y-%m-%d") # Today's date
|
end_date = datetime.now().strftime("%Y-%m-%d") # Today's date
|
||||||
|
|
||||||
|
# most used parameters from NASA POWER API:
|
||||||
|
# T2M MERRA-2 Temperature at 2 Meters (C)
|
||||||
|
# T2M_MAX MERRA-2 Maximum Temperature at 2 Meters (C)
|
||||||
|
# T2M_MIN MERRA-2 Minimum Temperature at 2 Meters (C)
|
||||||
|
# T2MDEW MERRA-2 Dew/Frost Point at 2 Meters (C)
|
||||||
|
# T2MWET MERRA-2 Wet Bulb Temperature at 2 Meters (C)
|
||||||
|
# PRECTOTCORR MERRA-2 Precipitation Corrected (mm/day)
|
||||||
|
# ALLSKY_SFC_SW_DWN All Sky Surface Shortwave Downward Irradiance (kW-hr/m^2/day)
|
||||||
|
# CLRSKY_SFC_SW_DWN Clear Sky Surface Shortwave Downward Irradiance (kW-hr/m^2/day)
|
||||||
|
# RH2M MERRA-2 Relative Humidity at 2 Meters (%)
|
||||||
|
# QV2M MERRA-2 Specific Humidity at 2 Meters (g/kg)
|
||||||
|
# PS MERRA-2 Surface Pressure (kPa)
|
||||||
|
# WS10M MERRA-2 Wind Speed at 10 Meters (m/s)
|
||||||
|
# WS50M MERRA-2 Wind Speed at 50 Meters (m/s)
|
||||||
|
# WD10M MERRA-2 Wind Direction at 10 Meters (Degrees)
|
||||||
|
# WD50M MERRA-2 Wind Direction at 50 Meters (Degrees)
|
||||||
|
# TS MERRA-2 Earth Skin Temperature (C)
|
||||||
|
# PRECTOT MERRA-2 Precipitation (mm/day)
|
||||||
|
# ALLSKY_KT All Sky Insolation Clearness Index (dimensionless)
|
||||||
|
# CLRSKY_KT Clear Sky Insolation Clearness Index (dimensionless)
|
||||||
|
# ALLSKY_SFC_LW_DWN All Sky Surface Longwave Downward Irradiance (W/m^2)
|
||||||
|
# CLOUD_AMT Cloud amount (%)
|
||||||
|
|
||||||
|
|
||||||
# Define desired parameters
|
# Define desired parameters
|
||||||
# T2M MERRA-2 Temperature at 2 Meters (C)
|
# T2M MERRA-2 Temperature at 2 Meters (C)
|
||||||
# PRECTOTCORR MERRA-2 Precipitation Corrected (mm/day)
|
# PRECTOTCORR MERRA-2 Precipitation Corrected (mm/day)
|
||||||
@@ -18,21 +50,26 @@ end_date = datetime.now().strftime("%Y-%m-%d") # Today's date
|
|||||||
# WD10M MERRA-2 Wind Direction at 10 Meters (Degrees)
|
# WD10M MERRA-2 Wind Direction at 10 Meters (Degrees)
|
||||||
# more at https://power.larc.nasa.gov/data-access-viewer/
|
# more at https://power.larc.nasa.gov/data-access-viewer/
|
||||||
weather_params = [
|
weather_params = [
|
||||||
# "T2M",
|
"T2M",
|
||||||
# "T2M_MAX",
|
"T2M_MAX",
|
||||||
# "T2M_MIN",
|
"T2M_MIN",
|
||||||
# "T2MDEW",
|
"T2MDEW",
|
||||||
# "PRECTOTCORR",
|
"PRECTOTCORR",
|
||||||
"QV2M",
|
"QV2M",
|
||||||
# "RH2M",
|
"RH2M",
|
||||||
# "PS",
|
"PS",
|
||||||
# "CLOUD_AMT",
|
"CLOUD_AMT",
|
||||||
# "WS10M",
|
"WS10M",
|
||||||
# "WD10M",
|
"WD10M",
|
||||||
# "ALLSKY_KT",
|
"ALLSKY_KT",
|
||||||
# "ALLSKY_SFC_SW_DWN",
|
"ALLSKY_SFC_SW_DWN",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
if len(weather_params) > 20:
|
||||||
|
logging.error("too much! %d params bigger than 20", len(weather_params))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
params = {
|
params = {
|
||||||
"parameters": ",".join(weather_params),
|
"parameters": ",".join(weather_params),
|
||||||
"community": "RE",
|
"community": "RE",
|
||||||
@@ -53,13 +90,22 @@ url = f"{base_url}?{query_string}"
|
|||||||
|
|
||||||
# Make the API request using urllib
|
# Make the API request using urllib
|
||||||
try:
|
try:
|
||||||
|
logging.info("Requesting data from NASA POWER API...")
|
||||||
with urllib.request.urlopen(url) as response:
|
with urllib.request.urlopen(url) as response:
|
||||||
if response.status == 200:
|
if response.status == 200:
|
||||||
csv_data = response.read().decode("utf-8")
|
# Save data to file
|
||||||
with open(DATA_FILE_NAME, "w", encoding="utf-8") as file:
|
with open(DATA_FILE_NAME, "wb") as file:
|
||||||
file.write(csv_data)
|
while chunk := response.read(1024): # Read 1 KB at a time
|
||||||
print("Data successfully downloaded and saved to 'hanoi_weather_data.csv'.")
|
file.write(chunk)
|
||||||
|
logging.info(
|
||||||
|
"Data successfully downloaded and saved to '%s'.", DATA_FILE_NAME
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
print(f"Failed to retrieve data: HTTP Status Code {response.status}")
|
print("re", response.read().decode())
|
||||||
|
logging.error(
|
||||||
|
"Failed to retrieve data: HTTP Status Code %s", response.status
|
||||||
|
)
|
||||||
except urllib.error.URLError as e:
|
except urllib.error.URLError as e:
|
||||||
print(f"Failed to retrieve data: {e.reason}")
|
logging.error("Failed to retrieve data: %s", e)
|
||||||
|
except Exception as e:
|
||||||
|
logging.error("An unexpected error occurred: %s", e)
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
DATA_FILE_NAME = "data/hanoi_weather_data.csv"
|
DATA_FILE_NAME = "hanoi_weather_data.csv"
|
||||||
+16200
File diff suppressed because it is too large.
Load diff
+71
-4
@@ -5,11 +5,16 @@ import io
|
|||||||
# from itertools import islice
|
# from itertools import islice
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
from global_config import DATA_FILE_NAME
|
||||||
|
|
||||||
|
|
||||||
def cut_headers(stream: Union[io.StringIO, io.FileIO, io.TextIOWrapper]):
|
def cut_headers(stream: Union[io.StringIO, io.FileIO, io.TextIOWrapper]):
|
||||||
headers = []
|
headers = []
|
||||||
exist_startheader = False
|
exist_startheader = False
|
||||||
|
p99_header = 123 # should there be header
|
||||||
while line := stream.readline():
|
while (line := stream.readline()) and p99_header > 0:
|
||||||
if "-BEGIN HEADER-" in line and not exist_startheader:
|
if "-BEGIN HEADER-" in line and not exist_startheader:
|
||||||
exist_startheader = True
|
exist_startheader = True
|
||||||
headers.append(str(line.strip()))
|
headers.append(str(line.strip()))
|
||||||
@@ -20,9 +25,71 @@ def cut_headers(stream: Union[io.StringIO, io.FileIO, io.TextIOWrapper]):
|
|||||||
# print(f"{line = }")
|
# print(f"{line = }")
|
||||||
headers.append(str(line.strip()))
|
headers.append(str(line.strip()))
|
||||||
elif not exist_startheader:
|
elif not exist_startheader:
|
||||||
continue
|
p99_header -= 1
|
||||||
if not exist_startheader:
|
# continue
|
||||||
|
if not exist_startheader or p99_header == 0:
|
||||||
# If no headers are found, reset the stream and return
|
# If no headers are found, reset the stream and return
|
||||||
stream.seek(0)
|
stream.seek(0)
|
||||||
return "", stream
|
return "", stream
|
||||||
return "\n".join(headers), stream
|
return "\n".join(headers), stream
|
||||||
|
|
||||||
|
|
||||||
|
# if __name__ == "__main__":
|
||||||
|
# with open("hanoi_qv2m_latest.csv", "r", encoding="utf-8") as file:
|
||||||
|
# header, file = cut_headers(file)
|
||||||
|
# print("Extracted Header:")
|
||||||
|
# print(header)
|
||||||
|
# data = pd.read_csv(file)
|
||||||
|
# print("\nFirst 5 Lines of Data:")
|
||||||
|
# print(data.head())
|
||||||
|
# print(data.isnull().sum())
|
||||||
|
|
||||||
|
|
||||||
|
def load_data(
|
||||||
|
weather_file_name, columns=["Year", "Month", "Day", "Humidity"].copy(), na=-999
|
||||||
|
):
|
||||||
|
with open(weather_file_name, "r", encoding="utf-8") as file:
|
||||||
|
_header, file = cut_headers(file)
|
||||||
|
data = pd.read_csv(file, na_values=na)
|
||||||
|
# print(header)
|
||||||
|
data.columns = columns
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def date_combine(data: pd.DataFrame, verbose=False):
|
||||||
|
data["Date"] = pd.to_datetime(data[["Year", "Month", "Day"]])
|
||||||
|
data = data.drop(columns=["Year", "Month", "Day"])
|
||||||
|
if verbose:
|
||||||
|
print("b4 set index", data.columns)
|
||||||
|
data = data.set_index("Date")
|
||||||
|
if verbose:
|
||||||
|
print("after set index", data.columns)
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def validate_view(data: pd.DataFrame, verbose=False):
|
||||||
|
if verbose:
|
||||||
|
print(f"Shape with N/A values: {data.shape}")
|
||||||
|
isn = data.isnull().sum().iloc[0]
|
||||||
|
print(f"Count of N/A values: {isn}")
|
||||||
|
data = data.dropna() # Drop the rows with missing values
|
||||||
|
if verbose:
|
||||||
|
isn = data.isnull().sum().iloc[0]
|
||||||
|
print(f"Count after drop: {isn}")
|
||||||
|
print(data.describe())
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def load_this_data(filename=DATA_FILE_NAME, verbose=False, *a):
|
||||||
|
d = load_data(filename, *a)
|
||||||
|
d = date_combine(d, verbose)
|
||||||
|
d = validate_view(d, verbose)
|
||||||
|
if verbose:
|
||||||
|
print(d.head())
|
||||||
|
print(d.columns)
|
||||||
|
return d
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
load_this_data(verbose=True)
|
||||||
+186
-186
@@ -66,17 +66,17 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 2,
|
"execution_count": 2,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "9vfz_tsewSmD",
|
|
||||||
"outputId": "2efacccd-4025-444c-ab48-34ae58e55462",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 551
|
"height": 551
|
||||||
}
|
},
|
||||||
|
"id": "9vfz_tsewSmD",
|
||||||
|
"outputId": "2efacccd-4025-444c-ab48-34ae58e55462"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "stream",
|
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"-BEGIN HEADER-\n",
|
"-BEGIN HEADER-\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -98,17 +98,12 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"application/vnd.google.colaboratory.intrinsic+json": {
|
||||||
" Humidity\n",
|
"summary": "{\n \"name\": \"data\",\n \"rows\": 16197,\n \"fields\": [\n {\n \"column\": \"Date\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"1981-01-01 00:00:00\",\n \"max\": \"2025-05-06 00:00:00\",\n \"num_unique_values\": 16197,\n \"samples\": [\n \"2008-04-18 00:00:00\",\n \"1983-12-23 00:00:00\",\n \"1990-11-18 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Humidity\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 4.796305273033087,\n \"min\": 3.15,\n \"max\": 23.39,\n \"num_unique_values\": 1864,\n \"samples\": [\n 17.59,\n 16.12,\n 18.47\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
|
||||||
"Date \n",
|
"type": "dataframe",
|
||||||
"1981-01-01 9.57\n",
|
"variable_name": "data"
|
||||||
"1981-01-02 8.51\n",
|
},
|
||||||
"1981-01-03 7.24\n",
|
|
||||||
"1981-01-04 9.20\n",
|
|
||||||
"1981-01-05 11.80"
|
|
||||||
],
|
|
||||||
"text/html": [
|
"text/html": [
|
||||||
"\n",
|
"\n",
|
||||||
" <div id=\"df-7d81f82a-224a-4844-87a0-190aa05ad2ef\" class=\"colab-df-container\">\n",
|
" <div id=\"df-7d81f82a-224a-4844-87a0-190aa05ad2ef\" class=\"colab-df-container\">\n",
|
||||||
@@ -371,14 +366,19 @@
|
|||||||
" </div>\n",
|
" </div>\n",
|
||||||
" </div>\n"
|
" </div>\n"
|
||||||
],
|
],
|
||||||
"application/vnd.google.colaboratory.intrinsic+json": {
|
"text/plain": [
|
||||||
"type": "dataframe",
|
" Humidity\n",
|
||||||
"variable_name": "data",
|
"Date \n",
|
||||||
"summary": "{\n \"name\": \"data\",\n \"rows\": 16197,\n \"fields\": [\n {\n \"column\": \"Date\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"1981-01-01 00:00:00\",\n \"max\": \"2025-05-06 00:00:00\",\n \"num_unique_values\": 16197,\n \"samples\": [\n \"2008-04-18 00:00:00\",\n \"1983-12-23 00:00:00\",\n \"1990-11-18 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Humidity\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 4.796305273033087,\n \"min\": 3.15,\n \"max\": 23.39,\n \"num_unique_values\": 1864,\n \"samples\": [\n 17.59,\n 16.12,\n 18.47\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
|
"1981-01-01 9.57\n",
|
||||||
}
|
"1981-01-02 8.51\n",
|
||||||
|
"1981-01-03 7.24\n",
|
||||||
|
"1981-01-04 9.20\n",
|
||||||
|
"1981-01-05 11.80"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 2,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 2
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -420,22 +420,22 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 3,
|
"execution_count": 3,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "KGuNRxutwSmE",
|
|
||||||
"outputId": "c676b5a0-1b45-42ff-a23e-5e98d506c273",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/"
|
"base_uri": "https://localhost:8080/"
|
||||||
}
|
},
|
||||||
|
"id": "KGuNRxutwSmE",
|
||||||
|
"outputId": "c676b5a0-1b45-42ff-a23e-5e98d506c273"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"(16197, 1)"
|
"(16197, 1)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 3,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 3
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -445,23 +445,18 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 4,
|
"execution_count": null,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "gtFfTZ-fwSmE",
|
|
||||||
"outputId": "d304b35d-5e95-47e2-b0eb-b187b47984c8",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 115
|
"height": 115
|
||||||
}
|
},
|
||||||
|
"id": "gtFfTZ-fwSmE",
|
||||||
|
"outputId": "d304b35d-5e95-47e2-b0eb-b187b47984c8"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
|
||||||
"Humidity 3\n",
|
|
||||||
"dtype: int64"
|
|
||||||
],
|
|
||||||
"text/html": [
|
"text/html": [
|
||||||
"<div>\n",
|
"<div>\n",
|
||||||
"<style scoped>\n",
|
"<style scoped>\n",
|
||||||
@@ -492,36 +487,36 @@
|
|||||||
" </tbody>\n",
|
" </tbody>\n",
|
||||||
"</table>\n",
|
"</table>\n",
|
||||||
"</div><br><label><b>dtype:</b> int64</label>"
|
"</div><br><label><b>dtype:</b> int64</label>"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"Humidity 3\n",
|
||||||
|
"dtype: int64"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 4,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 4
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"data.isnull().sum()\n",
|
"data.isna().sum()\n",
|
||||||
"# There are 3 missing values in Humidity column"
|
"# There are 3 missing values in Humidity column"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 5,
|
"execution_count": null,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "yJuOfNUrwSmE",
|
|
||||||
"outputId": "a1614ee6-5680-4f54-bcfd-769a9a78943f",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 115
|
"height": 115
|
||||||
}
|
},
|
||||||
|
"id": "yJuOfNUrwSmE",
|
||||||
|
"outputId": "a1614ee6-5680-4f54-bcfd-769a9a78943f"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
|
||||||
"Humidity 0\n",
|
|
||||||
"dtype: int64"
|
|
||||||
],
|
|
||||||
"text/html": [
|
"text/html": [
|
||||||
"<div>\n",
|
"<div>\n",
|
||||||
"<style scoped>\n",
|
"<style scoped>\n",
|
||||||
@@ -552,10 +547,15 @@
|
|||||||
" </tbody>\n",
|
" </tbody>\n",
|
||||||
"</table>\n",
|
"</table>\n",
|
||||||
"</div><br><label><b>dtype:</b> int64</label>"
|
"</div><br><label><b>dtype:</b> int64</label>"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"Humidity 0\n",
|
||||||
|
"dtype: int64"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 5,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 5
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -567,28 +567,20 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 6,
|
"execution_count": 6,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "ODdNZOukwSmF",
|
|
||||||
"outputId": "f54da03b-895c-4027-9116-d76e88c093ad",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 300
|
"height": 300
|
||||||
}
|
},
|
||||||
|
"id": "ODdNZOukwSmF",
|
||||||
|
"outputId": "f54da03b-895c-4027-9116-d76e88c093ad"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"application/vnd.google.colaboratory.intrinsic+json": {
|
||||||
" Humidity\n",
|
"summary": "{\n \"name\": \"data\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"Humidity\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5720.786588664725,\n \"min\": 3.15,\n \"max\": 16194.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 14.918440163023341,\n 15.57,\n 16194.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
|
||||||
"count 16194.000000\n",
|
"type": "dataframe"
|
||||||
"mean 14.918440\n",
|
},
|
||||||
"std 4.796305\n",
|
|
||||||
"min 3.150000\n",
|
|
||||||
"25% 11.150000\n",
|
|
||||||
"50% 15.570000\n",
|
|
||||||
"75% 19.310000\n",
|
|
||||||
"max 23.390000"
|
|
||||||
],
|
|
||||||
"text/html": [
|
"text/html": [
|
||||||
"\n",
|
"\n",
|
||||||
" <div id=\"df-3372d7c2-bbe3-491a-9a48-20a3092647a3\" class=\"colab-df-container\">\n",
|
" <div id=\"df-3372d7c2-bbe3-491a-9a48-20a3092647a3\" class=\"colab-df-container\">\n",
|
||||||
@@ -859,13 +851,21 @@
|
|||||||
" </div>\n",
|
" </div>\n",
|
||||||
" </div>\n"
|
" </div>\n"
|
||||||
],
|
],
|
||||||
"application/vnd.google.colaboratory.intrinsic+json": {
|
"text/plain": [
|
||||||
"type": "dataframe",
|
" Humidity\n",
|
||||||
"summary": "{\n \"name\": \"data\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"Humidity\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5720.786588664725,\n \"min\": 3.15,\n \"max\": 16194.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 14.918440163023341,\n 15.57,\n 16194.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
|
"count 16194.000000\n",
|
||||||
}
|
"mean 14.918440\n",
|
||||||
|
"std 4.796305\n",
|
||||||
|
"min 3.150000\n",
|
||||||
|
"25% 11.150000\n",
|
||||||
|
"50% 15.570000\n",
|
||||||
|
"75% 19.310000\n",
|
||||||
|
"max 23.390000"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 6,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 6
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -887,33 +887,33 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 7,
|
"execution_count": 7,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "F_GnBSNPwSmF",
|
|
||||||
"outputId": "b3ae5237-1ead-4d3b-dbe4-fd3415e3be51",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 444
|
"height": 444
|
||||||
}
|
},
|
||||||
|
"id": "F_GnBSNPwSmF",
|
||||||
|
"outputId": "b3ae5237-1ead-4d3b-dbe4-fd3415e3be51"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<matplotlib.legend.Legend at 0x7c5c365680d0>"
|
"<matplotlib.legend.Legend at 0x7c5c365680d0>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 7,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 7
|
"output_type": "execute_result"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
"data": {
|
||||||
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 2000x500 with 1 Axes>"
|
"<Figure size 2000x500 with 1 Axes>"
|
||||||
],
|
]
|
||||||
"image/png": "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 truncated
|
|
||||||
},
|
},
|
||||||
"metadata": {}
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -937,23 +937,23 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 8,
|
"execution_count": 8,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "qL3DAMVOwSmF",
|
|
||||||
"outputId": "4a1a8687-7e28-4ae0-8c4c-1b1dec21f004",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 314
|
"height": 314
|
||||||
}
|
},
|
||||||
|
"id": "qL3DAMVOwSmF",
|
||||||
|
"outputId": "4a1a8687-7e28-4ae0-8c4c-1b1dec21f004"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
"data": {
|
||||||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABNIAAAEpCAYAAABWYg+uAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVTJJREFUeJzt3XlcVfW+//H3BmUDFjiAIEriUA45dSRJs7TkiEOD5dix63BNOyZ1FMuhm5razWuD2WBZnRy6aQ6VZsO1TLNORZqaeSr1p4az4AgIKCj7+/vD2LJhgxvcm83wej4e+yF7re/6ru9a7PLje6/vWhZjjBEAAAAAAACAYvl4ewAAAAAAAABARUCQBgAAAAAAALiAIA0AAAAAAABwAUEaAAAAAAAA4AKCNAAAAAAAAMAFBGkAAAAAAACACwjSAAAAAAAAABcQpAEAAAAAAAAuIEgDAAAAAAAAXECQBsBlTz/9tCwWS6m27dq1q7p27ereAcEpT5zrq/ndAwAAVDYbN26UxWLRxo0b3dqvxWLR008/7dY+AbgXQRpQQSxatEgWi8X+8vf31w033KD4+HilpKS4bT9ZWVl6+umn3V4UlFRubq4iIiJksVj0f//3f1fVV3k5pvKO8wQAQNX0+uuvy2KxKCYm5qr6+fzzzwmBXMB5Aio2gjSggpkxY4b+93//V6+99po6deqkN954Qx07dlRWVpZb+s/KytL06dOdhilPPfWUzp0755b9XMmGDRt07NgxRUVFacmSJVfVV3HHhMvKy+8eAACUrSVLligqKkqbN2/W3r17S93P559/runTp7txZJVTcefp3Llzeuqpp8p4RABKgiANqGB69uypBx98UA899JAWLVqksWPHKikpSR9//PFV9Wuz2XT+/Pli21SrVk3+/v5XtR9Xvffee/rLX/6icePGafXq1crMzCyT/XrL+fPnZbPZnK4rD8delr97AABQdpKSkvTDDz9ozpw5Cg0NveovMMu7or58vnjxonJycsp4NIX5+/urWrVq3h4GgGIQpAEV3J133inpUhEkSS+88II6deqkOnXqKCAgQO3bt9cHH3xQaDuLxaL4+HgtWbJEN954o6xWq+bPn6/Q0FBJ0vTp0+3TSPMuPXd2n6yFCxfqzjvvVN26dWW1WtWyZUu98cYbV3VM586d06pVqzRo0CANGDBA586dcxoUFnUvsGHDhikqKkqStH///mKPSbp09dttt92mGjVqqGbNmrr33nu1c+fOQv0eOXJEI0aMUEREhKxWqxo1aqTRo0c7FF1//PGH+vfvr9q1ayswMFC33HKLPvvsM4d+8u6psWzZMj311FOqX7++AgMDlZ6ermHDhumaa67Rvn371KtXL1177bUaPHiwpEth59y5c3XjjTfK399fYWFhevjhh3XmzJliz2dOTo6mTp2q9u3bKzg4WDVq1NBtt92mr7/+2t7mSufJ2e/+4sWLmjlzppo0aSKr1aqoqCg9+eSTys7OdmgXFRWlu+66S9999506dOggf39/NW7cWO+++26x4wYAAJ63ZMkS1apVS71791a/fv0KBWlF3Qts//79slgsWrRokaRL9de8efMkyeF2JHkyMzM1fvx4RUZGymq1qlmzZnrhhRdkjCk0pvfee08dOnRQYGCgatWqpdtvv11ffvmlQ5vXX3/dXsNGRERozJgxSk1NdWjTtWtXtWrVSlu3btXtt9+uwMBAPfnkk/axv/DCC5o7d669lvn9998lSbt27VK/fv1Uu3Zt+fv7Kzo6WmvWrLniufzXv/6l/v3767rrrpPValVkZKTGjRvncFX/lc6Ts3uk/fzzz+rZs6eCgoJ0zTXXqFu3bvrxxx8d2uTdBub7779XQkKCQkNDVaNGDd133306ceLEFccOwHVE3UAFt2/fPklSnTp1JEkvv/yy7rnnHg0ePFg5OTlatmyZ+vfvr08//VS9e/d22HbDhg1asWKF4uPjFRISorZt2+qNN97Q6NGjdd999+n++++XJLVp06bI/b/xxhu68cYbdc8996hatWr65JNP9Mgjj8hms2nMmDGlOqY1a9YoIyNDgwYNUnh4uLp27aolS5bob3/7W4n7Cg0NLfaYvvrqK/Xs2VONGzfW008/rXPnzunVV1/Vrbfeqm3bttkDuaNHj6pDhw5KTU3VqFGj1Lx5cx05ckQffPCBsrKy5Ofnp5SUFHXq1ElZWVl67LHHVKdOHS1evFj33HOPPvjgA913330OY5s5c6b8/Pz0+OOPKzs7W35+fpIuBVRxcXHq3LmzXnjhBQUGBkqSHn74YS1atEjDhw/XY489pqSkJL322mv6+eef9f3336t69epOz0F6err++c9/6oEHHtDIkSN19uxZvfPOO4qLi9PmzZvVrl27K54nZx566CEtXrxY/fr10/jx47Vp0ybNmjVLO3fu1KpVqxza7t27V/369dOIESM0dOhQLViwQMOGDVP79u114403lvC3CgAA3GXJkiW6//775efnpwceeEBvvPGGfvrpJ918880l6ufhhx/W0aNHtW7dOv3v//6vwzpjjO655x59/fXXGjFihNq1a6cvvvhCTzzxhI4cOaKXXnrJ3nb69Ol6+umn1alTJ82YMUN+fn7atGmTNmzYoO7du0u69AXf9OnTFRsbq9GjR2v37t32cResiU6dOqWePXtq0KBBevDBBxUWFmZft3DhQp0/f16jRo2S1WpV7dq19dtvv+nWW29V/fr1NWnSJNWoUUMrVqxQnz599OGHHxaq5/JbuXKlsrKyNHr0aNWpU0ebN2/Wq6++qsOHD2vlypVXPE/O/Pbbb7rtttsUFBSkCRMmqHr16nrzzTfVtWtXffPNN4Xua/foo4+qVq1amjZtmvbv36+5c+cqPj5ey5cvv+K+ALjIAKgQFi5caCSZr776ypw4ccIcOnTILFu2zNSpU8cEBASYw4cPG2OMycrKctguJyfHtGrVytx5550OyyUZHx8f89tvvzksP3HihJFkpk2bVmgM06ZNMwX/t1Fwf8YYExcXZxo3buywrEuXLqZLly4uHetdd91lbr31Vvv7t956y1SrVs0cP37cpT6HDh1qGjZsaH9f3DG1a9fO1K1b15w6dcq+7JdffjE+Pj5myJAh9mVDhgwxPj4+5qeffirUh81mM8YYM3bsWCPJ/Otf/7KvO3v2rGnUqJGJiooyubm5xhhjvv76ayPJNG7cuND5Gzp0qJFkJk2a5LD8X//6l5FklixZ4rB87dq1hZYXPC8XL1402dnZDtudOXPGhIWFmf/8z/906TwV/N1v377dSDIPPfSQQ7vHH3/cSDIbNmywL2vYsKGRZL799lv7suPHjxur1WrGjx9faF8AAKBsbNmyxUgy69atM8ZcqmkaNGhg/vGPf9jb5NUtX3/9tcO2SUlJRpJZuHChfdmYMWMK1YrGGLN69WojyTzzzDMOy/v162csFovZu3evMcaYPXv2GB8fH3PffffZ66Y8efXW8ePHjZ+fn+nevbtDm9dee81IMgsWLLAv69Kli5Fk5s+f73TsQUFBherLbt26mdatW5vz58877LtTp07m+uuvL/a8OKuLZ82aZSwWizlw4MAVz5MxplAt1qdPH+Pn52f27dtnX3b06FFz7bXXmttvv92+LO/fCrGxsfZzZYwx48aNM76+viY1NdXp/gCUHFM7gQomNjZWoaGhioyM1KBBg3TNNddo1apVql+/viQpICDA3vbMmTNKS0vTbbfdpm3bthXqq0uXLmrZsuVVjSf//tLS0nTy5El16dJFf/zxh9LS0krc36lTp/TFF1/ogQcesC/r27evLBaLVqxYcVVjLejYsWPavn27hg0bptq1a9uXt2nTRn/961/1+eefS7o0pXL16tW6++67FR0dXaifvMvxP//8c3Xo0EGdO3e2r7vmmms0atQo7d+/3z5dIM/QoUMdzl9+o0ePdni/cuVKBQcH669//atOnjxpf7Vv317XXHONwzTNgnx9fe1Xu9lsNp0+fVoXL15UdHS008+FK/LOTUJCgsPy8ePHS1Kh6awtW7bUbbfdZn8fGhqqZs2a6Y8//ijV/gEAwNVbsmSJwsLCdMcdd0i6VNMMHDhQy5YtU25urtv28/nnn8vX11ePPfaYw/Lx48fLGGN/Qvvq1atls9k0depU+fg4/lM1r9766quvlJOTo7Fjxzq0GTlypIKCggrVIFarVcOHD3c6rr59+9pvbSFJp0+f1oYNGzRgwACdPXvWXm+dOnVKcXFx2rNnj44cOVLkceav6zIzM3Xy5El16tRJxhj9/PPPxZ0ip3Jzc/Xll1+qT58+aty4sX15vXr19Le//U3fffed0tPTHbYZNWqUw1TR2267Tbm5uTpw4ECJ9w/AOaZ2AhXMvHnzdMMNN6hatWoKCwtTs2bNHIqITz/9VM8884y2b9/ucK+qgve3kqRGjRpd9Xi+//57TZs2TYmJiYVu3pqWlqbg4OAS9bd8+XJduHBBN910k8NTo2JiYrRkyZJSTxd1Jq+gaNasWaF1LVq00BdffKHMzExlZGQoPT1drVq1umJ/zh4b36JFC/v6/H0Udf6rVaumBg0aOCzbs2eP0tLSVLduXafbHD9+vNixLV68WC+++KJ27dqlCxcuXHEMV3LgwAH5+PioadOmDsvDw8NVs2bNQsXaddddV6iPWrVqXfH+bgAAwDNyc3O1bNky3XHHHfZ77UqXaq4XX3xR69evt0+lvFoHDhxQRESErr32Wofl+Wsk6dItS3x8fIr9oreo+s3Pz0+NGzcuVIPUr1/f/oViQQXroL1798oYoylTpmjKlClOtzl+/Lj9C+yCDh48qKlTp2rNmjWFapzSfMF84sQJZWVlFVmr2mw2HTp0yOE2GQVrrlq1akkSNRfgRgRpQAXToUMHp1dFSZducHrPPffo9ttv1+uvv6569eqpevXqWrhwoZYuXVqofVFXQ7lq3Line truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 1500x300 with 2 Axes>"
|
"<Figure size 1500x300 with 2 Axes>"
|
||||||
],
|
]
|
||||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABNIAAAEpCAYAAABWYg+uAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVTJJREFUeJzt3XlcVfW+//H3BmUDFjiAIEriUA45dSRJs7TkiEOD5dix63BNOyZ1FMuhm5razWuD2WBZnRy6aQ6VZsO1TLNORZqaeSr1p4az4AgIKCj7+/vD2LJhgxvcm83wej4e+yF7re/6ru9a7PLje6/vWhZjjBEAAAAAAACAYvl4ewAAAAAAAABARUCQBgAAAAAAALiAIA0AAAAAAABwAUEaAAAAAAAA4AKCNAAAAAAAAMAFBGkAAAAAAACACwjSAAAAAAAAABcQpAEAAAAAAAAuIEgDAAAAAAAAXECQBsBlTz/9tCwWS6m27dq1q7p27ereAcEpT5zrq/ndAwAAVDYbN26UxWLRxo0b3dqvxWLR008/7dY+AbgXQRpQQSxatEgWi8X+8vf31w033KD4+HilpKS4bT9ZWVl6+umn3V4UlFRubq4iIiJksVj0f//3f1fVV3k5pvKO8wQAQNX0+uuvy2KxKCYm5qr6+fzzzwmBXMB5Aio2gjSggpkxY4b+93//V6+99po6deqkN954Qx07dlRWVpZb+s/KytL06dOdhilPPfWUzp0755b9XMmGDRt07NgxRUVFacmSJVfVV3HHhMvKy+8eAACUrSVLligqKkqbN2/W3r17S93P559/runTp7txZJVTcefp3Llzeuqpp8p4RABKgiANqGB69uypBx98UA899JAWLVqksWPHKikpSR9//PFV9Wuz2XT+/Pli21SrVk3+/v5XtR9Xvffee/rLX/6icePGafXq1crMzCyT/XrL+fPnZbPZnK4rD8delr97AABQdpKSkvTDDz9ozpw5Cg0NveovMMu7or58vnjxonJycsp4NIX5+/urWrVq3h4GgGIQpAEV3J133inpUhEkSS+88II6deqkOnXqKCAgQO3bt9cHH3xQaDuLxaL4+HgtWbJEN954o6xWq+bPn6/Q0FBJ0vTp0+3TSPMuPXd2n6yFCxfqzjvvVN26dWW1WtWyZUu98cYbV3VM586d06pVqzRo0CANGDBA586dcxoUFnUvsGHDhikqKkqStH///mKPSbp09dttt92mGjVqqGbNmrr33nu1c+fOQv0eOXJEI0aMUEREhKxWqxo1aqTRo0c7FF1//PGH+vfvr9q1ayswMFC33HKLPvvsM4d+8u6psWzZMj311FOqX7++AgMDlZ6ermHDhumaa67Rvn371KtXL1177bUaPHiwpEth59y5c3XjjTfK399fYWFhevjhh3XmzJliz2dOTo6mTp2q9u3bKzg4WDVq1NBtt92mr7/+2t7mSufJ2e/+4sWLmjlzppo0aSKr1aqoqCg9+eSTys7OdmgXFRWlu+66S9999506dOggf39/NW7cWO+++26x4wYAAJ63ZMkS1apVS71791a/fv0KBWlF3Qts//79slgsWrRokaRL9de8efMkyeF2JHkyMzM1fvx4RUZGymq1qlmzZnrhhRdkjCk0pvfee08dOnRQYGCgatWqpdtvv11ffvmlQ5vXX3/dXsNGRERozJgxSk1NdWjTtWtXtWrVSlu3btXtt9+uwMBAPfnkk/axv/DCC5o7d669lvn9998lSbt27VK/fv1Uu3Zt+fv7Kzo6WmvWrLniufzXv/6l/v3767rrrpPValVkZKTGjRvncFX/lc6Ts3uk/fzzz+rZs6eCgoJ0zTXXqFu3bvrxxx8d2uTdBub7779XQkKCQkNDVaNGDd133306ceLEFccOwHVE3UAFt2/fPklSnTp1JEkvv/yy7rnnHg0ePFg5OTlatmyZ+vfvr08//VS9e/d22HbDhg1asWKF4uPjFRISorZt2+qNN97Q6NGjdd999+n++++XJLVp06bI/b/xxhu68cYbdc8996hatWr65JNP9Mgjj8hms2nMmDGlOqY1a9YoIyNDgwYNUnh4uLp27aolS5bob3/7W4n7Cg0NLfaYvvrqK/Xs2VONGzfW008/rXPnzunVV1/Vrbfeqm3bttkDuaNHj6pDhw5KTU3VqFGj1Lx5cx05ckQffPCBsrKy5Ofnp5SUFHXq1ElZWVl67LHHVKdOHS1evFj33HOPPvjgA913330OY5s5c6b8/Pz0+OOPKzs7W35+fpIuBVRxcXHq3LmzXnjhBQUGBkqSHn74YS1atEjDhw/XY489pqSkJL322mv6+eef9f3336t69epOz0F6err++c9/6oEHHtDIkSN19uxZvfPOO4qLi9PmzZvVrl27K54nZx566CEtXrxY/fr10/jx47Vp0ybNmjVLO3fu1KpVqxza7t27V/369dOIESM0dOhQLViwQMOGDVP79u114403lvC3CgAA3GXJkiW6//775efnpwceeEBvvPGGfvrpJ918880l6ufhhx/W0aNHtW7dOv3v//6vwzpjjO655x59/fXXGjFihNq1a6cvvvhCTzzxhI4cOaKXXnrJ3nb69Ol6+umn1alTJ82YMUN+fn7atGmTNmzYoO7du0u69AXf9OnTFRsbq9GjR2v37t32cResiU6dOqWePXtq0KBBevDBBxUWFmZft3DhQp0/f16jRo2S1WpV7dq19dtvv+nWW29V/fr1NWnSJNWoUUMrVqxQnz599OGHHxaq5/JbuXKlsrKyNHr0aNWpU0ebN2/Wq6++qsOHD2vlypVXPE/O/Pbbb7rtttsUFBSkCRMmqHr16nrzzTfVtWtXffPNN4Xua/foo4+qVq1amjZtmvbv36+5c+cqPj5ey5cvv+K+ALjIAKgQFi5caCSZr776ypw4ccIcOnTILFu2zNSpU8cEBASYw4cPG2OMycrKctguJyfHtGrVytx5550OyyUZHx8f89tvvzksP3HihJFkpk2bVmgM06ZNMwX/t1Fwf8YYExcXZxo3buywrEuXLqZLly4uHetdd91lbr31Vvv7t956y1SrVs0cP37cpT6HDh1qGjZsaH9f3DG1a9fO1K1b15w6dcq+7JdffjE+Pj5myJAh9mVDhgwxPj4+5qeffirUh81mM8YYM3bsWCPJ/Otf/7KvO3v2rGnUqJGJiooyubm5xhhjvv76ayPJNG7cuND5Gzp0qJFkJk2a5LD8X//6l5FklixZ4rB87dq1hZYXPC8XL1402dnZDtudOXPGhIWFmf/8z/906TwV/N1v377dSDIPPfSQQ7vHH3/cSDIbNmywL2vYsKGRZL799lv7suPHjxur1WrGjx9faF8AAKBsbNmyxUgy69atM8ZcqmkaNGhg/vGPf9jb5NUtX3/9tcO2SUlJRpJZuHChfdmYMWMK1YrGGLN69WojyTzzzDMOy/v162csFovZu3evMcaYPXv2GB8fH3PffffZ66Y8efXW8ePHjZ+fn+nevbtDm9dee81IMgsWLLAv69Kli5Fk5s+f73TsQUFBherLbt26mdatW5vz58877LtTp07m+uuvL/a8OKuLZ82aZSwWizlw4MAVz5MxplAt1qdPH+Pn52f27dtnX3b06FFz7bXXmttvv92+LO/fCrGxsfZzZYwx48aNM76+viY1NdXp/gCUHFM7gQomNjZWoaGhioyM1KBBg3TNNddo1apVql+/viQpICDA3vbMmTNKS0vTbbfdpm3bthXqq0uXLmrZsuVVjSf//tLS0nTy5El16dJFf/zxh9LS0krc36lTp/TFF1/ogQcesC/r27evLBaLVqxYcVVjLejYsWPavn27hg0bptq1a9uXt2nTRn/961/1+eefS7o0pXL16tW6++67FR0dXaifvMvxP//8c3Xo0EGdO3e2r7vmmms0atQo7d+/3z5dIM/QoUMdzl9+o0ePdni/cuVKBQcH669//atOnjxpf7Vv317XXHONwzTNgnx9fe1Xu9lsNp0+fVoXL15UdHS008+FK/LOTUJCgsPy8ePHS1Kh6awtW7bUbbfdZn8fGhqqZs2a6Y8//ijV/gEAwNVbsmSJwsLCdMcdd0i6VNMMHDhQy5YtU25urtv28/nnn8vX11ePPfaYw/Lx48fLGGN/Qvvq1atls9k0depU+fg4/lM1r9766quvlJOTo7Fjxzq0GTlypIKCggrVIFarVcOHD3c6rr59+9pvbSFJp0+f1oYNGzRgwACdPXvWXm+dOnVKcXFx2rNnj44cOVLkceav6zIzM3Xy5El16tRJxhj9/PPPxZ0ip3Jzc/Xll1+qT58+aty4sX15vXr19Le//U3fffed0tPTHbYZNWqUw1TR2267Tbm5uTpw4ECJ9w/AOaZ2AhXMvHnzdMMNN6hatWoKCwtTs2bNHIqITz/9VM8884y2b9/ucK+qgve3kqRGjRpd9Xi+//57TZs2TYmJiYVu3pqWlqbg4OAS9bd8+XJduHBBN910k8NTo2JiYrRkyZJSTxd1Jq+gaNasWaF1LVq00BdffKHMzExlZGQoPT1drVq1umJ/zh4b36JFC/v6/H0Udf6rVaumBg0aOCzbs2eP0tLSVLduXafbHD9+vNixLV68WC+++KJ27dqlCxcuXHEMV3LgwAH5+PioadOmDsvDw8NVs2bNQsXaddddV6iPWrVqXfH+bgAAwDNyc3O1bNky3XHHHfZ77UqXaq4XX3xR69evt0+lvFoHDhxQRESErr32Wofl+Wsk6dItS3x8fIr9oreo+s3Pz0+NGzcuVIPUr1/f/oViQQXroL1798oYoylTpmjKlClOtzl+/Lj9C+yCDh48qKlTp2rNmjWFapzSfMF84sQJZWVlFVmr2mw2HTp0yOE2GQVrrlq1akkSNRfgRgRpQAXToUMHp1dFSZducHrPPffo9ttv1+uvv6569eqpevXqWrhwoZYuXVqofVFXQ7lq3Line truncated
|
|
||||||
},
|
},
|
||||||
"metadata": {}
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -1014,22 +1014,22 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 12,
|
"execution_count": 12,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "sZHbbu6QwSmG",
|
|
||||||
"outputId": "26b04185-11a0-4d02-9f7d-05afe5ead8c9",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/"
|
"base_uri": "https://localhost:8080/"
|
||||||
}
|
},
|
||||||
|
"id": "sZHbbu6QwSmG",
|
||||||
|
"outputId": "26b04185-11a0-4d02-9f7d-05afe5ead8c9"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"((12955, 1), (3239, 1))"
|
"((12955, 1), (3239, 1))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 12,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 12
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -1121,45 +1121,29 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 16,
|
"execution_count": 16,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "hYq8SOknwSmI",
|
|
||||||
"outputId": "c233d7a4-d35d-4cd4-d152-9e80dab70ce7",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 300
|
"height": 300
|
||||||
}
|
},
|
||||||
|
"id": "hYq8SOknwSmI",
|
||||||
|
"outputId": "c233d7a4-d35d-4cd4-d152-9e80dab70ce7"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
|
||||||
"\u001b[1mModel: \"sequential\"\u001b[0m\n"
|
|
||||||
],
|
|
||||||
"text/html": [
|
"text/html": [
|
||||||
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n",
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential\"</span>\n",
|
||||||
"</pre>\n"
|
"</pre>\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"\u001b[1mModel: \"sequential\"\u001b[0m\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {}
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
|
||||||
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
|
|
||||||
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
|
|
||||||
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
|
|
||||||
"│ lstm (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m16,896\u001b[0m │\n",
|
|
||||||
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
||||||
"│ dropout (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
||||||
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
||||||
"│ lstm_1 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m33,024\u001b[0m │\n",
|
|
||||||
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
||||||
"│ lstm_2 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m33,024\u001b[0m │\n",
|
|
||||||
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
||||||
"│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m) │ \u001b[38;5;34m65\u001b[0m │\n",
|
|
||||||
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
|
|
||||||
],
|
|
||||||
"text/html": [
|
"text/html": [
|
||||||
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
|
||||||
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
|
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
|
||||||
@@ -1175,48 +1159,64 @@
|
|||||||
"│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span> │\n",
|
"│ dense (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span> │\n",
|
||||||
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
|
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
|
||||||
"</pre>\n"
|
"</pre>\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
|
||||||
|
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
|
||||||
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
|
||||||
|
"│ lstm (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m16,896\u001b[0m │\n",
|
||||||
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
||||||
|
"│ dropout (\u001b[38;5;33mDropout\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
||||||
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
||||||
|
"│ lstm_1 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m100\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m33,024\u001b[0m │\n",
|
||||||
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
||||||
|
"│ lstm_2 (\u001b[38;5;33mLSTM\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m33,024\u001b[0m │\n",
|
||||||
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
||||||
|
"│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m) │ \u001b[38;5;34m65\u001b[0m │\n",
|
||||||
|
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {}
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
|
||||||
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m83,009\u001b[0m (324.25 KB)\n"
|
|
||||||
],
|
|
||||||
"text/html": [
|
"text/html": [
|
||||||
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">83,009</span> (324.25 KB)\n",
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">83,009</span> (324.25 KB)\n",
|
||||||
"</pre>\n"
|
"</pre>\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m83,009\u001b[0m (324.25 KB)\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {}
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
|
||||||
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m83,009\u001b[0m (324.25 KB)\n"
|
|
||||||
],
|
|
||||||
"text/html": [
|
"text/html": [
|
||||||
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">83,009</span> (324.25 KB)\n",
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">83,009</span> (324.25 KB)\n",
|
||||||
"</pre>\n"
|
"</pre>\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m83,009\u001b[0m (324.25 KB)\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {}
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
|
||||||
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
|
|
||||||
],
|
|
||||||
"text/html": [
|
"text/html": [
|
||||||
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
|
||||||
"</pre>\n"
|
"</pre>\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {}
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -1260,16 +1260,16 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 18,
|
"execution_count": 18,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "6JOTZ3zjwSmI",
|
|
||||||
"outputId": "142b6860-b4cc-46aa-ec32-40400202fe1d",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/"
|
"base_uri": "https://localhost:8080/"
|
||||||
}
|
},
|
||||||
|
"id": "6JOTZ3zjwSmI",
|
||||||
|
"outputId": "142b6860-b4cc-46aa-ec32-40400202fe1d"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "stream",
|
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"Epoch 1/100\n",
|
"Epoch 1/100\n",
|
||||||
"\u001b[1m101/101\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 25ms/step - loss: 0.0553 - val_loss: 0.0189 - learning_rate: 0.0010\n",
|
"\u001b[1m101/101\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 25ms/step - loss: 0.0553 - val_loss: 0.0189 - learning_rate: 0.0010\n",
|
||||||
@@ -1474,14 +1474,14 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<keras.src.callbacks.history.History at 0x7c5c43602a10>"
|
"<keras.src.callbacks.history.History at 0x7c5c43602a10>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 18,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 18
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -1518,16 +1518,16 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 19,
|
"execution_count": 19,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "wSiP2xZkwSmO",
|
|
||||||
"outputId": "41202ce9-f617-4a62-acba-afe99fb40584",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/"
|
"base_uri": "https://localhost:8080/"
|
||||||
}
|
},
|
||||||
|
"id": "wSiP2xZkwSmO",
|
||||||
|
"outputId": "41202ce9-f617-4a62-acba-afe99fb40584"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "stream",
|
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 15ms/step\n"
|
"\u001b[1m25/25\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 15ms/step\n"
|
||||||
]
|
]
|
||||||
@@ -1550,15 +1550,14 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 20,
|
"execution_count": 20,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "rSmZGxXDwSmO",
|
|
||||||
"outputId": "647ec968-f97e-4e1b-d041-aea03636b60e",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/"
|
"base_uri": "https://localhost:8080/"
|
||||||
}
|
},
|
||||||
|
"id": "rSmZGxXDwSmO",
|
||||||
|
"outputId": "647ec968-f97e-4e1b-d041-aea03636b60e"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"array([[18.85141 ],\n",
|
"array([[18.85141 ],\n",
|
||||||
@@ -1570,8 +1569,9 @@
|
|||||||
" [17.67097 ]], dtype=float32)"
|
" [17.67097 ]], dtype=float32)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 20,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 20
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -1593,34 +1593,21 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 21,
|
"execution_count": 21,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "H_VnZPtDwSmO",
|
|
||||||
"outputId": "c10bf3c1-2781-4bb2-a388-4f859c55e60f",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 455
|
"height": 455
|
||||||
}
|
},
|
||||||
|
"id": "H_VnZPtDwSmO",
|
||||||
|
"outputId": "c10bf3c1-2781-4bb2-a388-4f859c55e60f"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"application/vnd.google.colaboratory.intrinsic+json": {
|
||||||
" Actual Predicted\n",
|
"summary": "{\n \"name\": \"pred_df\",\n \"rows\": 3139,\n \"fields\": [\n {\n \"column\": \"Date\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2016-09-29 00:00:00\",\n \"max\": \"2025-05-03 00:00:00\",\n \"num_unique_values\": 3139,\n \"samples\": [\n \"2021-08-29 00:00:00\",\n \"2018-12-06 00:00:00\",\n \"2017-12-23 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Actual\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 4.922379959478632,\n \"min\": 4.27,\n \"max\": 23.39,\n \"num_unique_values\": 1395,\n \"samples\": [\n 10.32,\n 8.52,\n 15.38\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Predicted\",\n \"properties\": {\n \"dtype\": \"float32\",\n \"num_unique_values\": 3137,\n \"samples\": [\n 21.144052505493164,\n 8.950167655944824,\n 6.3031134605407715\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
|
||||||
"Date \n",
|
"type": "dataframe",
|
||||||
"2016-09-29 18.54 18.851410\n",
|
"variable_name": "pred_df"
|
||||||
"2016-09-30 16.50 18.478785\n",
|
},
|
||||||
"2016-10-01 16.03 16.582554\n",
|
|
||||||
"2016-10-02 16.06 16.595911\n",
|
|
||||||
"2016-10-03 17.03 16.462191\n",
|
|
||||||
"... ... ...\n",
|
|
||||||
"2025-04-29 16.88 17.737617\n",
|
|
||||||
"2025-04-30 17.44 16.928251\n",
|
|
||||||
"2025-05-01 17.31 17.847725\n",
|
|
||||||
"2025-05-02 17.37 17.350359\n",
|
|
||||||
"2025-05-03 19.26 17.670971\n",
|
|
||||||
"\n",
|
|
||||||
"[3139 rows x 2 columns]"
|
|
||||||
],
|
|
||||||
"text/html": [
|
"text/html": [
|
||||||
"\n",
|
"\n",
|
||||||
" <div id=\"df-e72b2590-c412-4153-a00b-da1085937b97\" class=\"colab-df-container\">\n",
|
" <div id=\"df-e72b2590-c412-4153-a00b-da1085937b97\" class=\"colab-df-container\">\n",
|
||||||
@@ -1976,14 +1963,27 @@
|
|||||||
" </div>\n",
|
" </div>\n",
|
||||||
" </div>\n"
|
" </div>\n"
|
||||||
],
|
],
|
||||||
"application/vnd.google.colaboratory.intrinsic+json": {
|
"text/plain": [
|
||||||
"type": "dataframe",
|
" Actual Predicted\n",
|
||||||
"variable_name": "pred_df",
|
"Date \n",
|
||||||
"summary": "{\n \"name\": \"pred_df\",\n \"rows\": 3139,\n \"fields\": [\n {\n \"column\": \"Date\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2016-09-29 00:00:00\",\n \"max\": \"2025-05-03 00:00:00\",\n \"num_unique_values\": 3139,\n \"samples\": [\n \"2021-08-29 00:00:00\",\n \"2018-12-06 00:00:00\",\n \"2017-12-23 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Actual\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 4.922379959478632,\n \"min\": 4.27,\n \"max\": 23.39,\n \"num_unique_values\": 1395,\n \"samples\": [\n 10.32,\n 8.52,\n 15.38\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Predicted\",\n \"properties\": {\n \"dtype\": \"float32\",\n \"num_unique_values\": 3137,\n \"samples\": [\n 21.144052505493164,\n 8.950167655944824,\n 6.3031134605407715\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
|
"2016-09-29 18.54 18.851410\n",
|
||||||
}
|
"2016-09-30 16.50 18.478785\n",
|
||||||
|
"2016-10-01 16.03 16.582554\n",
|
||||||
|
"2016-10-02 16.06 16.595911\n",
|
||||||
|
"2016-10-03 17.03 16.462191\n",
|
||||||
|
"... ... ...\n",
|
||||||
|
"2025-04-29 16.88 17.737617\n",
|
||||||
|
"2025-04-30 17.44 16.928251\n",
|
||||||
|
"2025-05-01 17.31 17.847725\n",
|
||||||
|
"2025-05-02 17.37 17.350359\n",
|
||||||
|
"2025-05-03 19.26 17.670971\n",
|
||||||
|
"\n",
|
||||||
|
"[3139 rows x 2 columns]"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 21,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 21
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -2008,16 +2008,16 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 22,
|
"execution_count": 22,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "TA_pBedxwSmT",
|
|
||||||
"outputId": "3da2b6b2-c50c-4656-ffaf-5effd15384d7",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/"
|
"base_uri": "https://localhost:8080/"
|
||||||
}
|
},
|
||||||
|
"id": "TA_pBedxwSmT",
|
||||||
|
"outputId": "3da2b6b2-c50c-4656-ffaf-5effd15384d7"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "stream",
|
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"0.9214262573889067\n",
|
"0.9214262573889067\n",
|
||||||
"1.903221483260166\n"
|
"1.903221483260166\n"
|
||||||
@@ -2034,33 +2034,33 @@
|
|||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 23,
|
"execution_count": 23,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"id": "qgPJTuV-wSmT",
|
|
||||||
"outputId": "f7c2277e-be4c-4453-cfc8-651bd08dba4e",
|
|
||||||
"colab": {
|
"colab": {
|
||||||
"base_uri": "https://localhost:8080/",
|
"base_uri": "https://localhost:8080/",
|
||||||
"height": 444
|
"height": 444
|
||||||
}
|
},
|
||||||
|
"id": "qgPJTuV-wSmT",
|
||||||
|
"outputId": "f7c2277e-be4c-4453-cfc8-651bd08dba4e"
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"output_type": "execute_result",
|
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<matplotlib.legend.Legend at 0x7c5c445a7cd0>"
|
"<matplotlib.legend.Legend at 0x7c5c445a7cd0>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"execution_count": 23,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"execution_count": 23
|
"output_type": "execute_result"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
"data": {
|
||||||
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 2000x500 with 1 Axes>"
|
"<Figure size 2000x500 with 1 Axes>"
|
||||||
],
|
]
|
||||||
"image/png": "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 truncated
|
|
||||||
},
|
},
|
||||||
"metadata": {}
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -2073,9 +2073,10 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
"accelerator": "GPU",
|
||||||
"colab": {
|
"colab": {
|
||||||
"provenance": [],
|
"gpuType": "T4",
|
||||||
"gpuType": "T4"
|
"provenance": []
|
||||||
},
|
},
|
||||||
"kernelspec": {
|
"kernelspec": {
|
||||||
"display_name": "Python 3",
|
"display_name": "Python 3",
|
||||||
@@ -2092,8 +2093,7 @@
|
|||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.9.18"
|
"version": "3.9.18"
|
||||||
},
|
}
|
||||||
"accelerator": "GPU"
|
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
"nbformat_minor": 0
|
"nbformat_minor": 0
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
from sklearn.model_selection import train_test_split
|
from sklearn.model_selection import train_test_split
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
@@ -20,23 +22,22 @@ scaled_data = scaler.fit_transform(a)
|
|||||||
|
|
||||||
def create_sequences(data, seq_length):
|
def create_sequences(data, seq_length):
|
||||||
"see this? return[0] is the big x and return[1] is the big y. and h(x) = y. and h(x) is the model."
|
"see this? return[0] is the big x and return[1] is the big y. and h(x) = y. and h(x) is the model."
|
||||||
xs = []
|
xs, ys, dates = [], [], []
|
||||||
ys = []
|
|
||||||
for i in range(len(data) - seq_length):
|
for i in range(len(data) - seq_length):
|
||||||
x = data[i : (i + seq_length)]
|
xs.append(data[i : i + seq_length])
|
||||||
y = data[i + seq_length]
|
ys.append(data[i + seq_length])
|
||||||
xs.append(x)
|
dates.append(i + seq_length) # index of target
|
||||||
ys.append(y)
|
return np.array(xs), np.array(ys), np.array(dates)
|
||||||
return np.array(xs), np.array(ys)
|
|
||||||
|
|
||||||
|
|
||||||
seq_length = 20
|
seq_length = 20
|
||||||
|
|
||||||
X, y = create_sequences(scaled_data, seq_length)
|
X, y, y_indices = create_sequences(scaled_data, seq_length)
|
||||||
|
|
||||||
X_train, X_test, y_train, y_test = train_test_split(
|
X_train, X_test, y_train, y_test = train_test_split(
|
||||||
X, y, test_size=0.2, random_state=42
|
X, y, test_size=0.2, random_state=42
|
||||||
)
|
)
|
||||||
|
|
||||||
from torch.utils.data import TensorDataset, DataLoader
|
from torch.utils.data import TensorDataset, DataLoader
|
||||||
|
|
||||||
X_train_tensor = torch.tensor(X_train, dtype=torch.float32)
|
X_train_tensor = torch.tensor(X_train, dtype=torch.float32)
|
||||||
@@ -66,21 +67,28 @@ class LSTMModel(nn.Module):
|
|||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
model = LSTMModel(
|
modfile = "data/model.pth"
|
||||||
|
yesmod = os.path.isfile(modfile)
|
||||||
|
if yesmod:
|
||||||
|
model = torch.load(modfile)
|
||||||
|
else:
|
||||||
|
model = LSTMModel(
|
||||||
input_size=X_train.shape[2],
|
input_size=X_train.shape[2],
|
||||||
hidden_size=64,
|
hidden_size=64,
|
||||||
num_layers=2,
|
num_layers=2,
|
||||||
output_size=y_train.shape[1],
|
output_size=y_train.shape[1],
|
||||||
)
|
)
|
||||||
model.to(device)
|
model.to(device)
|
||||||
criterion = nn.MSELoss()
|
|
||||||
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
|
|
||||||
|
|
||||||
train_losses = []
|
train_losses = []
|
||||||
val_losses = []
|
val_losses = []
|
||||||
|
|
||||||
|
criterion = nn.MSELoss()
|
||||||
|
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
|
||||||
|
|
||||||
for epoch in range(100):
|
if not yesmod:
|
||||||
|
|
||||||
|
for epoch in range(100):
|
||||||
model.train()
|
model.train()
|
||||||
running_train_loss = 0.0
|
running_train_loss = 0.0
|
||||||
|
|
||||||
@@ -103,6 +111,9 @@ for epoch in range(100):
|
|||||||
epoch_train_loss = running_train_loss / len(train_loader.dataset)
|
epoch_train_loss = running_train_loss / len(train_loader.dataset)
|
||||||
train_losses.append(epoch_train_loss)
|
train_losses.append(epoch_train_loss)
|
||||||
|
|
||||||
|
torch.save(model, modfile)
|
||||||
|
# yesmod = True
|
||||||
|
|
||||||
model.eval()
|
model.eval()
|
||||||
|
|
||||||
X_test_tensor = torch.tensor(X_test, dtype=torch.float32).to(device)
|
X_test_tensor = torch.tensor(X_test, dtype=torch.float32).to(device)
|
||||||
@@ -152,8 +163,17 @@ ax1.legend()
|
|||||||
ax1.grid(True)
|
ax1.grid(True)
|
||||||
|
|
||||||
# Prediction vs Actual on the right
|
# Prediction vs Actual on the right
|
||||||
ax2.plot(y_test_rescaled, label="Actual")
|
|
||||||
ax2.plot(predictions_rescaled, label="Predicted")
|
# 2024 - 25
|
||||||
|
_, X_test_idx, _, y_test_idx = train_test_split(
|
||||||
|
X, y_indices, test_size=0.2, random_state=42
|
||||||
|
)
|
||||||
|
dates_test = a["Date"].iloc[y_test_idx].values # Actual datetime values
|
||||||
|
|
||||||
|
mask = (dates_test >= "2024-01-01") & (dates_test <= "2025-12-31")
|
||||||
|
# Plot the results
|
||||||
|
ax2.plot(dates_test[mask], y_test_rescaled[mask], label="Actual")
|
||||||
|
ax2.plot(dates_test[mask], predictions_rescaled[mask], label="Predicted")
|
||||||
ax2.set_title("Actual vs. Predicted")
|
ax2.set_title("Actual vs. Predicted")
|
||||||
ax2.set_xlabel("Sample")
|
ax2.set_xlabel("Sample")
|
||||||
ax2.set_ylabel("Value")
|
ax2.set_ylabel("Value")
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -1,85 +0,0 @@
|
|||||||
import sys
|
|
||||||
import numpy as np
|
|
||||||
import pandas as pd
|
|
||||||
from sklearn.metrics import r2_score
|
|
||||||
from sklearn.preprocessing import MinMaxScaler
|
|
||||||
from sklearn.model_selection import train_test_split
|
|
||||||
from sklearn.ensemble import RandomForestRegressor
|
|
||||||
from sklearn.metrics import mean_squared_error
|
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from global_config import DATA_FILE_NAME
|
|
||||||
from load_data import cut_headers
|
|
||||||
|
|
||||||
# 1. Load data
|
|
||||||
|
|
||||||
with open(DATA_FILE_NAME, "r", encoding="utf-8") as file:
|
|
||||||
data_header, csv_file = cut_headers(file)
|
|
||||||
data = pd.read_csv(csv_file, na_values=-999)
|
|
||||||
|
|
||||||
if all(z in data.columns for z in ("YEAR", "MO", "DY")):
|
|
||||||
data["date"] = pd.to_datetime(
|
|
||||||
{k: data[v] for v, k in (zip(["YEAR", "MO", "DY"], ["year", "month", "day"]))}
|
|
||||||
)
|
|
||||||
data.drop(inplace=True, columns=["YEAR", "MO", "DY"])
|
|
||||||
data.set_index(["date"], inplace=True)
|
|
||||||
data.dropna(inplace=True)
|
|
||||||
|
|
||||||
# 2. Normalize data
|
|
||||||
scaler = MinMaxScaler()
|
|
||||||
print(data.columns)
|
|
||||||
scaled_data = scaler.fit_transform(data)
|
|
||||||
|
|
||||||
|
|
||||||
# 3. Create sequences for supervised learning
|
|
||||||
def create_sequences(data, seq_length):
|
|
||||||
xs, ys = [], []
|
|
||||||
for i in range(len(data) - seq_length):
|
|
||||||
x = data[i : i + seq_length].flatten()
|
|
||||||
y = data[i + seq_length]
|
|
||||||
xs.append(x)
|
|
||||||
ys.append(y)
|
|
||||||
return np.array(xs), np.array(ys)
|
|
||||||
|
|
||||||
|
|
||||||
seq_length = 50
|
|
||||||
X, y = create_sequences(scaled_data, seq_length)
|
|
||||||
|
|
||||||
# 4. Split into training and testing
|
|
||||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.02, shuffle=False)
|
|
||||||
|
|
||||||
# 5. Train linear regression model
|
|
||||||
model = RandomForestRegressor(
|
|
||||||
n_estimators=200, # Number of trees
|
|
||||||
# max_features='sqrt', # Features considered at each split
|
|
||||||
# max_depth=30, # Maximum depth of each tree
|
|
||||||
# n_jobs=-1, # Use all CPU cores
|
|
||||||
random_state=42 # Reproducibility
|
|
||||||
)
|
|
||||||
model.fit(X_train, y_train)
|
|
||||||
|
|
||||||
# 6. Make predictions
|
|
||||||
predictions = model.predict(X_test)
|
|
||||||
|
|
||||||
# 7. Evaluate performance
|
|
||||||
mse = mean_squared_error(y_test, predictions)
|
|
||||||
r2 = r2_score(y_test, predictions)
|
|
||||||
|
|
||||||
print(f"Test MSE: {mse:.4f}")
|
|
||||||
print(f"Test r2: {r2:.4f}")
|
|
||||||
|
|
||||||
print(f"Score: {model.score(X_test, y_test)}")
|
|
||||||
# 8. Inverse transform predictions
|
|
||||||
predictions_rescaled = scaler.inverse_transform(predictions.reshape(-1, data.shape[1]))
|
|
||||||
y_test_rescaled = scaler.inverse_transform(y_test.reshape(-1, data.shape[1]))
|
|
||||||
|
|
||||||
# 9. Plot results
|
|
||||||
for i, column in enumerate(data.columns):
|
|
||||||
plt.figure(figsize=(10, 5))
|
|
||||||
plt.plot(y_test_rescaled[:, i], label=f"Actual {column}")
|
|
||||||
plt.plot(predictions_rescaled[:, i], label=f"Predicted {column}")
|
|
||||||
plt.title(f"Actual vs. Predicted for {column}")
|
|
||||||
plt.xlabel("Sample")
|
|
||||||
plt.ylabel("Value")
|
|
||||||
plt.legend()
|
|
||||||
plt.tight_layout()
|
|
||||||
plt.show()
|
|
||||||
Reference in new issue
Block a user