fixed average

Former-commit-id: 387040b2e7
master
parent 73869aa392
commit 53f38cd2d9
  1. BIN
      __pycache__/tsneGrid.cpython-37.pyc
  2. 26
      index.html
  3. 808
      js/tsne_vis.js
  4. 28
      tsneGrid.py

@ -49,13 +49,14 @@
<div class="w3-modal-content w3-card-4 w3-animate-zoom">
<header class="w3-container w3-blue">
<h3 style="display:inline-block; font-size: 16px; margin-top: 15px; margin-left: 10px; margin-bottom:15px">t-SNE Grid Search Resulting Diverse Projections</h3>
[Sorting Metric:
[Sorting Projections According to Metric:
<select id="param-SortMOver-view" name="param-SortMOver-view" style="color: black" onchange="ReSortOver()">
<option value="1" selected>Neighborhood Hit (NH)</option>
<option value="2">Trustworthiness (T)</option>
<option value="3">Continuity (C)</option>
<option value="4">Stress (S)</option>
<option value="5">Shepard Diagram Correlation (SDC)</option>
<option value="1" selected>Quality Metrics Average (QMA)</option>
<option value="2">Neighborhood Hit (NH)</option>
<option value="3">Trustworthiness (T)</option>
<option value="4">Continuity (C)</option>
<option value="5">Stress (S)</option>
<option value="6">Shepard Diagram Correlation (SDC)</option>
</select>
]
</header>
@ -166,13 +167,14 @@
<div class="panel panel-default med-bottomProv" style="margin-top:0.2px; margin-bottom:+14px">
<div class="panel-heading">
<h2 class="panel-title" style="display:inline-block" data-toggle="tooltip" data-placement="right" title="Tip: a feature of this tool that supports clusters (and points) exploration. Checking the neighborhood preservation between the entire projection's average and a selection driven by the user.">Projections Provenance</h2>
<div id="textToChange" style="display:inline-block">[Sorting Metric:</div>
<div id="textToChange" style="display:inline-block">[Sorting Projections According to Metric:</div>
<select id="param-SortM-view" name="param-SortM-view" onchange="ReSort(false)">
<option value="1" selected>Neighborhood Hit (NH)</option>
<option value="2">Trustworthiness (T)</option>
<option value="3">Continuity (C)</option>
<option value="4">Stress (S)</option>
<option value="5">Shepard Diagram Correlation (SDC)</option>
<option value="1" selected>Quality Metrics Average (QMA)</option>
<option value="2">Neighborhood Hit (NH)</option>
<option value="3">Trustworthiness (T)</option>
<option value="4">Continuity (C)</option>
<option value="5">Stress (S)</option>
<option value="6">Shepard Diagram Correlation (SDC)</option>
</select>
]
<div style="display:inline-block; float:right">

File diff suppressed because it is too large Load Diff

@ -138,7 +138,7 @@ def continuity(D_high, D_low, k):
return float((1 - (2 / (n * k * (2 * n - 3 * k - 1)) * sum_i)).squeeze())
def normalized_stress(D_high, D_low):
return np.sum((D_high - D_low)**2) / np.sum(D_high**2) / 100
return (-1) * (np.sum((D_high - D_low)**2) / np.sum(D_high**2) / 100)
def shepard_diagram_correlation(D_high, D_low):
if len(D_high.shape) > 1:
@ -180,7 +180,7 @@ def procrustesFun(projections):
def Clustering(similarity):
similarityNP = np.array(similarity)
n_clusters = 36
n_clusters = 25 # change that to send less diverse projections
kmedoids = KMedoids(n_clusters=n_clusters, random_state=0, metric='precomputed').fit(similarityNP)
global dataProc
clusterIndex = []
@ -267,6 +267,7 @@ def calculateGrid():
metricCont = []
metricStress = []
metricShepCorr = []
metricsAverage = []
global convertLabels
convertLabels = []
@ -338,10 +339,14 @@ def calculateGrid():
valueNeigh = (metricNeigh[index] - min_value_neigh) / (max_value_neigh - min_value_neigh)
valueTrust = (metricTrust[index] - min_value_trust) / (max_value_trust - min_value_trust)
valueCont = (metricCont[index] - min_value_cont) / (max_value_cont - min_value_cont)
valueStress = (metricStress[index] - min_value_stress) / (max_value_stress - min_value_stress)
valueStress = 1 - ((metricStress[index]*(-1) - max_value_stress*(-1)) / (min_value_stress*(-1) - max_value_stress*(-1))) # we need the opposite
valueShep = (metricShepCorr[index] - min_value_shep) / (max_value_shep - min_value_shep)
metricsMatrixEntire.append([valueNeigh,valueTrust,valueCont,valueStress,valueShep])
average = (valueNeigh + valueTrust + valueCont + valueStress + valueShep) / 5
metricsAverage.append(average)
metricsMatrixEntire.append([average,valueNeigh,valueTrust,valueCont,valueStress,valueShep])
sortMetricsAverage = sorted(range(len(metricsAverage)), key=lambda k: metricsAverage[k], reverse=True)
sortNeigh = sorted(range(len(metricNeigh)), key=lambda k: metricNeigh[k], reverse=True)
sortTrust = sorted(range(len(metricTrust)), key=lambda k: metricTrust[k], reverse=True)
sortCont = sorted(range(len(metricCont)), key=lambda k: metricCont[k], reverse=True)
@ -351,6 +356,7 @@ def calculateGrid():
global metricsMatrix
metricsMatrix = []
metricsMatrix.append(sortMetricsAverage)
metricsMatrix.append(sortNeigh)
metricsMatrix.append(sortTrust)
metricsMatrix.append(sortCont)
@ -385,6 +391,7 @@ def OptimizeSelection():
metricCont = []
metricStress = []
metricShepCorr = []
metricsAverage = []
for index, loop in enumerate(clusterIndex):
resultNeigh = neighborhood_hit(np.array(projectionsAll[index]), convertLabels, KeepKs[index], dataSelected)
@ -392,7 +399,9 @@ def OptimizeSelection():
resultContinuity = continuity(D_highSpace[dataSelected, :], D_lowSpaceList[index][dataSelected, :], KeepKs[index])
resultStress = normalized_stress(D_highSpace[dataSelected, :], D_lowSpaceList[index][dataSelected, :])
resultShep = shepard_diagram_correlation(D_highSpace[dataSelected][:, dataSelected], D_lowSpaceList[index][dataSelected][:, dataSelected])
resultAverage = (resultNeigh + resultTrust + resultContinuity + resultStress + resultShep) / 5
print(resultAverage)
metricsAverage.append(resultAverage)
metricNeigh.append(resultNeigh)
metricTrust.append(resultTrust)
metricCont.append(resultContinuity)
@ -423,17 +432,22 @@ def OptimizeSelection():
valueCont = (metricCont[index] - min_value_cont) / (max_value_cont - min_value_cont)
valueStress = (metricStress[index] - min_value_stress) / (max_value_stress - min_value_stress)
valueShep = (metricShepCorr[index] - min_value_shep) / (max_value_shep - min_value_shep)
metricsMatrixEntireSel.append([valueNeigh,valueTrust,valueCont,valueStress,valueShep])
average = (valueNeigh + valueTrust + valueCont + valueStress + valueShep) / 5
metricsMatrixEntireSel.append([average,valueNeigh,valueTrust,valueCont,valueStress,valueShep])
sortMetricsAverage = sorted(range(len(metricsAverage)), key=lambda k: metricsAverage[k], reverse=True)
print(sortMetricsAverage)
print(metricsAverage)
sortNeigh = sorted(range(len(metricNeigh)), key=lambda k: metricNeigh[k], reverse=True)
sortTrust = sorted(range(len(metricTrust)), key=lambda k: metricTrust[k], reverse=True)
sortCont = sorted(range(len(metricCont)), key=lambda k: metricCont[k], reverse=True)
sortStress = sorted(range(len(metricStress)), key=lambda k: metricStress[k], reverse=True)
sortStress = sorted(range(len(metricStress)), key=lambda k: metricStress[k], reverse=False)
sortShepCorr = sorted(range(len(metricShepCorr)), key=lambda k: metricShepCorr[k], reverse=True)
global metricsMatrixSel
metricsMatrixSel = []
metricsMatrixSel.append(sortMetricsAverage)
metricsMatrixSel.append(sortNeigh)
metricsMatrixSel.append(sortTrust)
metricsMatrixSel.append(sortCont)

Loading…
Cancel
Save