Python Sklearn与Keras的比较——Keras的小误差

Python Sklearn与Keras的比较——Keras的小误差,python,python-3.x,machine-learning,keras,Python,Python 3.x,Machine Learning,Keras,我正在测试下面的代码 #%matplotlib inline import seaborn as sns import pandas as pd import numpy as np from sklearn.model_selection import cross_validate from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegressionCV

我正在测试下面的代码

#%matplotlib inline
import seaborn as sns
import pandas as pd
import numpy as np
from sklearn.model_selection import cross_validate
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegressionCV


iris = sns.load_dataset("iris")
iris.head()

sns.pairplot(iris, hue='species')

X = iris.values[:, 0:4]
y = iris.values[:, 4]

train_X, test_X, train_y, test_y = train_test_split(X, y, train_size=0.5, random_state=0)

lr = LogisticRegressionCV()
lr.fit(train_X, train_y)

pred_y = lr.predict(test_X)
print("Test fraction correct (Accuracy) = {:.2f}".format(lr.score(test_X, test_y)))
# Test fraction correct (Accuracy) = 0.93


import keras
from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.utils import np_utils


train_y_ohe = pd.get_dummies(train_y)
test_y_ohe = pd.get_dummies(test_y)


model = Sequential()
model.add(Dense(16, input_shape=(4,)))
model.add(Activation('sigmoid'))
model.add(Dense(3))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')


loss, accuracy = model.evaluate(test_X, test_y_ohe, show_accuracy=True, verbose=0)
print("Test fraction correct (Accuracy) = {:.2f}".format(accuracy))
在下一行代码之前,一切正常

当我尝试运行此命令时:

loss, accuracy = model.evaluate(test_X, test_y_ohe, show_accuracy=True, verbose=0)
我得到这个错误:

TypeError: evaluate() got an unexpected keyword argument 'show_accuracy'
我做了一些研究,发现“show_accurity=True”可能在不久前被低估了。现在还有别的办法吗?我如何评估和打印模型的准确性

我在这里找到了代码示例:


新版keras中不推荐使用
show\u accurity
参数,请从
model.evaluate()
中删除此参数,并在
model.compile()中使用
metrics=['accurity']


啊!我明白我做错了什么!现在有点道理了。我现在看到的唯一问题是Keras的准确率是28%左右。我期望神经网络模型的准确率在98%或99%左右。你知道为什么准确率如此之低吗?这是违反直觉的。你在评估模型之前忘了拟合它,我已经更新了我的答案,用拟合它获得97%的准确度EAP,是的。我现在看到了。我刚把你的改变纳入我的剧本。一切都准备好了!再次感谢!!
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# fit model
train_y_ohe = pd.get_dummies(train_y)
model.fit(train_X, train_y_ohe,epochs=1000,batch_size=20)

loss, accuracy = model.evaluate(test_X, test_y_ohe, verbose=0)
print("Test fraction correct (Accuracy) = {:.2f}".format(accuracy))

#Test fraction correct (Accuracy) = 0.97