ValueError: Unable to coerce to DataFrame, shape must be (407, 173): given (173, 407)
请问该如何处理?
# 定义多层感知机类
class MLP:
def __init__(self, input_size, hidden_size, output_size, learning_rate, reg_lambda):
self.input_size = input_size
self.hidden_size = hidden_size
self.output_size = output_size
self.learning_rate = learning_rate
self.reg_lambda = reg_lambda
# 初始化权重和偏差
self.W1 = np.random.randn(hidden_size, input_size) / np.sqrt(input_size)
self.b1 = np.zeros((hidden_size, 1))
self.W2 = np.random.randn(output_size, hidden_size) / np.sqrt(hidden_size)
self.b2 = np.zeros((output_size, 1))
# 前向传播
def forward(self, X):
self.z1 = np.dot(self.W1, X) + self.b1
self.a1 = sigmoid(self.z1)
self.z2 = np.dot(self.W2, self.a1) + self.b2
self.a2 = sigmoid(self.z2)
return self.a2
# 反向传播
def backward(self, X, y, output):
delta3 = output - y
dW2 = np.dot(delta3, self.a1.T) + self.reg_lambda * self.W2
db2 = np.sum(delta3, axis=1, keepdims=True)
delta2 = np.dot(self.W2.T, delta3) * sigmoid(self.z1) * (1 - sigmoid(self.z1))
dW1 = np.dot(delta2, X.T) + self.reg_lambda * self.W1
db1 = np.sum(delta2, axis=1, keepdims=True)
return dW1, db1, dW2, db2
# 训练模型
def train(self, X_train, y_train, X_test, y_test, epochs):
for i in range(epochs):
# 前向传播
output = self.forward(X_train.T)
# 计算损失函数
loss = np.mean((output - y_train) ** 2) + (self.reg_lambda / 2) * (np.sum(self.W1 ** 2) + np.sum(self.W2 ** 2))
# 反向传播
dW1, db1, dW2, db2 = self.backward(X_train, y_train, output)
# 更新权重和偏差
self.W1 -= self.learning_rate * dW1
self.b1 -= self.learning_rate * db1
self.W2 -= self.learning_rate * dW2
self.b2 -= self.learning_rate * db2
你的df的行列放反了,行当成了列,列当成了行