Le contenu prédit par le perceptron multicouche (MLP Classifer) implémenté dans scikit-learn ne correspondait pas à la prédiction du réseau de neurones auto-fabriqué en utilisant les poids et la matrice de biais appris à l'avance.
Je n'ai pas standardisé les données d'entrée ...
import numpy as np
import os
import sys
importer des pandas en tant que bibliothèque pd # qui gère dataFrame
from math import exp, expm1
input = [[tableau de données d'entrée]]
input = np.array(input)
df = pd.read_csv ("Données utilisées pour la normalisation des données d'entrée (données lorsqu'elles sont entraînées)")
df_x = pd.get_dummies (colonne dans laquelle vous souhaitez générer des variables factices)
# Standardisation! (J'ai oublié ici)
sc = StandardScaler()
sc.fit_transform(df_x)
input = sc.transform(input)
bias0 = pd.read_csv ("bias csv output from MLP Classiefer", header = None)
bias0 = bias0.iloc[1:,1:].as_matrix()
weight0 = pd.read_csv ("poids csv sortie de MLP Classiefer", en-tête = Aucun)
weight0 = weight0.iloc[1:,1:].as_matrix()
# Poids / entrée + biais
layer0 = np.dot(weight0.T, dummy.T) + bias0
# Activation du calque caché. Cette fois, il a été activé par la fonction de rampe.
layer0 = np.clip(layer0, 0, np.finfo(layer0.dtype).max, out=layer0)
Uniquement dans la couche cachée, laissez la connexion linéaire de l'entrée et du poids passer par la fonction d'activation. .. .. Dans la couche de sortie finale, activée par la fonction sigmoïde
output_layer = np.dot (poids de la dernière couche cachée, données entrant dans la dernière couche cachée) + biais de la dernière couche cachée
# Activé par la fonction sigmoïde
1 / (1 + exp(-output_layer[0, 0]))
Je pense que c'est [0, 0] ici car il traite des problèmes binaires.
Recommended Posts