python - 由于 CSV 文件中的缺失值,无法拟合线性多元回归模型
问题描述
我正在尝试使用多个变量执行线性回归模型。我有一个带有属性的 CSV 文件:'area', 'bedrooms', 'age', 'price'
,但卧室有一个缺失值(即NaN
)。我想通过给出其他三个属性来拟合模型并预测价格,但由于一个缺失值,我看到了错误input contains nan infinity or a value too large for dtype('float64')
。我找到了中位数并填写了缺失值,但在 CSV 文件中,它没有被替换并在拟合模型时给出错误。CSV 文件如下:
我使用了以下代码:
df=pd.read_csv(r"C:\Users\rohit\Desktop\homeprices4.csv")
df
m=math.floor(df.bedrooms.median()) // m is median which I have calculated
m
df.bedrooms.fillna(m)
reg=linear_model.LinearRegression()
reg.fit(df[['area','bedrooms','age']],df.price)
在这一行之后,我收到了错误,因为卧室有一个缺失值。bedrooms
如果我从这一行中删除并仅使用area
andage
进行预测,那么没有错误,我得到正确的结果。
所以我的问题是:如何用 CSV 文件中的中位数替换缺失值?代码是什么?为什么我收到错误消息?
查看错误的屏幕截图:
解决方案
您的帖子中有两个问题:
- 您的更改不会保存到数据框中,因为除非传入参数,
fillna
否则会返回副本。inplace=True
这就是为什么您仍然会收到错误消息的原因。 - 要将更改保存到 CSV,您需要使用
DataFrame.to_csv(...)
,但鉴于我之前的观点,您可能不需要它。
我会通过数据清理步骤丰富您的管道并保存清理后的数据。我会做 2 个单独的脚本。
数据清洗:
path_raw_data= r"C:\Users\rohit\Desktop\homeprices4.csv"
path_clean_data= r"C:\Users\rohit\Desktop\homeprices4_clean.csv"
df=pd.read_csv(path_raw_data)
m=math.floor(df.bedrooms.median()) // m is median which I have calculated
df.bedrooms.fillna(m, inplace=True)
df.to_csv(path_clean_data)
线性回归:
path_clean_data= r"C:\Users\rohit\Desktop\homeprices4_clean.csv"
df=pd.read_csv(path_clean_data)
reg=linear_model.LinearRegression()
reg.fit(df[['area','bedrooms','age']],df.price)
推荐阅读
- html - 如何从背景大小覆盖到 105% 105% 的 CSS 过渡?
- reactjs - React:使用 React.createElement 时的 appendChild 替代方案
- javascript - 如何在以下代码段中从另一个类导入的自定义 JSX 标记中换行:
- xaml - 如何在 App.xaml 静态资源中使用嵌套字符串...?
- html - 新的基于 Chromium 的 Edge 的垂直高度是否比 Chrome 短?标题一半在 Edge 中消失了,但 Chrome 可以吗?
- java - MyClass 类型的 getMethod() 的类型是 String,这与描述符的返回类型不兼容:U
- php - php7.3 或 apache2.4 是否可以记录每个文件更改/创建,以便轻松发现网站漏洞?
- java - Spring JPA-我得到错误,即使我已经坚持了对象也没有坚持
- android - 如何在 Room DB 中处理多个数据库版本
- multithreading - 有没有办法在 Rust 中生成具有指定生命周期的线程?