Skip to content

Commit 5c20bc9

Browse files
Merge pull request #178 from dpr1005/development
Tests for IS-SSL added
2 parents eeaa65a + 25777c1 commit 5c20bc9

25 files changed

+395
-90
lines changed

docs/anexos.pdf

75.8 KB
Binary file not shown.

docs/bibliografiaAnexos.bib

+12-1
Original file line numberDiff line numberDiff line change
@@ -221,4 +221,15 @@ @misc{PyCharm
221221

222222
@misc{VSCode-Remote-SSH, title={Remote SSH}, url={https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh}}
223223

224-
@misc{Remote-Development-Tricks-Tips, title={Remote Development Tips and Tricks}, url={https://code.visualstudio.com/docs/remote/troubleshooting#_installing-a-supported-ssh-client}, year={2022}, author={Microsoft}}
224+
@misc{Remote-Development-Tricks-Tips, title={Remote Development Tips and Tricks}, url={https://code.visualstudio.com/docs/remote/troubleshooting#_installing-a-supported-ssh-client}, year={2022}, author={Microsoft}}
225+
226+
@article{leyva2015three,
227+
title={Three new instance selection methods based on local sets: A comparative study with several approaches from a bi-objective perspective},
228+
author={Leyva, Enrique and Gonz{\'a}lez, Antonio and P{\'e}rez, Ra{\'u}l},
229+
journal={Pattern Recognition},
230+
volume={48},
231+
number={4},
232+
pages={1523--1537},
233+
year={2015},
234+
publisher={Elsevier}
235+
}

docs/img/anexos/design/ERD.png

73.2 KB
Loading
35 KB
Loading
34.1 KB
Loading
33.7 KB
Loading
36.8 KB
Loading

docs/tex/A_Plan_proyecto.tex

+137-6
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ \subsubsection{\textit{Sprint} 7: Felix The Cat}
315315

316316
\end{itemize}
317317

318-
\subsubsection{\textit{Sprint} 8: Name}
318+
\subsubsection{\textit{Sprint} 8: Jason}
319319
\begin{itemize}
320320
\item \textbf{\textit{Planning meeting}}
321321

@@ -349,7 +349,7 @@ \subsubsection{\textit{Sprint} 8: Name}
349349

350350
\end{itemize}
351351

352-
\subsubsection{\textit{Sprint} 9: Name}
352+
\subsubsection{\textit{Sprint} 9: Lumberjack 20}
353353
\begin{itemize}
354354
\item \textbf{\textit{Planning meeting}}
355355

@@ -386,7 +386,7 @@ \subsubsection{\textit{Sprint} 9: Name}
386386
Los rankings creados no han convencido en estructura y formato, es por ello que en siguiente \textit{sprint} tendrán que ser repetidos.
387387
\end{itemize}
388388

389-
\subsubsection{\textit{Sprint} 10: Name}
389+
\subsubsection{\textit{Sprint} 10: Jerry}
390390
\begin{itemize}
391391
\item \textbf{\textit{Planning meeting}}
392392
Objetivos del décimo \textit{sprint}:
@@ -422,7 +422,7 @@ \subsubsection{\textit{Sprint} 10: Name}
422422
Durante la realización del \textit{sprint} fueron surgiendo pequeños \textit{bugs} en la interfaz gráfica que se fueron solventando, todos ellos originados por descuidos (debido a la falta de experiencia) del propio equipo de desarrollo con el uso de las nuevas librarías.
423423
\end{itemize}
424424

425-
\subsubsection{\textit{Sprint} 11: Name}
425+
\subsubsection{\textit{Sprint} 11: Nutts}
426426
\begin{itemize}
427427
\item \textbf{\textit{Planning meeting}}
428428

@@ -461,7 +461,7 @@ \subsubsection{\textit{Sprint} 11: Name}
461461

462462
\end{itemize}
463463

464-
\subsubsection{\textit{Sprint} 12: Name}
464+
\subsubsection{\textit{Sprint} 12: DVB}
465465
\begin{itemize}
466466
\item \textbf{\textit{Planning meeting}}
467467

@@ -495,7 +495,7 @@ \subsubsection{\textit{Sprint} 12: Name}
495495

496496
\end{itemize}
497497

498-
\subsubsection{\textit{Sprint} 13: Name}
498+
\subsubsection{\textit{Sprint} 13: Kutschbach}
499499
\begin{itemize}
500500
\item \textbf{\textit{Planning meeting}}
501501

@@ -516,6 +516,137 @@ \subsubsection{\textit{Sprint} 13: Name}
516516
Este \textit{sprint} se desarrolla entre el ocho de marzo de dos mil veintidós y el quince de marzo de dos mil veintidós.
517517
\item \textbf{\textit{Burndown chart}}
518518

519+
\begin{figure}
520+
\begin{center}
521+
\includegraphics[width=\textwidth]{../img/anexos/sprints/BD-Sprint13}
522+
\caption{\textit{Burndown Chart Sprint 13.}}\label{fig:BD-Sprint13}
523+
\end{center}
524+
\end{figure}
525+
Tal y como se aprecia en la Figura~\ref{fig:BD-Sprint13}, en este \textit{sprint} el ritmo de trabajo ha sido muy constante, algunas tareas fueron asignadas con puntos de historia más bajos de lo que deberían de haber sido y así quedan reflejados en los días diez y once. El total de puntos de historia ha sido de 48 con un total de 30 horas invertidas.
526+
527+
\item \textbf{\textit{Sprint review meeting}}
528+
529+
El trabajo realizado en este \textit{sprint} ha sido satisfactorio a pesar de que no se han podido terminar todas las tareas abiertas a tiempo, esto ha sido debido a un pequeño bajón en la motivación del equipo de desarrollo junto con otras actividades de la vida universitaria. \\
530+
En lo referido al proyecto, han surgido múltiples reconsideraciones del diseño de la interfaz según se iban recuperando datos y diseñando, por lo que el proceso de trabajo ha tenido un componente creativo en muchas ocasiones, no siendo el principal fuerte del equipo de desarrollo.
531+
\end{itemize}
532+
533+
\subsubsection{\textit{Sprint} 14: T.U.P.}
534+
\begin{itemize}
535+
\item \textbf{\textit{Planning meeting}}
536+
537+
Objetivos del decimocuarto \textit{sprint}:
538+
\begin{enumerate}
539+
\item Ultimar detalles de los casos de uso.
540+
\item Hacer diagramas de secuencia de <<Nuevo Experimento>>, <<Consultar Analíticas de Uso>> y <<Monitorización en tiempo real>>.
541+
\item Realizar la experimentación con picos de densidad y ruido.
542+
\item Implementación de los algoritmos LSSm y LSBo, ver~\cite{leyva2015three}.
543+
\end{enumerate}
544+
\item \textbf{Marcas temporales}
545+
546+
Este \textit{sprint} se desarrolla entre el quince de marzo de dos mil veintidós y el veintidós de marzo de dos mil veintidós.
547+
\item \textbf{\textit{Burndown chart}}
548+
\begin{figure}
549+
\begin{center}
550+
\includegraphics[width=\textwidth]{../img/anexos/sprints/BD-Sprint14}
551+
\caption{\textit{Burndown Chart Sprint 14.}}\label{fig:BD-Sprint14}
552+
\end{center}
553+
\end{figure}
554+
555+
En este \textit{sprint} se han invertido cerca de 38h, el equipo de desarrollo cada vez se encuentra más cómodo trabajando en las diferentes tareas que se asignan, y aunque el número de puntos de historia es relativamente elevado, 60, esto es debido al histórico de dificultad de programar determinados algoritmos.
556+
557+
\item \textbf{\textit{Sprint review meeting}}
558+
559+
Junto con lo expuesto anteriormente, se ha comprobado en este \textit{sprint} la implementación de los algoritmos basados en picos de densidad, con la corazonada de que no habría algún fallo en su implementación. Para sorpresa del equipo de desarrollo no han sido necesarios cambios a mayores de un par de <<fallos de dedo>> a la hora de programarlos, lo cual ha permitido una mayor agilidad a la hora de trabajar y reducir el número de horas invertidas.
560+
\end{itemize}
561+
562+
\subsubsection{\textit{Sprint} 15: Robbie}
563+
\begin{itemize}
564+
\item \textbf{\textit{Planning meeting}}
565+
Objetivos del decimoquinto \textit{sprint}:
566+
\begin{enumerate}
567+
\item Toma de decisión del formato del diagrama de secuencia <<Nuevo Experimento>>.
568+
\item Introducir en Trabajos Relacionados, una disyunción entre \texttt{UBUMLaaS} y los el aprendizaje semi-supervisado seguro.
569+
\item Comenzar con la primera etapa de experimentación <<seria>> que se va a realizar.
570+
\item Segundo
571+
\end{enumerate}
572+
\item \textbf{Marcas temporales}
573+
574+
Este \textit{sprint} se desarrolla entre el veintidós de marzo de dos mil veintidós y el veintinueve de marzo de dos mil veintidós.
575+
576+
\item \textbf{\textit{Burndown chart}}
577+
\begin{figure}
578+
\begin{center}
579+
\includegraphics[width=\textwidth]{../img/anexos/sprints/BD-Sprint15}
580+
\caption{\textit{Burndown Chart Sprint 15.}}\label{fig:BD-Sprint15}
581+
\end{center}
582+
\end{figure}
583+
584+
Lo primero a destacar de este \textit{sprint} y tal cual lo refleja la Figura~\ref{fig:BD-Sprint15}, correspondiente al \textit{Burndown report}; no se han terminado todas las tareas a tiempo. Esto ha sido debido a que faltaba por cerrar un \textit{pull request} el cual estaba pasando una serie de tests.
585+
586+
El número total de puntos de historia asignados al \textit{sprint} ha sido de 45, y se han invertido aproximadamente 35 horas, en esta ocasión el trabajo ha ido acorde a los puntos de historia asignados.
587+
588+
\item \textbf{\textit{Sprint review meeting}}
589+
590+
Con la experimentación lanzada y pudiendo haberse hecho entera, únicamente un sexto de lo que se espera que sea al final, los resultados no parecen ser muy prometedores, pero aún es pronto para saber lo que finalmente va a ser.\\
591+
592+
Los diagramas de secuencia han llevado mucho más tiempo del inicialmente esperado, esto se debe a la poca experiencia realizando este tipo de actividades y que no son el principal atractivo, por lo que el trabajo en esas partes se ha visto ralentizado.
593+
594+
En general todas las tareas relacionadas con la memoria están requiriendo más tiempo del que \textit{a priori} parece que va a ser necesario. Pero para conseguir un producto de calidad, es lo que se debe hacer.
595+
596+
\end{itemize}
597+
598+
\subsubsection{\textit{Sprint} 16: Matt 16}
599+
\begin{itemize}
600+
\item \textbf{\textit{Planning meeting}}
601+
602+
Objetivos del dieciseisavo \textit{sprint}:
603+
\begin{enumerate}
604+
\item Mejora de la calidad del código de los algoritmos de la biblioteca \texttt{IS-SSL}.
605+
\item Remates de los diagramas de secuencia.
606+
\item Añadir \textit{Self-Training} basado en picos de densidad a los Conceptos Teóricos.
607+
\item Escribir el Manual del Programador.
608+
\item Crear ficheros de configuración de entorno para \texttt{Conda} y \texttt{Pyenv}.
609+
\end{enumerate}
610+
\item \textbf{Marcas temporales}
611+
612+
Este \textit{sprint} se desarrolla entre el veintinueve de marzo de dos mil veintidós y el ocho de abril de dos mil veintidós.
613+
614+
\item \textbf{\textit{Burndown chart}}
615+
\begin{figure}
616+
\begin{center}
617+
\includegraphics[width=\textwidth]{../img/anexos/sprints/BD-Sprint16}
618+
\caption{\textit{Burndown Chart Sprint 16.}}\label{fig:BD-Sprint16}
619+
\end{center}
620+
\end{figure}
621+
622+
En este \textit{sprint} se ha trabajado principalmente en la memoria y en retoques de código, es por ello que se ha dado una cifra superior de puntos de historia de la media, y con lo visto en el \textit{sprint} anterior, estas tareas están comenzando a llevar más tiempo de que inicialmente se piensa. Se han invertido aproximadamente 37 horas. Los tiempos de trabajo empiezan a ser correctos de forma reiterada con lo planificado.
623+
624+
\item \textbf{\textit{Sprint review meeting}}
625+
Con la experimentación a tres sextos realizada, todavía no se ha encontrado un nexo común que nos permita crear hipótesis, por lo que se aprovecharán las vacaciones de Semana Santa para dejar más experimentos en ejecución y rehacer las \textit{scripts} de análisis de resultados.
626+
627+
UBUMLaaS parece que está correcto en todas sus funcionalidades, por lo que ya se podría afirmar que la parte <<grande>> de modificación está terminada.
628+
629+
\end{itemize}
630+
631+
\subsubsection{\textit{Sprint} 17: Dae Han}
632+
\begin{itemize}
633+
\item \textbf{\textit{Planning meeting}}
634+
635+
Objetivos del decimoséptimo \textit{sprint}:
636+
\begin{enumerate}
637+
\item Modificar las tablas de versiones con una descripción.
638+
\item Realizar una encuesta para utilizar agentes externos como \textit{beta testers} para UBUMLaaS.
639+
\item Cambiar las \textit{Long Table} de los casos de uso por tablas normales de \LaTeX.
640+
\item Escribir el anexo de la documentación técnica del programador.
641+
\item Realizar los diagramas de relación.
642+
\item Modificar los algoritmos de visualización de los resultados de la experimentación.
643+
\end{enumerate}
644+
\item \textbf{Marcas temporales}
645+
646+
Este \textit{sprint} se desarrolla entre el ocho de abril de dos mil veinte y el ocho de abril de dos mil veintidós. Englobando las vacaciones de Semana Santa.
647+
648+
\item \textbf{\textit{Burndown chart}}
649+
519650
\item \textbf{\textit{Sprint review meeting}}
520651

521652
\end{itemize}

instance_selection/_CNN.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ def filter(self, samples, y):
8484
delete_multiple_element(handbag, indexes)
8585
del handbag
8686
samples = pd.DataFrame(store, columns=self.x_attr)
87-
y = pd.DataFrame(np.array(store_classes).flatten().astype(int))
87+
y = pd.DataFrame(np.array(store_classes, dtype=object).flatten().astype(
88+
int))
8889

8990
return samples, y

is-ssl.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ channels:
33
- conda-forge
44
- default
55
- anaconda
6+
- gwerbin
67
dependencies:
7-
- numpy=1.20.3
8+
- numpy=1.22.3
89
- scikit-learn=0.24.2
910
- matplotlib=3.4.3
1011
- pandas=1.3.4

requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
numpy~=1.20.3
1+
numpy~=1.22.3
22
scikit-learn~=0.24.2
33
matplotlib~=3.4.3
44
pandas~=1.3.4

semisupervised/CoTraining.py

+16-15
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import numpy as np
1111
from sklearn.naive_bayes import GaussianNB
1212
from sklearn.preprocessing import LabelEncoder
13+
1314
from .utils import split
1415

1516

@@ -45,13 +46,10 @@ def __init__(self, p=1, n=3, k=30, u=75, random_state=None,
4546
self.h1, self.h2 = configs
4647

4748
def fit(self, samples, y):
48-
labeled, u, y = split(samples, y)
49-
50-
if len(labeled) != len(y):
51-
raise ValueError(
52-
f'The dimension of the labeled data must be the same as the '
53-
f'number of labels given. {len(labeled)} != {len(y)}'
54-
)
49+
try:
50+
labeled, u, y = split(samples, y)
51+
except IndexError:
52+
raise ValueError('Dimensions do not match.')
5553

5654
le = LabelEncoder()
5755
le.fit(y)
@@ -61,8 +59,12 @@ def fit(self, samples, y):
6159
self.size_x1 = ceil(len(labeled[0]) / 2)
6260

6361
rng = np.random.default_rng()
64-
u_random_index = rng.choice(len(u), size=floor(self.u),
65-
replace=False, shuffle=False)
62+
try:
63+
u_random_index = rng.choice(len(u), size=floor(self.u),
64+
replace=False, shuffle=False)
65+
except ValueError:
66+
raise ValueError('The model was incorrectly parametrized, '
67+
'total between _p_ and _u_ is to big.')
6668

6769
u_prime = u[u_random_index]
6870
u1, u2 = np.array_split(u_prime, 2, axis=1)
@@ -105,17 +107,16 @@ def fit(self, samples, y):
105107
u_prime = np.delete(u_prime, old_indexes, axis=0)
106108

107109
u = np.delete(u, u_random_index, axis=0)
110+
108111
try:
109112
u_random_index = rng.choice(len(u),
110113
size=2 * self.p + 2 * self.n,
111114
replace=False, shuffle=False)
112115
except ValueError:
113-
print('The model was incorrectly parametrized, k is to big.')
114-
try:
115-
u_prime = np.concatenate((u_prime, u[u_random_index]))
116-
except IndexError:
117-
print('The model was incorrectly parametrized, there are not '
118-
'enough unlabeled samples.')
116+
raise ValueError('The model was incorrectly parametrized, '
117+
'total between _p_ and _u_ is to big.')
118+
119+
u_prime = np.concatenate((u_prime, u[u_random_index]))
119120

120121
def predict(self, samples):
121122
x1, x2 = np.array_split(samples, 2, axis=1)

semisupervised/DemocraticCoLearning.py

+5-8
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,15 @@ def __init__(self, random_state=None,
6969
self.h1, self.h2, self.h3 = configs
7070

7171
def fit(self, samples, y):
72-
labeled, u, y = split(samples, y)
73-
74-
if len(labeled) != len(y):
75-
raise ValueError(
76-
f'The dimension of the labeled data must be the same as the '
77-
f'number of labels given. {len(labeled)} != {len(y)}'
78-
)
72+
try:
73+
labeled, u, y = split(samples, y)
74+
except IndexError:
75+
raise ValueError('Dimensions do not match.')
7976

8077
le = LabelEncoder()
8178
le.fit(y)
8279
y = le.transform(y)
83-
self.n_labels = max(np.unique(y))+1
80+
self.n_labels = max(np.unique(y)) + 1
8481

8582
unlabeled_data = u
8683
self.n_attributes = len(labeled[0])

0 commit comments

Comments
 (0)