比较numpy数组和Pandas数据框中的值

时间:2019-06-27 16:30:46

标签: pandas numpy dataframe

我有一个numpy.ndarray类型的数组和pandas DataFrame,需要一种将每个值相互比较的方法。

以下是我尝试执行的方法之一。我还使用了pd.get(labels)来提取值,并返回了Noney_test是熊猫的DataFrame,而preds是预测的一堆数组。

试图将它们都转换为列表以及numpy数组以进行比较:

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy',
              optimizer='adam',metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5, batch_size=2000)

preds = model.predict(x_test)
preds[preds>=0.5] = 1
preds[preds<0.5] = 0
print(type(preds))
print(y_test.get('labels'))
total = 0
for i in range(len(preds)):
    if int(preds[i]) == y_test[i]:
        total = total + 1

这就是我得到的-TypeError:“ NoneType”对象不可调用-KeyError:0

2 个答案:

答案 0 :(得分:0)

因此,如果y_test是一个数据帧,那么您只需询问以下值即可获得一个numpy数组:

y_test_array = y_test["labels"].values

然后将其打印出来,以了解相等的项数

sum(y_test_array == preds)# number of items with same value
sum(y_test_array == preds)/len(preds)# %

希望是你的要求。

答案 1 :(得分:0)

我猜您想找到模型的性能,所以只使用.evaluate()方法,我假设您在这里使用的是keras模型。

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy',
              optimizer='adam',metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5, batch_size=2000)

score= model.evaluate(x_test,y_test)

希望这会有所帮助!