Skip to content
Snippets Groups Projects
Commit 5f327e93 authored by Silas Dohm's avatar Silas Dohm
Browse files

confmatrix doc, added page break before subsections

parent 753f823b
No related branches found
No related tags found
No related merge requests found
...@@ -17,3 +17,5 @@ X.npy ...@@ -17,3 +17,5 @@ X.npy
Y.npy Y.npy
*.pyc *.pyc
.vscode/ .vscode/
/__pychache__/
python/hf5-test.py
\newpage
\subsection{Word2Vec-CNN-Modell} \subsection{Word2Vec-CNN-Modell}
Ein \noteable{convolutional neural network}, kurz CNN, ist in der Lage, Ein \noteable{convolutional neural network}, kurz CNN, ist in der Lage,
lokale Muster in einer Sequenz zu erlernen und diese später lokale Muster in einer Sequenz zu erlernen und diese später
...@@ -187,7 +188,7 @@ einmal durchläuft. Dieser Generator kann nun in ...@@ -187,7 +188,7 @@ einmal durchläuft. Dieser Generator kann nun in
Zeile 35 an die Methode \lstinline{evaluate} übergeben werden. Zeile 35 an die Methode \lstinline{evaluate} übergeben werden.
Das Evaluieren zeigt das dieses Modell zu $81.44\%$ die Klassen richtig klassifiziert. Das Evaluieren zeigt das dieses Modell zu $81.44\%$ die Klassen richtig klassifiziert.
\begin{lstlisting}[caption={CNN - Klassengewichte},label={list:modelCNNWeights}] \begin{lstlisting}[caption={CNN - Klassengewichte},label={list:modelCNNWeights},numbers=none]
Y_train=[] Y_train=[]
gen = hdf5Generator(path + "w2vCNN.hdf5", batchSize, "Test",loop=False) gen = hdf5Generator(path + "w2vCNN.hdf5", batchSize, "Test",loop=False)
for (x,y) in gen: for (x,y) in gen:
...@@ -197,10 +198,10 @@ count = np.unique(Y_train,return_counts=True)[1] ...@@ -197,10 +198,10 @@ count = np.unique(Y_train,return_counts=True)[1]
cWeight = 1/(count/Y_train.size) cWeight = 1/(count/Y_train.size)
\end{lstlisting} \end{lstlisting}
\subsubsection{Konfusionsmatrix} \subsubsection{Konfusionsmatrix}
Um einen besseren Eindruck über die Stärken und Schwächen des Um einen besseren Eindruck über die Qualität des
Netzes zu erhalten, wird auch bei diesem Netzes zu erhalten, wird auch bei diesem
Modell wieder eine Konfusionsmatrix erstellt. Modell wieder eine Konfusionsmatrix erstellt.
\begin{lstlisting}[caption={CNN - Konfusionsmatrix},label={list:modelCNNWeights}] \begin{lstlisting}[caption={CNN - Konfusionsmatrix},label={list:modelCNNKonf},firstnumber=36]
from sklearn.metrics import confusion_matrix from sklearn.metrics import confusion_matrix
tD = hdf5Generator(path + "w2vCNN.hdf5", batchSize, "Test",loop=False) tD = hdf5Generator(path + "w2vCNN.hdf5", batchSize, "Test",loop=False)
y_pred = np.argmax(modelNN.predict(tD),axis=-1) y_pred = np.argmax(modelNN.predict(tD),axis=-1)
...@@ -211,6 +212,13 @@ y_test = np.array(y_test).flatten() ...@@ -211,6 +212,13 @@ y_test = np.array(y_test).flatten()
confusion_matrix(y_test,y_pred,normalize='true') confusion_matrix(y_test,y_pred,normalize='true')
\end{lstlisting} \end{lstlisting}
Dafür werden die vom Netz vorhergesagten Klassen der Testmenge in dem
Vektor \lstinline{y_pred} gespeichert und die tatsächlichen Klassen der Testmenge in dem
Vektor \lstinline{y_test}. Beide Vektoren werden der Funktion
\lstinline{confusion_matrix} Übergeben,
welche die in der Tabelle \ref{tab:conf_w_cnn} dargestellte Konfusionsmatrix
zurückliefert.
\begin{table}[ht] \begin{table}[ht]
\def\arraystretch{1.3} \def\arraystretch{1.3}
\begin{center} \begin{center}
...@@ -224,4 +232,4 @@ confusion_matrix(y_test,y_pred,normalize='true') ...@@ -224,4 +232,4 @@ confusion_matrix(y_test,y_pred,normalize='true')
\label{tab:conf_w_cnn} \label{tab:conf_w_cnn}
\caption{Konfusionsmatrix mit Klassengewichtung} \caption{Konfusionsmatrix mit Klassengewichtung}
\end{table} \end{table}
\wip{Tabelle auswerten}
\newpage
\subsection{Mean-Vektor-Klassifikationsmodell} \subsection{Mean-Vektor-Klassifikationsmodell}
%Durchschnittsvektor-Klassifkationsmodell ?? %Durchschnittsvektor-Klassifkationsmodell ??
Das Word2Vec-Modell bildet einen Vektorraum, indem ähnliche Wörter nahe Das Word2Vec-Modell bildet einen Vektorraum, indem ähnliche Wörter nahe
...@@ -173,7 +174,6 @@ from sklearn.metrics import confusion_matrix ...@@ -173,7 +174,6 @@ from sklearn.metrics import confusion_matrix
y_pred = np.argmax(modelNN.predict(X_test),axis=-1) y_pred = np.argmax(modelNN.predict(X_test),axis=-1)
confusion_matrix(Y_test,y_pred,normalize='true') confusion_matrix(Y_test,y_pred,normalize='true')
\end{lstlisting} \end{lstlisting}
\wip{Tabelle auswerten}
\begin{table}[ht] \begin{table}[ht]
\def\arraystretch{1.3} \def\arraystretch{1.3}
\begin{center} \begin{center}
...@@ -185,11 +185,24 @@ confusion_matrix(Y_test,y_pred,normalize='true') ...@@ -185,11 +185,24 @@ confusion_matrix(Y_test,y_pred,normalize='true')
\end{tabular} \end{tabular}
\end{center} \end{center}
\caption{Konfusionsmatrix mit Klassengewichtung} \caption{Konfusionsmatrix mit Klassengewichtung}
\label{tab:m_w}
\end{table} \end{table}
Wie in Tabelle \ref{tab:m_w} zu sehen ist, werden negative Bewertungen zu $80.46\%$
richtig als negative Bewertung klassifiziert, $17.27\%$ werden als
neutral klassifiziert und $2.28\%$ werden als positiv klassifiziert.
Neutrale Bewertungen werden zu $68.44\%$ richtig klassifiziert,
jedoch werden $16.82\%$ der neutralen Bewertungen falsch als
negative klassifiziert und zu $14.74\%$ falsch als positiv klassifiziert.
Die positiven Bewertungen werden zu $81.72\%$ richtig als positive
Bewertungen klassifiziert, zu $15.86\%$ als neutral und zu
$2.42\%$ als negativ klassifiziert.
Das gleiche Modell ohne die Gewichtung der Klassen erreicht eine Genauigkeit Das gleiche Modell ohne die Gewichtung der Klassen erreicht eine Genauigkeit
von $85.7\%$, betrachtet man jedoch die Konfusionsmatrix in Tabelle \ref{tab:conf_no_w}, so von $85.7\%$, betrachtet man jedoch die Konfusionsmatrix in Tabelle \ref{tab:conf_no_w}, so
sieht man das dort bloß $27\%$ der neutralen Rezensionen richtig klassifiziert wurden. sieht man das dort bloß $27\%$ der neutralen Rezensionen richtig klassifiziert wurden.
\wip{Tabellenreferenz ???}
\begin{table}[ht] \begin{table}[ht]
\def\arraystretch{1.3} \def\arraystretch{1.3}
\begin{center} \begin{center}
...@@ -200,6 +213,6 @@ sieht man das dort bloß $27\%$ der neutralen Rezensionen richtig klassifiziert ...@@ -200,6 +213,6 @@ sieht man das dort bloß $27\%$ der neutralen Rezensionen richtig klassifiziert
Positiv &0.0249& 0.0235& 0.9516\\ Positiv &0.0249& 0.0235& 0.9516\\
\end{tabular} \end{tabular}
\end{center} \end{center}
\label{tab:conf_no_w}
\caption{Konfusionsmatrix ohne Klassengewichtung} \caption{Konfusionsmatrix ohne Klassengewichtung}
\label{tab:conf_no_w}
\end{table} \end{table}
\ No newline at end of file
No preview for this file type
File deleted
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment