我正在运行以下代码。我想计算测试数据的ANN的准确性。我正在使用 Windows 平台,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 个纪元进行实验。
Keras 已经实现了准确性等指标,因此您只需将model.compile
行更改为:
model.compile(loss='mean_squared_error', optimizer='adam',
metrics = ["accuracy"])
然后,训练和验证准确性(在 [0, 1] 范围内(将在训练期间显示在进度条上,您也可以使用 model.evaluate
计算准确性,这将返回损失和指标元组(在本例中为准确性(。
除了建议使用keras
.您可以使用scikit-learn
计算精度,如下所示:
from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_pred)
有关详细信息,请查看文档:sklearn.metrics.accuracy_score
狭义的技术意义上讲,已经提供的两个答案都是正确的,但您的问题存在一个更普遍的问题,它会影响它的本质:您是在回归还是分类环境中?
如果您处于回归上下文中(如您的
loss='mean_squared_error'
和输出层中的线性激活所暗示的那样(,那么模型编译的简单增强model.compile(loss='mean_squared_error', optimizer='adam', metrics = ["accuracy"])
正如马蒂亚斯所说,将提供准确性。然而,在回归设置中,准确性毫无意义;有关更多详细信息,请参阅此处的答案和讨论。
如果您处于分类上下文中(正如您希望计算准确性所暗示的那样,这仅在分类中有意义(,那么您的损失函数不应该是 MSE,而是交叉熵,而且最后一层的激活不应该是线性的。
为了计算精度,我们可以使用model.evaluate
函数