【发布时间】:2019-05-05 18:59:04
【问题描述】:
我有一个包含大量缺失值的 CSV 文件。我正在尝试使用 'fancyimpute' 包使用 'KNN()' 方法估算缺失值。
包含 CSV 文件的 pandas DataFrame 有 7 个属性/列,而第 8 个属性是“时间”,但用作 DataFrame 的索引。
数据形状
# (83070, 7)
data.isnull().sum().sum()
# 59926
data.isnull().sum()
'''
A 171
B 0
C 0
D 47441
E 170
F 12144
G 0
dtype: int64
'''
当我使用以下代码进行数据插补时-
filled_data_na = KNN(k = 3).fit_transform(data)
它给了我以下错误-
MemoryError Traceback(最近调用 最后)在 ----> 1 填充_na = KNN(k = 3).fit_transform(data_date_idx)
~/.local/lib/python3.6/site-packages/fancyimpute/solver.py 在 fit_transform(自我,X,Y) 187型(X_填充))) 188 --> 189 X_result = self.solve(X_filled, missing_mask) 190 如果不是实例(X_result,np.ndarray): 191 引发类型错误(
~/.local/lib/python3.6/site-packages/fancyimpute/knn.py in solve(self, X,缺失掩码) 102 k=自我.k, 第103章 --> 104 print_interval=self.print_interval) 105 106 failed_to_impute = np.isnan(X_imputed)
~/.local/lib/python3.6/site-packages/knnimpute/few_observed_entries.py 在 knn_impute_few_observed(X,missing_mask,k,详细, 打印间隔) 49 X_column_major = X.copy(order="F") 50 X_row_major, D, Effective_infinity = \ ---> 51 knn_initialize(X,missing_mask,详细=详细) 52 # 去掉无穷大,用一个非常大的数替换它们 53 D_sorted = np.argsort(D,axis=1)
~/.local/lib/python3.6/site-packages/knnimpute/common.py 在 knn_initialize(X,missing_mask,详细,min_dist, 最大距离乘数) 37 # 将 NaN 放回距离函数的数据矩阵中 38 X_row_major [missing_mask] = np.nan ---> 39 D = all_pairs_normalized_distances(X_row_major) 40 D_finite_flat = D[np.isfinite(D)] 41 如果 len(D_finite_flat) > 0:
~/.local/lib/python3.6/site-packages/knnimpute/normalized_distance.py 在 all_pairs_normalized_distances(X) 36 37 # 样本间均方差矩阵 ---> 38 D = np.ones((n_rows, n_rows), dtype="float32", order="C") * np.inf 39 40 # 我们可以廉价地确定两行共享的列数
~/.local/lib/python3.6/site-packages/numpy/core/numeric.py 那些(形状,dtype,顺序) 221 第222章 --> 223 a = 空(形状、数据类型、顺序) 第224章 第225章
内存错误:
关于出了什么问题有什么想法吗?
谢谢!
【问题讨论】:
标签: python python-3.x pandas numpy