#遇到的问题
这个编码是哪里出了问题啊
谢谢
#部分代码
# In[] 加载数据
xlsfile=pd.read_excel('数据集/浙江某地区/bdata1.xls').iloc[0:,1:]# 第一列的日期不作为特征之一
# 数据共97天,每天的数据包括平均温度、最高温度、最低温度、相对湿度、星期类型、与24个时刻的负荷,共29个特征
data=np.array(xlsfile)
# 用头一天的29个特征与预测当天的前5个特征作为输入,预测当天24个时刻的负荷作为输出
in_=np.hstack((data[1:,0:5],data[0:-1,:]))
out_=data[1:,5:]
#划分数据,一共96个样本 选择95个样本作为训练集 1个测试集
n=range(in_.shape[0])# 前95个样本为训练集 最后一天为测试集
m=95
train_data=in_[n[0:m],:]
train_label=out_[n[0:m]]
test_data=in_[n[m:],:]
test_label=out_[n[m:]]
# 归一化
#ss_X = StandardScaler().fit(train_data)
#ss_Y = StandardScaler().fit(train_label)
ss_X=MinMaxScaler(feature_range=(0,1)).fit(train_data)
ss_Y=MinMaxScaler(feature_range=(0,1)).fit(train_label)
train_data = ss_X.transform(train_data).reshape(train_data.shape[0],1,-1)
train_label = ss_Y.transform(train_label)
test_data = ss_X.transform(test_data).reshape(test_data.shape[0],1,-1)
test_label = ss_Y.transform(test_label)
# In[]定义超参数
num_epochs = 100#迭代次数
batch_size = 16# batchsize
lr = 0.001# 学习率
hidden1 = 20#lstm隐含层神经元
hidden2 = 20#全连接层隐含层神经元
sequence,feature=train_data.shape[-2:]
output_node=train_label.shape[1]
model=lstm_model(sequence,feature,hidden1,hidden2,output_node)
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=lr), loss='mse')
train_again=False #为False的时候就直接加载训练好的模型进行测试
#训练模型
if train_again:
history=model.fit(train_data,train_label, epochs=num_epochs,validation_data=(test_data,test_label),batch_size=batch_size, verbose=1)
model.save('model/lstm_model.h5')
# 画loss曲线
plt.figure()
plt.ylabel('MSE')
plt.xlabel('Epoch')
plt.plot( history.history['loss'], label='training')
plt.plot( history.history['val_loss'], label='testing')
plt.title('loss curve')
plt.legend()
else:#加载模型
model = tf.keras.models.load_model('model/lstm_model.h5')
test_pred=model.predict(test_data)
# 对测试结果进行反归一化
test_label1 = ss_Y.inverse_transform(test_label).reshape(-1,)
test_pred1 = ss_Y.inverse_transform(test_pred).reshape(-1,)
np.savez('结果/lstm_result.npz',true=test_label1,pred=test_pred1)
解码错误,你指定一下打开excel时候的encoding='gbk'试试
【以下回答由 GPT 生成】
问题描述的是使用'UTF-8'编解码器无法解码无效的起始字节的错误。这个错误通常发生在读取文件时,可能是文件编码不符合'UTF-8'编码导致的。
解决方法: 1. 确认文件编码类型:首先需要确认Excel文件的编码类型,可以使用第三方库chardet来检测文件的编码类型。以下是使用chardet库来检测文件编码类型的示例代码:
import chardet
with open('数据集/浙江某地区/bdata1.xls', 'rb') as f:
rawdata = f.read()
result = chardet.detect(rawdata)
print(result['encoding'])
xlsfile = pd.read_excel('数据集/浙江某地区/bdata1.xls', encoding=result['encoding']).iloc[0:, 1:]
data = np.array(xlsfile)
def convert_encoding(data):
for i in range(data.shape[0]):
for j in range(data.shape[1]):
if isinstance(data[i, j], str):
data[i, j] = data[i, j].encode('latin1').decode('utf-8', 'ignore')
return data
data = convert_encoding(data)
以上是一种可能的解决方案,根据具体情况可能需要根据错误的提示信息进一步调整代码来解决编码问题。