457 lines
72 KiB
Plaintext
457 lines
72 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"import os\n",
|
|
"from tqdm import tqdm"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Getting a list of files in raw data folder\n",
|
|
"filenames = os.listdir('./processed_data/')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Commented out the unused features\n",
|
|
"header_wanted = [\n",
|
|
" 'HOURLYVISIBILITY',\n",
|
|
" 'HOURLYDRYBULBTEMPC',\n",
|
|
" 'HOURLYWETBULBTEMPC',\n",
|
|
" 'HOURLYDewPointTempC',\n",
|
|
" 'HOURLYRelativeHumidity',\n",
|
|
" 'HOURLYWindSpeed',\n",
|
|
" #'HOURLYWindGustSpeed',\n",
|
|
" 'HOURLYStationPressure',\n",
|
|
" #'HOURLYPressureTendency',\n",
|
|
" #'HOURLYPressureChange',\n",
|
|
" #'HOURLYSeaLevelPressure',\n",
|
|
" #'HOURLYPrecip',\n",
|
|
" #'HOURLYAltimeterSetting'\n",
|
|
"]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"usecols = ['DATE','STATION'] + header_wanted"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"100%|████████████████████████████████████████████████████████████████████████████████| 372/372 [00:35<00:00, 10.53it/s]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Loading all files into a pandas Dataframe and normalizing data to between 0 and 1\n",
|
|
"tqdm.pandas()\n",
|
|
"df = pd.concat([pd.read_csv('./processed_data/{}'.format(x), usecols=usecols, low_memory=False) for x in tqdm(filenames)])\n",
|
|
"df[header_wanted] = (df[header_wanted] - df[header_wanted].min()) / (df[header_wanted].max() - df[header_wanted].min())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"At this point all the data has been loaded into a single dataframe and any data changes have been made. The next step is to break the data up by WBAN and place in a 2D array at the appropriate grid cell. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"stations = pd.read_csv(\"./stations_mask.csv\", usecols = ['STATION_ID', 'LON_SCALED', 'LAT_SCALED'])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"height = 20\n",
|
|
"width = 40\n",
|
|
"depth = 24 * 365 * 2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"mask = [([0] * width) for i in range(height)]\n",
|
|
"\n",
|
|
"wban_loc = dict(zip(stations.STATION_ID,zip(stations.LON_SCALED,stations.LAT_SCALED)))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"grid = [([pd.DataFrame()] * width) for i in range(height)]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"100%|████████████████████████████████████████████████████████████████████████████████| 372/372 [03:51<00:00, 1.61it/s]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Making a mask while also placing appropriate data frames in their final location\n",
|
|
"for key, value in tqdm(wban_loc.items()):\n",
|
|
" mask[value[1]][value[0]] = 1\n",
|
|
" grid[value[1]][value[0]] = df.loc[df.STATION == key]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"%matplotlib inline"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.image.AxesImage at 0x29f45330a20>"
|
|
]
|
|
},
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x29f7e550908>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.imshow(mask)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Loops through every record and slices off a single record for each pixel to make a single frame and then exports\n",
|
|
"# an array of frames\n",
|
|
"def create_frames(data,height, width, depth):\n",
|
|
" days = []\n",
|
|
" frames = []\n",
|
|
" for i in tqdm(range(depth)):\n",
|
|
" frame = np.zeros((height,width,7))\n",
|
|
" frame[:,:,:] = np.nan\n",
|
|
" for y in range(height):\n",
|
|
" for x in range(width):\n",
|
|
" if(not data[y][x].empty):\n",
|
|
" frame[y][x] = data[y][x].iloc[[i],1:8].values.flatten()\n",
|
|
" if((i+1)%24 != 0):\n",
|
|
" frames.append(frame)\n",
|
|
" else:\n",
|
|
" frames.append(frame)\n",
|
|
" days.append(frames)\n",
|
|
" frames = []\n",
|
|
" return np.array(days)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Takes a frame and then computes and average based on neighbor pixels without causing data drift\n",
|
|
"def average_grid(mask,data, height, width):\n",
|
|
" temp_frame = [([0] * width) for i in range(height)]\n",
|
|
" for i in range(height):\n",
|
|
" for j in range(width):\n",
|
|
" if(mask[i][j] != 1):\n",
|
|
" neighbors = get_neighbors(j,i,data)\n",
|
|
" temp_frame[i][j] = np.nanmean(neighbors, axis=0)\n",
|
|
" merge_frames(temp_frame, mask, data, height, width)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Returns an array of neighbors to be used in average_grid\n",
|
|
"def get_neighbors(x,y,g):\n",
|
|
" neighbors = []\n",
|
|
" for i in [y-1,y,y+1]:\n",
|
|
" for j in [x-1,x,x+1]:\n",
|
|
" if(i >= 0 and j >= 0):\n",
|
|
" if(i != y or j != x ):\n",
|
|
" try:\n",
|
|
" neighbors.append(g[i][j])\n",
|
|
" except:\n",
|
|
" pass\n",
|
|
" return np.array(neighbors)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Merges the average frame with the true data frame to create an averaged frame\n",
|
|
"def merge_frames(average, mask, data, height, width):\n",
|
|
" for i in range(height):\n",
|
|
" for j in range(width):\n",
|
|
" if(mask[i][j] != 1):\n",
|
|
" data[i][j] = average[i][j]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Used to break frames into training, validation, and testing sets and store them in hickle files along with the\n",
|
|
"# sources for each set\n",
|
|
"def store_sequence(frames):\n",
|
|
" import hickle as hkl\n",
|
|
" train_frames = []\n",
|
|
" train_sources = []\n",
|
|
" validation_frames = []\n",
|
|
" validation_sources = []\n",
|
|
" test_frames = []\n",
|
|
" test_sources = []\n",
|
|
" \n",
|
|
" for day in range(len(frames)):\n",
|
|
" for hour in range(len(frames[day])):\n",
|
|
" if(day/len(frames) < .6):\n",
|
|
" train_sources.append(\"{}\".format(day))\n",
|
|
" train_frames.append(frames[day][hour])\n",
|
|
" elif(day/len(frames) >= .6 and day/len(frames) < .8):\n",
|
|
" validation_sources.append(\"{}\".format(day))\n",
|
|
" validation_frames.append(frames[day][hour])\n",
|
|
" else:\n",
|
|
" test_sources.append(\"{}\".format(day))\n",
|
|
" test_frames.append(frames[day][hour])\n",
|
|
" \n",
|
|
" print(\"There are {} frames and {} sources in training set\".format(len(train_frames), len(train_sources)))\n",
|
|
" print(\"There are {} frames and {} sources in validation set\".format(len(validation_frames), len(validation_sources)))\n",
|
|
" print(\"There are {} frames and {} sources in testing set\".format(len(test_frames), len(test_sources)))\n",
|
|
" \n",
|
|
" hkl.dump(np.array(train_frames), '../data/x_train.hkl')\n",
|
|
" hkl.dump(train_sources, '../data/sources_train.hkl')\n",
|
|
" hkl.dump(np.array(validation_frames), '../data/x_val.hkl')\n",
|
|
" hkl.dump(validation_sources, '../data/sources_val.hkl')\n",
|
|
" hkl.dump(np.array(test_frames), '../data/x_test.hkl')\n",
|
|
" hkl.dump(test_sources, '../data/sources_test.hkl')\n",
|
|
" "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"100%|██████████████████████████████████████████████████████████████████████████| 17520/17520 [1:12:35<00:00, 4.02it/s]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"frames = create_frames(grid, height, width,depth)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"ename": "NameError",
|
|
"evalue": "name 'plt' is not defined",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32m<ipython-input-1-af157f4d23f7>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mfig\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfigsize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m15\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnorm\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mcolumns\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m3\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mrows\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mrows\u001b[0m \u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mfig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_subplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrows\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;31mNameError\u001b[0m: name 'plt' is not defined"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Plotting the newly made frame\n",
|
|
"fig=plt.figure(figsize=(15,10))\n",
|
|
"columns = 3\n",
|
|
"rows = 4\n",
|
|
"for i in range(1,columns+rows +1):\n",
|
|
" fig.add_subplot(rows,columns,i)\n",
|
|
" plt.imshow(frames[0,0,:,:,i-1])\n",
|
|
" plt.ylabel(header_wanted[i-1], fontsize=10)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" 0%| | 0/730 [00:00<?, ?it/s]c:\\users\\dasputer\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\ipykernel_launcher.py:7: RuntimeWarning: Mean of empty slice\n",
|
|
" import sys\n",
|
|
"100%|████████████████████████████████████████████████████████████████████████████████| 730/730 [13:47<00:00, 1.13s/it]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Loop used to go over each frame and have it averaged\n",
|
|
"for x in tqdm(range(len(frames))):\n",
|
|
" for y in range(len(frames[0])):\n",
|
|
" average_grid(mask, frames[x][y], height, width )"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x29f454a4908>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Plotting a newly averaged frame\n",
|
|
"fig=plt.figure(figsize=(15,10))\n",
|
|
"columns = 3\n",
|
|
"rows = 4\n",
|
|
"for i in range(1,columns+rows +1):\n",
|
|
" fig.add_subplot(rows,columns,i)\n",
|
|
" plt.imshow(frames[0,0,:,:,i-1])\n",
|
|
" plt.ylabel(header_wanted[i-1], fontsize=10)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"frames.shape"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"There are 10512 frames and 10512 sources in training set\n",
|
|
"There are 3504 frames and 3504 sources in validation set\n",
|
|
"There are 3504 frames and 3504 sources in testing set\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"store_sequence(frames)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"At this point the data has been processed and made into discrete frames and it is time to run it through the PredNet architecture for training."
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"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.6.4"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|