我是神经网络的新手,所以请耐心等待。我正在尝试在 Python 中复制来自 R 的概率神经网络。出于复制目的,我正在使用来自 sklearn.datasets的著名iris 数据集。
正如您在下面的Python 代码中看到的,我使用的是neupy提供的 PNN 。最后打印测试集的估计概率。
#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-package。这是我在 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
是否有一些我没有考虑的参数?还是网络只是以不同的方式工作?