在这种情况下,我如何计算我的ANN的准确性

时间:2018-03-20 21:03:39

标签: python-3.x machine-learning scikit-learn neural-network keras

我正在运行以下代码。我想计算我的ANN测试数据的准确性。我正在使用windows platfrom,python 3.5

import numpy 
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasRegressor
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score
dataset=pd.read_csv('main.csv')
dataset=dataset.fillna(0)
X=dataset.iloc[:, 0:6].values
#X = X[numpy.logical_not(numpy.isnan(X))]
y=dataset.iloc[:, 6:8].values
#y = y[numpy.logical_not(numpy.isnan(y))]
#regr = LinearRegression()
#regr.fit(numpy.transpose(numpy.matrix(X)), numpy.transpose(numpy.matrix(y)))

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test=train_test_split(X,y, test_size=0.24,random_state=0)

创建模型

model = Sequential()
model.add(Dense(4, input_dim=6, kernel_initializer='normal', activation='relu'))
model.add(Dense(4, kernel_initializer='normal', activation='relu'))
model.add(Dense(2, kernel_initializer='normal'))

编译模型

model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(X_train, y_train, batch_size=5, epochs=5)

y_pred=model.predict(X_test)

现在,我想计算y_pred的准确性。任何帮助将不胜感激。 上面的代码是自解释的。我目前只使用5个时代进行实验。

4 个答案:

答案 0 :(得分:0)

Keras已经实现了准确性等指标,因此您只需将model.compile行更改为:

model.compile(loss='mean_squared_error', optimizer='adam',
              metrics = ["accuracy"])

然后训练和验证准确度(在[0,1]范围内)将在训练期间在进度条上显示,您也可以使用model.evaluate计算准确度,这将返回一个丢失元组和指标(在这种情况下的准确性)。

答案 1 :(得分:0)

除了使用keras的建议。您可以使用scikit-learn计算准确度,如下所示:

from sklearn.metrics import accuracy_score 
accuracy_score(y_test, y_pred)

有关详细信息,请查看文档:{​​{3}}

答案 2 :(得分:0)

虽然从狭义的技术意义上说,已经提供的答案都是正确的,但是你的问题有一个更普遍的问题会影响它的本质:你处于回归或分类背景中吗?

  • 如果您处于回归上下文中(正如您的loss='mean_squared_error'所暗示的那样以及输出图层中的线性激活),那么模型编译的简单扩充

    model.compile(loss='mean_squared_error', optimizer='adam',
          metrics = ["accuracy"])
    
    正如Matias所说,

    将提供准确性。然而,准确度在回归设置中毫无意义;看到答案&讨论here了解更多详情。

  • 如果您处于分类上下文中(正如您希望计算准确性所暗示的那样,这仅在分类中有意义),那么您的损失函数不应该是MSE,而是相反,交叉熵,以及最后一层的激活不应该是线性的。

答案 3 :(得分:-1)

要计算准确性,我们可以使用model.evaluate函数