我正在尝试使用TensorFlow创建一个机器学习模型,使用的数据集来自https://www.kaggle.com/imnikhilanand/heart-attack-prediction
CSV文件如下所示(请注意,我已经将?
替换为.
,这样使用pandas解析时会更容易)
age,sex,cp,trestbps,chol,fbs,restecg,thalach,exang,oldpeak,slope,ca,thal,num 28,1,2,130,132,0,2,185,0,0,.,.,.,029,1,2,120,243,0,0,160,0,0,.,.,.,029,1,2,140,.,0,0,170,0,0,.,.,.,0
当我使用pandas解析这个文件时,.
在pandas的数据框中被读取为NaN
将此数据输入模型时出现了问题,因为任何与NaN
进行的操作结果都会是NaN
。
我的问题是数据中存在不可用数据,有没有办法将这种数据输入模型并获得结果。
我找到的一种解决方案是用某个数字(如0)替换这些值,但这样做会破坏模型的准确性,我希望避免这种做法。
回答:
查看数据,并意识到scope
、ca
和thal
这三个属性的值大部分是缺失的,你最应该做的事情是将这些属性(列)完全从你的模型中移除。
机器学习中有一个(庞大…)的领域是关于数据填补的,但在这里几乎不适用——它通常适用于只有一些(即少数)值缺失的情况,而这里的情况远非如此。
我找到的一种解决方案是用某个数字(如0)替换这些值,但这样做会破坏模型的准确性,我希望避免这种做法。
这可以理解;如果你坚持要在这个方向上进行实验,不妨尝试用相应属性的均值(或中位数)来替换缺失的值(这是最简单的数据填补方法之一)。
如果你打算在这里使用深度学习模型,请注意仅有294个样本的数据集对于这种应用来说相当小…