TypeError:计算RMSE时,只能将整数标量数组转换为标量索引

2024-04-27 04:42:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着这样做:

for i in cols:
    print('rmse value for', i, 'is : ', np.sqrt(mean_squared_error(pred[i], valid[i])))

数据帧如下所示:

pred

           Var_1          Var_2          Var_3     %Variation
0          33397.7        784.753        1397.58    24.9725
1            33554        815.964        1423.88    24.3266
2          33573.1        837.888        1440.29     24.345
3          33497.4        852.705        1449.21    24.3451
4          33353.9        861.768        1452.31    24.3616
5            33165        866.294        1451.02    24.3878
6          32948.9        867.329        1446.53    24.4203
7          32719.8        865.761        1439.85    24.4563
8          32488.9        862.331        1431.79    24.4937
9          32264.1        857.645        1422.97    24.5308
10         32051.4        852.195         1413.9    24.5664
11         31854.7        846.365        1404.94    24.5997
12         31676.2        840.453        1396.38    24.6302
13         31517.2         834.68        1388.39    24.6575
14         31377.8        829.205         1381.1    24.6815
15         31257.5        824.134        1374.56    24.7024
16         31155.3        819.533        1368.81    24.7201
17         31069.8        815.433        1363.82     24.735
18         30999.5         811.84        1359.57    24.7473

有效

Var_1             Var_2          Var_3  %Variation                                                            
33000             672            1291   18.785056
36176             744            1357   12.802751
36187             762            1361   28.811764
39346             834            1493   36.818050
38998             793            1419   40.806172
42948             877            1514   14.824201
43359             910            1517   14.868140
43651             970            1618    6.852622
45644             979            1556    6.886780
45000             932            1557   18.831062
45851            1080            1590   44.930561
45496            1027            1581   18.911174
46262            1052            1618   18.915043
46385            1053            1619   12.895083
47091            1127            1609   22.930256
47172            1206            1657   44.968327
47101            1142            1635   12.965718
47426            1237            1645   33.004087
47853            1275            1708    4.976702

运行循环时出现以下错误:

TypeError:只有整数标量数组才能转换为标量索引

有人能帮我解决这个问题吗

编辑

valid是从以下数据中获取的验证集:

valid = data[int(0.8*(len(data))):]

pred是根据以下预测生成的数据帧:

pred = pd.DataFrame(index=range(0,len(prediction)),columns=[cols])
for j in range(0,4):
    for i in range(0, len(prediction)):
       pred.iloc[i][j] = prediction[i][j]

pred和valid的数据类型如下:

pred.dtypes
Out[197]: 
Var_1    object
Var_2     object
Var_3     object
%Variation object
dtype: object

valid.dtypes
Out[201]: 
Var_1      int64
Var_2       int64
Var_3       int64
%Variation         float64
dtype: object

谢谢


Tags: 数据infordatalenobjectvarrange