# [Kevin] 2019/7 July daily plan ## Schedule - 7/1 ~ 7/9 - - Plan - Debug the code of inference part. - Let all the for loop in program is functionable. - 7/1 - settle down: - Choose my sit and computer, screen, chair. - Install the operating system (Ubuntu 16.04) and the developing environment - 7/2 - meet and know my student: - His name is Achmad Kripton Nugraha. I can call him Kripton. - Outcome: - Narrow down the problem. Inference has bug because the DataFrame become empty after excuting feature engineering. - Note: - df is functionable. - df_idx is functionable. - df_new is Empty dataframe. So the Error is happened in feature_engineering. - Tomorrow's plan: - Check the functions in feature_engineering, try to narrow down the problem. --------------------------------------------------------- - 7/3 - Outcome: - Narrow down the problem. The reason of the bug is df.dropna() drop whole array because there is some columns with all NaN in it. - Note: - Only need these columns: [Refilling, Hot temp , Cold temp, Warm Temp, Hot Valve, Warm Valve, Cold Vale] - Feature engineering will generate other features I need. - Power saving data will generate by Refilling data. (9th step of feature engineering) - Time shifting will generate the data of yesterday (power saving) and last week (power saving). - After that, time shifting will do df.dropna(), do drop all of NAN data in the data frame.(This is why I got a empty DataFrame, the current input data have some features that is useless and they are full of NAN. It make Whole DataFrame got dropped out.) - DataFrame.shape in feature_engineering process: (30240,23) (30240,23) (30240,23) (21600,25) (21600,30) (1440,30) (1440,30) (1440,30) (1440,31) (0,33) >>> after time shifting. - Tomorrow's plan: - Find out which features should be dropped, and where is the code dropping the features. ----------------------------------------------------------------- - 7/4 - Outcome: - The module feature_engineering is functionable now. - Note: - The inference data I put in was wrong, too many useless columns, drop them first. Columns_drop = ['Sterilizing', 'ErrorCode', 'SavingPower', 'ColdTemp_Insulation_Low', 'ColdTemp_Insulation_High', 'HotTemp_Insulation_Low', 'ColdTemp_Insulation', 'WarmTemp_Insulation', 'HotTemp_Insulation_High', 'HotTemp_Insulation', 'WaterLevel', 'TDS', 'Status', 'Consumption', 'Filter_Usage', 'Filter_Hint', 'Usage_CC', 'Usage_L', 'Usage_MT'] - After data_engineering, the columns are: Columns = ['Heating', 'Cooling', 'Refilling', 'WarmTemp', 'ColdTemp', 'HotTemp', 'Consump', 'day', 'hour_class', 'cool_time_back23', 'consump_sum_back23', 'hottemp_mean_back23', 'warmtemp_mean_back23', 'coldtemp_mean_back23', 'power_saving', 'Last_week', 'yesterday'] - DAYS. For data_engineering, we input 21 days data, 15 days after weekend has dropped, and finally 10 days left after dropna() in time shifting. - FEATURES. We have 9 features at first, drop 3 and then add 11 during data engineering, so we have 17 features after data engineering. - DataFrame.shape in feature_engineering process: (30240, 7) (30240, 7) (30240, 7) (21600, 9) (21600, 14) (1440, 14) (1440, 14) (1440, 14) (1440, 15) (960, 17) - Tomorrow's plan: - Write a code to generate the answer for predicting power saving from raw data. --------------------------------------------------------- - 7/5 - Outcome: - Know how to maintain the dispensors. - step.1 use GreenMeter app to check the meter is working - step.2 use Gateway app to check the Gateway is transfering the data - step.3 use bluetooth to check the WiFi of the Gateway is available - step.4 change the battery of Module if the battery is dead. The Module should hook on the red wire. - Note: - Compare df_real (answer) with df_heatmap (predict) to calculate the percentage of energy we saved. - Answer of poer_saving is from refilling, if refilling >5hrs && <12hrs = 1 ; else = 0 - There is some little different about the code and the definition above. - Learn how to maintain the Dispensors. - Tomorrow's plan: - Write a code to generate the answer for predicting power saving from raw data. ------------------------ - 7/8 - Outcome: - Finishing the answer of power saving (ps_time.py) - Step.1 Read csv file and drop columns and rows. - Step.2 Excute ps_time.main to calculate the answer of real_pstime - Step.3 Drop columns, then reshape ps_time. (row index = time, columns = date) - Step.4 Save as csv file. - Note: - The original power_saving code means: ``` block :s e s e refilling :1...11100000111...1 power_saving:....00111111100.... #block means the Consecutive 1 of refilling #block size means the length ``` - So I decide to modify the code, don't let power_svaing be 1 at the end and begin of block(111...1) - Tomorrow's plan: - Modify the code of power_saving to conform the meaning of power_saving we defined. (if refilling >=5hrs && <=12hrs = 1 ; else = 0) -------------------------- - 7/9 - Outcome: - Modify the code of power_saving and group (in inference_one_month.py) - Note: - The start and end of refilling=1 should not be power_saving = 1 - The Time range should be 12>= time >=5. - Group have tolerate one minute of data. But for counting block size, the data's unit is 15mins, so it shouldn't tolerate once. - The code if index==0 is wrong, it should be counting the block size befor first block. - Tomorrow's plan: - Make sure the final metrics has same size for each columns. So we can dintinguish the output result correctly.