np.append(np.array(y_score), tf.sigmoid(preds).numpy(), axis=0)什么意思
时间: 2023-12-03 15:05:18 浏览: 32
这段代码的意思是将 np.array(y_score) 和 tf.sigmoid(preds).numpy() 沿着 axis=0 的方向(即竖直方向)进行拼接,并返回拼接结果。其中 np.array(y_score) 和 tf.sigmoid(preds).numpy() 都是 numpy 数组。np.append() 是 numpy 库中的函数,用于进行数组拼接。
相关问题
y_preds.append(preds.numpy())和 y_preds.append(tf.sigmoid(preds).numpy().argmax(axis=1).tolist())的区别
y_preds.append(preds.numpy())将一个TensorFlow张量对象的数值转化成NumPy 数组格式,而y_preds.append(tf.sigmoid(preds).numpy().argmax(axis=1).tolist())则使用Sigmoid函数对张量中的数值进行操作,将其转化成概率值并取得概率最大的标签,然后将标签转换为列表格式。两者的输出结果不同,前者输出张量对象的数值,后者输出一个标签列表。
修正以下代码ntr, u, u0, d, jm, p, fpc = fuzz.cluster.cmeans(train_X.T, 3, 2, error=0.005, maxiter=1000, init=None) train_u, _, _, _, _, _, = fuzz.cluster.cmeans_predict(train_X.T, cntr, 2, error=0.005, maxiter=1000) train_predictions = np.argmax(train_u, axis=0) train_accuracy = accuracy_score(train_y, train_predictions) print(train_y) print(train_predictions) train_y = np.array(train_y) train_u = np.array(train_u) train_auc = roc_auc_score(train_y, train_u, multi_class='ovo') loss = np.sum((train_u - train_y) ** 2) loss_curve.append(loss) accuracy_curve.append(train_accuracy) auc_curve.append(train_auc)
修正后的代码如下:
```
cntr, u, u0, d, jm, p, fpc = fuzz.cluster.cmeans(train_X.T, 3, 2, error=0.005, maxiter=1000, init=None)
train_u, _, _, _, _, _, = fuzz.cluster.cmeans_predict(train_X.T, cntr, 2, error=0.005, maxiter=1000)
train_predictions = np.argmax(train_u, axis=0)
train_accuracy = accuracy_score(train_y, train_predictions)
print(train_y)
print(train_predictions)
train_y = np.array(train_y)
train_u = np.array(train_u)
train_auc = roc_auc_score(train_y, train_u.T, multi_class='ovo')
loss = np.sum((train_u - train_y.reshape(-1,1)) ** 2)
loss_curve.append(loss)
accuracy_curve.append(train_accuracy)
auc_curve.append(train_auc)
```
主要修改了两处错误:
1. 在计算 ROC AUC 时,需要将 `train_u` 转置,而且 `train_y` 和 `train_u` 都应该是二维数组。
2. 在计算 loss 时,需要将 `train_y` 改为二维数组,并且使用 `reshape` 方法将其转换为列向量。同时,因为两个数组的形状不同,需要使用广播机制进行计算。