arr0 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]) arr1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]) arr2 = np.array(input("请输入连续24个月的车辆销售数据,元素之间用空格隔开:").split(), dtype=float) arr3 = np.array(input("请输入连续24个月的配件销售数据,元素之间用空格隔开:").split(), dtype=float) data_array = np.vstack((arr0, arr1, arr2, arr3)) data_matrix = data_array.T data = pd.DataFrame(data_matrix, columns=['num', 'month', 'car sales', 'sales']) data = data[['month', 'car sales', 'sales']] train_data, test_data = train_test_split(data, test_size=0.3) scaler = MinMaxScaler(feature_range=(0, 1)) data_scaled = scaler.fit_transform(data) train_size = int(len(data_scaled) * 0.7) test_size = len(data_scaled) - train_size train, test = data_scaled[0:train_size,:], data_scaled[train_size:len(data_scaled),:] def create_dataset(dataset, look_back=1): X, Y = [], [] for i in range(len(dataset)-look_back): X.append(dataset[i:(i+look_back), :]) Y.append(dataset[i+look_back, :]) return np.array(X), np.array(Y) look_back = 3 X_train, Y_train = create_dataset(train, look_back) X_test, Y_test = create_dataset(test, look_back) model = Sequential() model.add(LSTM(4, input_shape=(look_back, 3))) model.add(Dense(3)) model.compile(loss='mean_squared_error', optimizer='adam') model.fit(X_train, Y_train, epochs=100, batch_size=1, verbose=0) train_predict = model.predict(X_train) test_predict = model.predict(X_test) train_predict = scaler.inverse_transform(train_predict) Y_train = scaler.inverse_transform(Y_train) test_predict = scaler.inverse_transform(test_predict) Y_test = scaler.inverse_transform(Y_test) last_month = data_scaled[-look_back:] last_month = last_month.reshape((1, look_back, 3))#1,12,3 next_month = model.predict(last_month) next_month = scaler.inverse_transform(next_month) print('下个月的预测结果是:', round(next_month[0][2])),如何将以下代码稍作修改插入到上面的最后,def comput_acc(real,predict,level): num_error=0 for i in range(len(real)): if abs(real[i]-predict[i])/real[i]>level: num_error+=1 return 1-num_error/len(real) a=np.array(test_data[label]) real_y=a real_predict=test_predict print("置信水平:{},预测准确率:{}".format(0.2,round(comput_acc(real_y,real_predict,0.2)* 100,2)),"%")
时间: 2023-12-10 17:39:20 浏览: 113
你可以在代码的末尾添加以下内容:
```
label = 'sales'
a = np.array(test_data[label])
real_y = a
real_predict = test_predict[:, 2]
print("置信水平:{},预测准确率:{}".format(0.2, round(comput_acc(real_y, real_predict, 0.2) * 100, 2)), "%")
```
这段代码是在计算预测的准确率,其中`label`是指测试数据中需要预测的列的名称,这里默认为`'sales'`。`real_y`和`real_predict`分别是真实值和预测值,通过调用`comput_acc`函数计算预测的准确率。如果需要计算其他置信水平的预测准确率,只需要修改0.2即可。
相关问题
在python中,arr1=np.array([[0,1,2],[2,3,3]]) arr2=np.array([1,2,7 arr=arr.reshape(3,2) arr.shape 输出结果为
### 回答1:
在给出的代码中,第二个数组 arr2 的末尾缺少一个右括号,为了让代码能够运行,需要在 arr2 的末尾添加一个右括号。修正后的代码如下:
``` python
import numpy as np
arr1 = np.array([[0,1,2],[2,3,3]])
arr2 = np.array([1,2,7])
arr = arr1.reshape(3,2)
print(arr.shape)
```
运行上述代码后,输出结果为:
```
(3, 2)
```
这表示 `arr` 现在是一个 3 行 2 列的数组,即有 3 个子数组,每个子数组中有 2 个元素。这是由于原先的 `arr1` 是一个 2 行 3 列的数组,通过 `reshape` 函数转换为了一个 3 行 2 列的数组。
### 回答2:
arr1=np.array([[0,1,2],[2,3,3]])
arr2=np.array([1,2,7])
arr=arr.reshape(3,2)
arr.shape
输出结果为(3, 2)。
首先,我们创建了一个二维数组arr1,其中包含两个列表[0,1,2]和[2,3,3]。然后,我们创建了一个一维数组arr2,包含元素1、2和7。
接下来,我们使用reshape函数将arr数组重新排列为一个3行2列的数组。reshape函数可以改变数组的形状,但是要确保新形状的元素数量与原数组相同。
最后,我们使用arr.shape来获取数组的形状。shape属性返回一个元组,表示数组的维度。在这个例子中,输出结果为(3, 2),表示数组有3行2列。
### 回答3:
输出结果为(3, 2)。
arr_x = np.array([1, 5, 7]) arr_y = np.array([2, 6, 8]) arr_con = np.array([True, False, True]) arr_res=np.where( , , ) 补齐参数,使得结果arr_res=[1,6,8]
arr_x = np.array([1, 5, 7])
arr_y = np.array([2, 6, 8])
arr_con = np.array([True, False, True])
arr_res=np.where(arr_con, arr_x, arr_y)
# 结果为 [1, 6, 8]
阅读全文