diff --git a/__pycache__/run.cpython-37.pyc b/__pycache__/run.cpython-37.pyc index f38a6ee..9e55b2a 100644 Binary files a/__pycache__/run.cpython-37.pyc and b/__pycache__/run.cpython-37.pyc differ diff --git a/frontend/src/components/Main.vue b/frontend/src/components/Main.vue index 05e4435..54843b6 100755 --- a/frontend/src/components/Main.vue +++ b/frontend/src/components/Main.vue @@ -206,6 +206,7 @@ export default Vue.extend({ }, data () { return { + correlResulTranformed: [], PositiveValue: 75, NegativeValue: 25, unselectedRemainingPoints: [], @@ -474,7 +475,7 @@ export default Vue.extend({ axios.post(path, postData, axiosConfig) .then(response => { console.log('Sent the thresholds to the server side!') - this.returnCorrel() + this.returnCorrelTranformed() }) .catch(error => { console.log(error) @@ -503,7 +504,29 @@ export default Vue.extend({ .catch(error => { console.log(error) }) + }, + returnCorrelTranformed () { + const path = `http://127.0.0.1:5000/data/returnCorrelationsTransformed` + + const axiosConfig = { + headers: { + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Headers': 'Origin, Content-Type, X-Auth-Token', + 'Access-Control-Allow-Methods': 'GET, PUT, POST, DELETE, OPTIONS' + } } + axios.get(path, axiosConfig) + .then(response => { + console.log('Server successfully send the correlation matrices!') + this.correlResulTranformed = response.data.correlResulTranformed + console.log(this.correlResulTranformed) + this.returnCorrel() + }) + .catch(error => { + console.log(error) + }) + } }, created () { // does the browser support the Navigation Timing API? diff --git a/run.py b/run.py index d57bad5..37c83b8 100644 --- a/run.py +++ b/run.py @@ -474,6 +474,245 @@ def executeModel(): return 'Everything Okay' +def Transformation(quadrant1, quadrant2, quadrant3, quadrant4): + + XDataNumeric = XData.select_dtypes(include='number') + numberOfColumns = len(XDataNumeric.columns) + columns = list(XDataNumeric) + decimals = 0 + + global packCorrTransformed + packCorrTransformed = [] + + for i in columns: + + dicTransf = {} + + d={} + XDataNumericCopy = XDataNumeric.copy() + XDataNumericCopy[i] = XDataNumericCopy[i].round() + for number in range(1,5): + quadrantVariable = str('quadrant%s' % number) + illusion = locals()[quadrantVariable] + d["DataRows{0}".format(number)] = XDataNumericCopy.iloc[illusion, :] + dicTransf["round"] = NewComputationTransf(d['DataRows1'], d['DataRows2'], d['DataRows3'], d['DataRows4'], quadrant1, quadrant2, quadrant3, quadrant4) + + d={} + XDataNumericCopy = XDataNumeric.copy() + XDataNumericCopy[i] = np.log(XDataNumericCopy[i]) + XDataNumericCopy[i] = XDataNumericCopy[i].round() + for number in range(1,5): + quadrantVariable = str('quadrant%s' % number) + illusion = locals()[quadrantVariable] + d["DataRows{0}".format(number)] = XDataNumericCopy.iloc[illusion, :] + dicTransf["roundLogE"] = NewComputationTransf(d['DataRows1'], d['DataRows2'], d['DataRows3'], d['DataRows4'], quadrant1, quadrant2, quadrant3, quadrant4) + + d={} + XDataNumericCopy = XDataNumeric.copy() + XDataNumericCopy[i] = np.log2(XDataNumericCopy[i]) + XDataNumericCopy[i] = XDataNumericCopy[i].round() + for number in range(1,5): + quadrantVariable = str('quadrant%s' % number) + illusion = locals()[quadrantVariable] + d["DataRows{0}".format(number)] = XDataNumericCopy.iloc[illusion, :] + dicTransf["roundLog2"] = NewComputationTransf(d['DataRows1'], d['DataRows2'], d['DataRows3'], d['DataRows4'], quadrant1, quadrant2, quadrant3, quadrant4) + + d={} + XDataNumericCopy = XDataNumeric.copy() + XDataNumericCopy[i] = np.log10(XDataNumericCopy[i]) + XDataNumericCopy[i] = XDataNumericCopy[i].round() + for number in range(1,5): + quadrantVariable = str('quadrant%s' % number) + illusion = locals()[quadrantVariable] + d["DataRows{0}".format(number)] = XDataNumericCopy.iloc[illusion, :] + dicTransf["roundLog10"] = NewComputationTransf(d['DataRows1'], d['DataRows2'], d['DataRows3'], d['DataRows4'], quadrant1, quadrant2, quadrant3, quadrant4) + + packCorrTransformed.append(dicTransf) + + return 'Everything Okay' + +def NewComputationTransf(DataRows1, DataRows2, DataRows3, DataRows4, quadrant1, quadrant2, quadrant3, quadrant4): + + # Main Features + corrMatrix1 = DataRows1.corr() + corrMatrix1 = corrMatrix1.abs() + corrMatrix2 = DataRows2.corr() + corrMatrix2 = corrMatrix2.abs() + corrMatrix3 = DataRows3.corr() + corrMatrix3 = corrMatrix3.abs() + corrMatrix4 = DataRows4.corr() + corrMatrix4 = corrMatrix4.abs() + + DataRows1 = DataRows1.reset_index(drop=True) + DataRows2 = DataRows2.reset_index(drop=True) + DataRows3 = DataRows3.reset_index(drop=True) + DataRows4 = DataRows4.reset_index(drop=True) + + targetRows1 = [yData[i] for i in quadrant1] + targetRows2 = [yData[i] for i in quadrant2] + targetRows3 = [yData[i] for i in quadrant3] + targetRows4 = [yData[i] for i in quadrant4] + + targetRows1Arr = np.array(targetRows1) + targetRows2Arr = np.array(targetRows2) + targetRows3Arr = np.array(targetRows3) + targetRows4Arr = np.array(targetRows4) + + uniqueTarget1 = unique(targetRows1) + uniqueTarget2 = unique(targetRows2) + uniqueTarget3 = unique(targetRows3) + uniqueTarget4 = unique(targetRows4) + + if (len(targetRows1Arr) > 0): + onehotEncoder1 = OneHotEncoder(sparse=False) + targetRows1Arr = targetRows1Arr.reshape(len(targetRows1Arr), 1) + onehotEncoder1 = onehotEncoder1.fit_transform(targetRows1Arr) + hotEncoderDF1 = pd.DataFrame(onehotEncoder1) + concatDF1 = pd.concat([DataRows1, hotEncoderDF1], axis=1) + corrMatrixComb1 = concatDF1.corr() + corrMatrixComb1 = corrMatrixComb1.abs() + corrMatrixComb1 = corrMatrixComb1.iloc[:,-len(uniqueTarget1):] + X1 = add_constant(DataRows1.dropna()) + VIF1 = pd.Series([variance_inflation_factor(X1.values, i) + for i in range(X1.shape[1])], + index=X1.columns) + if (len(targetRows1Arr) > 2): + MI1 = mutual_info_classif(DataRows1, targetRows1Arr) + MI1List = MI1.tolist() + else: + MI1List = [] + else: + corrMatrixComb1 = pd.DataFrame() + VIF1 = pd.Series() + MI1List = [] + + if (len(targetRows2Arr) > 0): + onehotEncoder2 = OneHotEncoder(sparse=False) + targetRows2Arr = targetRows2Arr.reshape(len(targetRows2Arr), 1) + onehotEncoder2 = onehotEncoder2.fit_transform(targetRows2Arr) + hotEncoderDF2 = pd.DataFrame(onehotEncoder2) + concatDF2 = pd.concat([DataRows2, hotEncoderDF2], axis=1) + corrMatrixComb2 = concatDF2.corr() + corrMatrixComb2 = corrMatrixComb2.abs() + corrMatrixComb2 = corrMatrixComb2.iloc[:,-len(uniqueTarget2):] + X2 = add_constant(DataRows2.dropna()) + VIF2 = pd.Series([variance_inflation_factor(X2.values, i) + for i in range(X2.shape[1])], + index=X2.columns) + if (len(targetRows2Arr) > 2): + MI2 = mutual_info_classif(DataRows2, targetRows2Arr) + MI2List = MI2.tolist() + else: + MI2List = [] + else: + corrMatrixComb2 = pd.DataFrame() + VIF2 = pd.Series() + MI2List = [] + + if (len(targetRows3Arr) > 0): + onehotEncoder3 = OneHotEncoder(sparse=False) + targetRows3Arr = targetRows3Arr.reshape(len(targetRows3Arr), 1) + onehotEncoder3 = onehotEncoder3.fit_transform(targetRows3Arr) + hotEncoderDF3 = pd.DataFrame(onehotEncoder3) + concatDF3 = pd.concat([DataRows3, hotEncoderDF3], axis=1) + corrMatrixComb3 = concatDF3.corr() + corrMatrixComb3 = corrMatrixComb3.abs() + corrMatrixComb3 = corrMatrixComb3.iloc[:,-len(uniqueTarget3):] + X3 = add_constant(DataRows3.dropna()) + VIF3 = pd.Series([variance_inflation_factor(X3.values, i) + for i in range(X3.shape[1])], + index=X3.columns) + if (len(targetRows3Arr) > 2): + MI3 = mutual_info_classif(DataRows3, targetRows3Arr) + MI3List = MI3.tolist() + else: + MI3List = [] + else: + corrMatrixComb3 = pd.DataFrame() + VIF3 = pd.Series() + MI3List = [] + + if (len(targetRows4Arr) > 0): + onehotEncoder4 = OneHotEncoder(sparse=False) + targetRows4Arr = targetRows4Arr.reshape(len(targetRows4Arr), 1) + onehotEncoder4 = onehotEncoder4.fit_transform(targetRows4Arr) + hotEncoderDF4 = pd.DataFrame(onehotEncoder4) + concatDF4 = pd.concat([DataRows4, hotEncoderDF4], axis=1) + corrMatrixComb4 = concatDF4.corr() + corrMatrixComb4 = corrMatrixComb4.abs() + corrMatrixComb4 = corrMatrixComb4.iloc[:,-len(uniqueTarget4):] + X4 = add_constant(DataRows4.dropna()) + VIF4 = pd.Series([variance_inflation_factor(X4.values, i) + for i in range(X4.shape[1])], + index=X4.columns) + if (len(targetRows4Arr) > 2): + MI4 = mutual_info_classif(DataRows4, targetRows4Arr) + MI4List = MI4.tolist() + else: + MI4List = [] + else: + corrMatrixComb4 = pd.DataFrame() + VIF4 = pd.Series() + MI4List = [] + + targetRows1ArrDF = pd.DataFrame(targetRows1Arr) + targetRows2ArrDF = pd.DataFrame(targetRows2Arr) + targetRows3ArrDF = pd.DataFrame(targetRows3Arr) + targetRows4ArrDF = pd.DataFrame(targetRows4Arr) + + concatAllDF1 = pd.concat([DataRows1, targetRows1ArrDF], axis=1) + concatAllDF2 = pd.concat([DataRows2, targetRows2ArrDF], axis=1) + concatAllDF3 = pd.concat([DataRows3, targetRows3ArrDF], axis=1) + concatAllDF4 = pd.concat([DataRows4, targetRows4ArrDF], axis=1) + + corrMatrixCombTotal1 = concatAllDF1.corr() + corrMatrixCombTotal1 = corrMatrixCombTotal1.abs() + corrMatrixCombTotal2 = concatAllDF2.corr() + corrMatrixCombTotal2 = corrMatrixCombTotal2.abs() + corrMatrixCombTotal3 = concatAllDF3.corr() + corrMatrixCombTotal3 = corrMatrixCombTotal3.abs() + corrMatrixCombTotal4 = concatAllDF4.corr() + corrMatrixCombTotal4 = corrMatrixCombTotal4.abs() + + corrMatrixCombTotal1 = pd.concat([corrMatrixCombTotal1.tail(1)]) + corrMatrixCombTotal2 = pd.concat([corrMatrixCombTotal2.tail(1)]) + corrMatrixCombTotal3 = pd.concat([corrMatrixCombTotal3.tail(1)]) + corrMatrixCombTotal4 = pd.concat([corrMatrixCombTotal4.tail(1)]) + + packCorrLoc = [] + + packCorrLoc.append(corrMatrix1.to_json()) + packCorrLoc.append(corrMatrix2.to_json()) + packCorrLoc.append(corrMatrix3.to_json()) + packCorrLoc.append(corrMatrix4.to_json()) + + packCorrLoc.append(corrMatrixComb1.to_json()) + packCorrLoc.append(corrMatrixComb2.to_json()) + packCorrLoc.append(corrMatrixComb3.to_json()) + packCorrLoc.append(corrMatrixComb4.to_json()) + + packCorrLoc.append(corrMatrixCombTotal1.to_json()) + packCorrLoc.append(corrMatrixCombTotal2.to_json()) + packCorrLoc.append(corrMatrixCombTotal3.to_json()) + packCorrLoc.append(corrMatrixCombTotal4.to_json()) + + packCorrLoc.append(json.dumps(uniqueTarget1)) + packCorrLoc.append(json.dumps(uniqueTarget2)) + packCorrLoc.append(json.dumps(uniqueTarget3)) + packCorrLoc.append(json.dumps(uniqueTarget4)) + + packCorrLoc.append(VIF1.to_json()) + packCorrLoc.append(VIF2.to_json()) + packCorrLoc.append(VIF3.to_json()) + packCorrLoc.append(VIF4.to_json()) + + packCorrLoc.append(json.dumps(MI1List)) + packCorrLoc.append(json.dumps(MI2List)) + packCorrLoc.append(json.dumps(MI3List)) + packCorrLoc.append(json.dumps(MI4List)) + + return packCorrLoc + @cross_origin(origin='localhost',headers=['Content-Type','Authorization']) @app.route('/data/thresholdDataSpace', methods=["GET", "POST"]) def Seperation(): @@ -503,11 +742,14 @@ def Seperation(): else: quadrant4.append(index) + Transformation(quadrant1, quadrant2, quadrant3, quadrant4) + DataRows1 = XData.iloc[quadrant1, :] DataRows2 = XData.iloc[quadrant2, :] DataRows3 = XData.iloc[quadrant3, :] DataRows4 = XData.iloc[quadrant4, :] + # Main Features corrMatrix1 = DataRows1.corr() corrMatrix1 = corrMatrix1.abs() corrMatrix2 = DataRows2.corr() @@ -691,6 +933,15 @@ def Seperation(): return 'Everything Okay' +@app.route('/data/returnCorrelationsTransformed', methods=["GET", "POST"]) +def SendCorrelTransformed(): + global packCorrTransformed + + response = { + 'correlResulTranformed': packCorrTransformed + } + return jsonify(response) + @app.route('/data/returnCorrelations', methods=["GET", "POST"]) def SendCorrel(): global packCorr