Skip to content

Commit ce842fd

Browse files
Written user's manual for IS-SSL #184
1 parent 96f6f8a commit ce842fd

File tree

3 files changed

+88
-2
lines changed

3 files changed

+88
-2
lines changed

docs/anexos.pdf

6.8 KB
Binary file not shown.

docs/tex/D_Manual_programador.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -452,8 +452,8 @@ \subsubsection{Uso del proyecto}
452452
Según la codificación realizada, todos los métodos accesibles de las clases esperan la entrada de objetos de tipo \texttt{DataFrame} de la librería de \texttt{Pandas}. Internamente en función de las operaciones que tenga que realizar, serán convertidos estos objetos a listas de Python o arreglos de \texttt{NumPy}. Independientemente de las operaciones internas, siempre la salida producida (en caso de tenerla) serán objetos de \texttt{Pandas}, no teniendo que ser necesariamente el mismo objeto de entrada modificado, en la mayor parte de las ocasiones serán objetos nuevos.
453453

454454
\begin{lstlisting}[language=Python, caption={Ejemplo de uso de IS-SSL}, label={lst:ejemplo}]
455-
from ssl_dnx import TriTraining
456-
from is_dnx import ENN
455+
from SemiSupervisedLearningDNX import TriTraining
456+
from InstanceSelectionDNX import ENN
457457
from sklearn.naive_bayes import GaussianNB
458458
from sklearn.neighbors import KNeighborsClassifier
459459
from sklearn.tree import DecisionTreeClassifier

docs/tex/E_Manual_usuario.tex

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,90 @@ \subsection{Instalación}
6767

6868
\subsection{Manual del usuario}
6969

70+
A continuación se documentan las funcionalidades de las bibliotecas, desde su importación, a uso y especificación de los diferentes parámetros de entrada y salida esperados. A modo de resumen se puede destacar que todos los algoritmos siguen la misma estructura interna luego el aprendizaje y familizarización es relativamente rápido.
7071

72+
\subsubsection{Biblioteca de algoritmos de selección de instancias}
73+
\textbf{Importar}
74+
75+
Para poder trabajar con los algoritmos de selección de instancias se deben de importar en el fichero en el que se quieran utilizar. Para ello se importan como cualquier otro paquete de Python, supongamos que queremos utilizar el algoritmo ENN, lo importaremos de la siguiente manera:
76+
77+
\texttt{from InstanceSelectionDNX import ENN}
78+
79+
De esta forma podemos sustituir ENN por el algoritmo que deseemos de entre los disponibles y tenerlo a nuestra disposición para su uso.
80+
81+
Todos los algoritmos están codificados como \texttt{class} por lo tanto se debe de instanciar antes de poder hacer uso del mismo.
82+
83+
\textbf{Uso}
84+
85+
Como se ha comentado al comienzo, todos los algoritmos poseen la misma estructura. Todos ellos poseen el método \texttt{filter} de tal manera que una vez se haya instanciado se podrá llamar al método y se obtendrá como resultado el conjunto de datos reducido.
86+
87+
Todos los algoritmos en su instanciación reciben aquellos parámetros que son necesarios para la configuración y su uso posterior, mientras que cuando se realiza el filtrado únicamente reciben el conjunto de datos dividido, por un lado los atributos y por otro lado la clase.
88+
89+
Tanto las entradas como las salidas deben ser objetos de tipo \texttt{DataFrame} de \texttt{Pandas}.
90+
91+
\begin{lstlisting}[language=python, caption={Ejemplo de uso de ENN}]]
92+
from InstanceSelectionDNX import ENN
93+
import pandas as pd
94+
95+
data = pd.DataFrame([[1, 2, 3, 4],
96+
[4, 3, 2, 1],
97+
[1, 2, 4, 3],
98+
[2, 1, 3, 4]])
99+
target = pd.DataFrame([0, 0, 1, 1])
100+
101+
model = ENN(nearest_neighbors=3, power_parameter=2)
102+
103+
data_red, label_red = model.filter(data, target)
104+
\end{lstlisting}
105+
106+
\subsubsection{Biblioteca de algoritmos de aprendizaje semi-supervisado}
107+
\textbf{Importar}
108+
109+
De manera análoga a la otra biblioteca, importaremos el paquete y seleccionaremos cuál es el algoritmo que se desea utilizar, por ejemplo:
110+
111+
\texttt{from SemiSupervisedLearningDNX import TriTraining}
112+
113+
Pudiendo sustituir TriTraining por el algoritmo deseado.
114+
115+
Todos los algoritmos están codificados como \texttt{class} por lo tanto se debe de instanciar antes de poder hacer uso del mismo.
116+
117+
\textbf{Uso}
118+
119+
Los algoritmos siguen la misma estructura interna que los propios de \texttt{Scikit-Learn}, por lo que una vez instanciados (con sus respectivos parámetros de configuración) bastará con llamar al método \texttt{fit} de cada uno de ellos, así como para predecir al método correspondiente, denominado \texttt{predict}.
120+
121+
\begin{itemize}
122+
\item \textbf{\texttt{Fit}:} recibe como argumentos dos parámetros, las instancias y las etiquetas o clases, siendo -1 aquellas que se desconozcan y se quieran utilizar para entrenar el algoritmo.
123+
\item \textbf{\texttt{Predict}:} recibe únicamente las instancias que se quieren etiquetar. Devuelve estas instancias etiquetadas.
124+
\end{itemize}
125+
126+
Todas las entradas como las salidas deben ser objetos de tipo \texttt{DataFrame} de \texttt{Pandas}.
127+
128+
\begin{lstlisting}[language=Python, caption={Ejemplo de uso de IS-SSL}, label={lst:ejemplo}]
129+
from SemiSupervisedLearningDNX import TriTraining
130+
from sklearn.naive_bayes import GaussianNB
131+
from sklearn.neighbors import KNeighborsClassifier
132+
from sklearn.datasets import load_iris
133+
134+
model = TriTraining(
135+
random_state = 42,
136+
c1 = GaussianNB, c1_params = None,
137+
c2 = KNeighborsClassifier, c2_params = {n_neighbors: 2}
138+
)
139+
140+
iris = load_iris()
141+
X = iris['data']
142+
y = iris['target']
143+
144+
X = pd.DataFrame(X), y = pd.DataFrame(y)
145+
146+
val = [True if i % 2 == 0 else False for i in range(len(y))]
147+
y.loc[val] = -1
148+
149+
X, X_test, y, y_test = train_test_split(X.to_numpy(), y.to_numpy())
150+
151+
X = pd.DataFrame(X), y = pd.DataFrame(y)
152+
153+
model.fit(X, y)
154+
y_pred = model.predict(X_test)
155+
156+
\end{lstlisting}

0 commit comments

Comments
 (0)