使用scikit-learn(sklearn),如何处理线性回归的缺失数据?
Using scikit-learn (sklearn), how to handle missing data for linear regression?
我试过了,但无法让它为我的数据工作:
我的数据由 2 个 DataFrame 组成。 DataFrame_1.shape = (40,5000)
和 DataFrame_2.shape = (40,74)
。我正在尝试进行某种类型的线性回归,但 DataFrame_2
包含 NaN
缺失数据值。当我 DataFrame_2.dropna(how="any")
时,形状下降到 (2,74)
。
sklearn 中是否有可以处理 NaN
值的线性回归算法?
我在 sklearn.datasets
的 load_boston
之后对其进行建模,其中 X,y = boston.data, boston.target = (506,13),(506,)
这是我的简化代码:
X = DataFrame_1
for col in DataFrame_2.columns:
y = DataFrame_2[col]
model = LinearRegression()
model.fit(X,y)
#ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
我做了上面的格式来得到匹配矩阵的形状
如果发布 DataFrame_2
有帮助,请在下方评论,我会添加。
y
中的空值可以用imputation来填充。在 scikit-learn
中,这是通过以下代码片段完成的:
from sklearn.preprocessing import Imputer
imputer = Imputer()
y_imputed = imputer.fit_transform(y)
否则,您可能希望使用 74 列的子集作为预测变量来构建模型,也许您的某些列包含较少的空值?
如果您的变量是 DataFrame,您可以使用 fillna
。在这里,我用该列的平均值替换了缺失的数据。
df.fillna(df.mean(), inplace=True)
我试过了,但无法让它为我的数据工作:
我的数据由 2 个 DataFrame 组成。 DataFrame_1.shape = (40,5000)
和 DataFrame_2.shape = (40,74)
。我正在尝试进行某种类型的线性回归,但 DataFrame_2
包含 NaN
缺失数据值。当我 DataFrame_2.dropna(how="any")
时,形状下降到 (2,74)
。
sklearn 中是否有可以处理 NaN
值的线性回归算法?
我在 sklearn.datasets
的 load_boston
之后对其进行建模,其中 X,y = boston.data, boston.target = (506,13),(506,)
这是我的简化代码:
X = DataFrame_1
for col in DataFrame_2.columns:
y = DataFrame_2[col]
model = LinearRegression()
model.fit(X,y)
#ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
我做了上面的格式来得到匹配矩阵的形状
如果发布 DataFrame_2
有帮助,请在下方评论,我会添加。
y
中的空值可以用imputation来填充。在 scikit-learn
中,这是通过以下代码片段完成的:
from sklearn.preprocessing import Imputer
imputer = Imputer()
y_imputed = imputer.fit_transform(y)
否则,您可能希望使用 74 列的子集作为预测变量来构建模型,也许您的某些列包含较少的空值?
如果您的变量是 DataFrame,您可以使用 fillna
。在这里,我用该列的平均值替换了缺失的数据。
df.fillna(df.mean(), inplace=True)