Получение одинаковых результатов для вероятностной нейронной сети в Python и R - PullRequest
0 голосов
/ 29 января 2019

Я новичок в нейронных сетях, поэтому, пожалуйста, будьте терпеливы со мной.Я пытаюсь скопировать в Python вероятностную нейронную сеть из R. Для целей репликации я использую известный набор данных iris из sklearn.datasets.

Как вы можете видеть в коде Python ниже, я использую PNN, предоставленный neupy .Предполагаемые вероятности для тестового набора напечатаны в конце.

#import pandas, sklearn, numpy, neupy
data = datasets.load_iris()
df = pd.DataFrame(data['data']).assign(y=data['target'])
df_train = df.iloc[0:145,:] 
df_test = df.iloc[145:,:]  #test set consists of the last 5 observations

pnn = algorithms.PNN(std=0.5, verbose=True)
pnn.train(df_train.iloc[:,0:3], df_train.iloc[:,4])
pred_prob = pnn.predict_proba(df_test.iloc[:,0:3])

### Predicted probabilities ###
  P(Y=0)    P(Y=1)  P(Y=2)
  0.0000    0.2690  0.7310
  0.0000    0.4082  0.5918
  0.0000    0.2505  0.7495
  0.0000    0.1083  0.8917
  0.0000    0.3373  0.6627

Однако, если я использую тот же подход (или, по крайней мере, я думаю, что это то же самое) в R на том же наборе данных, я делаюне получить те же результаты.В R я использую pnn-пакет .Вот что я делаю в R :

#library('pnn')
Data <- read.table("iris.csv", sep=",", header=TRUE)
data.train <- data[1:145,]
data.test <- data[146:150,] # test set consists of the last 5 observations

nn <- smooth(learn(data.train, category.column = 5), sigma = .5)
x.train <- as.matrix(data.test[1:4])
pred <- apply(x.train, 1, function(x) guess(nn, c(x)))

### Predicted Probabilites ###
 P(Y=0) P(Y=1)  P(Y=2)
0.0000  0.1353  0.8647
0.0000  0.3683  0.6317
0.0000  0.2365  0.7635
0.0000  0.0972  0.9028
0.0000  0.3849  0.6151

Есть ли какие-то параметры, которые я не принимаю во внимание?Или сети просто работают по разному?

...