def random_forest_cross_loc_time_step( timeStep, round1, location1, round2, location2, round3, location3, board ): TIME_STEP = timeStep rf = RandomForestRegressor() data1 = loadMatrix( TIME_STEP, round1, location1, board) data2 = loadMatrix( TIME_STEP, round2, location2, board) cross = loadMatrix( TIME_STEP, round3, location3, board) train = data1[0] train = np.concatenate((train, data1[1]), axis=0 ) train = np.concatenate((train, data2[0]), axis=0 ) train = np.concatenate((train, data2[1]), axis=0 ) test = cross[1] trainX = train[TIME_STEP::, NO2_INDEX] trainX = np.expand_dims(trainX, axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, O3_INDEX], axis=1)), axis=1) # trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, CO_INDEX], axis=1)), axis=1) # trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, TEMP_INDEX], axis=1)), axis=1) # trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, HUM_INDEX], axis=1)), axis=1) for index in range(TIME_STEP): trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, NO2_INDEX + (index + 1)*8], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, O3_INDEX + (index + 1)*8], axis=1)), axis=1) # trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, CO_INDEX + (index + 1)*8], axis=1)), axis=1) # trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, TEMP_INDEX + (index + 1)*8], axis=1)), axis=1) # trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, HUM_INDEX + (index + 1)*8], axis=1)), axis=1) trainY = train[TIME_STEP::,EPA_NO2_INDEX] trainY = np.expand_dims(trainY, axis=1) trainY = np.concatenate( (trainY, np.expand_dims(train[TIME_STEP::, EPA_O3_INDEX], axis=1)), axis=1) rf.fit(trainX, trainY) testX = test[TIME_STEP::, NO2_INDEX] testX = np.expand_dims(testX, axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, O3_INDEX], axis=1)), axis=1) # testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, CO_INDEX], axis=1)), axis=1) # testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, TEMP_INDEX], axis=1)), axis=1) # testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, HUM_INDEX], axis=1)), axis=1) for index in range(TIME_STEP): testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, NO2_INDEX + (index + 1)*8], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, O3_INDEX + (index + 1)*8], axis=1)), axis=1) # testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, CO_INDEX + (index + 1)*8], axis=1)), axis=1) # testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, TEMP_INDEX + (index + 1)*8], axis=1)), axis=1) # testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, HUM_INDEX + (index + 1)*8], axis=1)), axis=1) testY = test[TIME_STEP::, EPA_NO2_INDEX] testY = np.expand_dims(testY, axis=1) testY = np.concatenate( (testY, np.expand_dims(test[TIME_STEP::, EPA_O3_INDEX], axis=1)), axis=1) y_predict = rf.predict(testX) return y_predict, testY
def random_forest_time_step( timeStep, round, location, board ): TIME_STEP = timeStep rf = RandomForestRegressor() data = loadMatrix( TIME_STEP, round, location, board) train = data[0] test = data[1] trainX = train[TIME_STEP::, 1] trainX = np.expand_dims(trainX, axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 2], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 3], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 6], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 7], axis=1)), axis=1) for index in range(TIME_STEP): trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 1 + (index + 1)*8], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 2 + (index + 1)*8], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 3 + (index + 1)*8], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 6 + (index + 1)*8], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 7 + (index + 1)*8], axis=1)), axis=1) trainY = train[TIME_STEP::,4] trainY = np.expand_dims(trainY, axis=1) trainY = np.concatenate( (trainY, np.expand_dims(train[TIME_STEP::, 5], axis=1)), axis=1) rf.fit(trainX, trainY) testX = test[TIME_STEP::, 1] testX = np.expand_dims(testX, axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 2], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 3], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 6], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 7], axis=1)), axis=1) for index in range(TIME_STEP): testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 1 + (index + 1)*8], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 2 + (index + 1)*8], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 3 + (index + 1)*8], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 6 + (index + 1)*8], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 7 + (index + 1)*8], axis=1)), axis=1) testY = test[TIME_STEP::,4] testY = np.expand_dims(testY, axis=1) testY = np.concatenate( (testY, np.expand_dims(test[TIME_STEP::, 5], axis=1)), axis=1) y_predict = rf.predict(testX) #print(rf.get_params()) #print(rf.decision_path(testX)) return y_predict, testY
def random_forest_time_step(timeStep, round, location, board): TIME_STEP = timeStep nueral = NeuralNetwork( ['no2', 'o3', 'co', 'temperature', 'absolute-humidity', 'pressure']) data = loadMatrix(TIME_STEP, round, location, board) train = data[0] test = data[1] trainX = train[TIME_STEP::, 1] trainX = np.expand_dims(trainX, axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 2], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 3], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 6], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 7], axis=1)), axis=1) for index in range(TIME_STEP): trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 1 + (index + 1) * 8], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 2 + (index + 1) * 8], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 3 + (index + 1) * 8], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 6 + (index + 1) * 8], axis=1)), axis=1) trainX = np.concatenate( (trainX, np.expand_dims(train[TIME_STEP::, 7 + (index + 1) * 8], axis=1)), axis=1) trainY = train[TIME_STEP::, 4] trainY = np.expand_dims(trainY, axis=1) trainY = np.concatenate( (trainY, np.expand_dims(train[TIME_STEP::, 5], axis=1)), axis=1) nueral.fit(trainX, trainY) testX = test[TIME_STEP::, 1] testX = np.expand_dims(testX, axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 2], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 3], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 6], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 7], axis=1)), axis=1) for index in range(TIME_STEP): testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 1 + (index + 1) * 8], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 2 + (index + 1) * 8], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 3 + (index + 1) * 8], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 6 + (index + 1) * 8], axis=1)), axis=1) testX = np.concatenate( (testX, np.expand_dims(test[TIME_STEP::, 7 + (index + 1) * 8], axis=1)), axis=1) testY = test[TIME_STEP::, 4] testY = np.expand_dims(testY, axis=1) testY = np.concatenate( (testY, np.expand_dims(test[TIME_STEP::, 5], axis=1)), axis=1) y_predict = nueral.predict(testX) return y_predict, testY
import metasense import data from data import loadMatrix import numpy as np import matplotlib matplotlib.use('Agg') from matplotlib import pyplot as plt data = loadMatrix(1, 'donovan', 19) train = data[0] train = train.sort_values(by=['datetime']) mat = train['datetime'].values mat = np.expand_dims(mat, axis=1) mat = np.concatenate((mat, np.expand_dims(train['no2'].values, axis=1)), axis=1) mat = np.concatenate((mat, np.expand_dims(train['o3'].values, axis=1)), axis=1) mat = np.concatenate((mat, np.expand_dims(train['co'].values, axis=1)), axis=1) mat = np.concatenate((mat, np.expand_dims(train['epa-no2'].values, axis=1)), axis=1) mat = np.concatenate((mat, np.expand_dims(train['epa-o3'].values, axis=1)), axis=1) mat = np.concatenate( (mat, np.expand_dims(train['temperature'].values, axis=1)), axis=1) mat = np.concatenate( (mat, np.expand_dims(train['absolute-humidity'].values, axis=1)), axis=1) tempDates = np.chararray((len(train['datetime']), 1), itemsize=30) for index in range(len(tempDates)): if (index - 1) >= 0: tempDates[index] = train['datetime'].values[index - 1] else: tempDates[index] = "no data"
def __init__(self, fileName): self.data = data.loadMatrix(fileName)