考虑到特定数量的行和列,我试图预测模型训练所需的时间(sklearn的线性回归)。我创建了其他功能,例如获取行数和列数的日志和方块。
我已粘贴数据here。如您所见,数据集没有缺失值或NaN' s。
我尝试使用以下代码使用lm
函数在R中运行线性回归模型 -
library(data.table)
df = fread(linreg_df_edited.csv)
lrmodel <- lm(time ~ rows + columns + volume + rows_log + columns_log + volume_log + row_sq + col_sq, data = df)
但是当我使用summary(lrmodel)
请求模型摘要时,我收到以下错误
Error in quantile.default(resid) :
missing values and NaN's not allowed if 'na.rm' is FALSE
我的数据集没有任何缺失值,但在设置na.action=na.omit
lrmodel <- lm(time ~ rows + columns + volume + rows_log + columns_log + volume_log + row_sq + col_sq, df, na.action=na.omit)
我仍然得到同样的错误。我无法解决这个问题。我想也许一列被读作字符变量。但事实并非如此。
知道为什么会这样吗?
答案 0 :(得分:1)
请勿尝试立即对所有转换进行建模。你的电话是:
model <- lm(time ~ rows + columns + volume + rows_log + columns_log + volume_log + row_sq + col_sq, data = df)
相反,请执行:
model_lin <- lm(time ~ rows + columns + volume, data = df)
model_log <- lm(time ~ rows_log + columns_log + volume_log, data = df)
model_sq <- lm(time ~ row_sq + col_sq, data = df)
然后你会看到正方形是问题所在。他们正在生成NaN
值。