10折交叉验证后读取CSV分类报告无法获取f1-score的问题
解决DataFrame无法访问
f1-score列的问题 错误原因
代码里的df.f1-score会被Python解析成df.f1 - score——也就是试图访问DataFrame的f1属性,再减去一个叫score的变量,但你的DataFrame里根本没有f1列,因此触发AttributeError。而accuracy、precision这类列名无特殊字符,用.访问是合法的。
修复方法
直接用方括号包裹列名访问带连字符的列,这是Pandas处理特殊列名的标准方式:
for i in _all_files: print(i) df = pd.read_csv(i) # 替换为方括号访问方式 saved_column = df['f1-score'] a = saved_column[5] li.append(a) # 计算10折交叉验证的f1-score均值 mean_f1 = sum(li) / len(li) print(f"10折交叉验证的f1-score均值:{mean_f1}")
可选方案(重命名列)
如果习惯用.访问列,可以先将f1-score重命名为无特殊字符的名称,比如f1_score:
for i in _all_files: print(i) df = pd.read_csv(i) # 重命名列 df.rename(columns={'f1-score': 'f1_score'}, inplace=True) # 现在可以用点号访问 saved_column = df.f1_score a = saved_column[5] li.append(a)
内容的提问来源于stack exchange,提问作者atish ojha
相关产品推荐
相关产品推荐

