You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

波士顿房价预测报错:'DataFrame' object has no attribute 'flush'求解

解决AttributeError: 'DataFrame' object has no attribute 'flush'的思路

错误根源

np.fromfile()的设计用途是读取文件路径字符串或已打开的文件对象中的二进制/简单文本数据,但你传入的是pd.read_csv()返回的DataFrame对象。np.fromfile()内部会把传入的对象当作文件来处理,尝试调用文件对象的flush()方法,而DataFrame没有这个属性,因此触发报错。

解决步骤

  • 直接从DataFrame提取数值数组:pd.read_csv()已经完成了csv文件的解析工作,不需要再用np.fromfile()重复处理。可以通过DataFrame.to_numpy()或DataFrame.values将指定列转换为numpy数组。
  • 筛选目标特征:先从DataFrame中选择你需要的['RM', 'LSTAT', 'PTRATIO', 'MEDV']列,再转成数组,避免引入无关数据。

修正后的代码片段

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

def load_data():
    datafile = pd.read_csv("housing.csv", sep=',')
    # 替换错误的np.fromfile行,直接提取目标特征的numpy数组
    feature_names = ['RM', 'LSTAT', 'PTRATIO', 'MEDV']
    data = datafile[feature_names].to_numpy()

    ratio = 0.8
    offset = int(data.shape[0] * ratio)
    training = data[:offset]

    maximums, minimums, avge = training.max(axis=0), training.min(axis=0), training.sum(axis=0) / training.shape[0]

额外说明

如果坚持想用np.fromfile(),只能传入文件路径字符串,但这种方式不适合读取csv格式文件——因为np.fromfile()无法处理csv的分隔符和表头,会把整个文件内容当成连续的字符流读取,后续无法正确解析成结构化数据。因此用pandas加载后转numpy数组是更合理的方案。

内容的提问来源于stack exchange,提问作者Arlen_SKywalker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:15:54