从scipy稀疏矩阵中移除NaN

时间:2017-10-27 08:36:12

标签: python scipy scikit-learn

我有以下代码:

input_data = pd.read_csv('file_name.tsv', sep='\t')
data = sparse.csr_matrix(data.values)
model = TruncatedSVD(n_components=2)
model.fit(data)

现在,TruncatedSVD确实从scipy中获取稀疏矩阵,但它不需要NaN。我期望crs_matrix函数剥离NaN,但它没有,我找不到从我的scipy矩阵中剥离这些NaN的方法。

这样做有好办法吗?我找不到scipy中的函数。

2 个答案:

答案 0 :(得分:0)

我最终将NaN设置为零,这不是最佳解决方案,但我认为在这种情况下确实没有令人满意的方法来计算缺失值。

答案 1 :(得分:0)

有一些方法可以解决这个问题。其中一个你选择 - 将NaN设置为零,其他方式可能是将它们设置为等于数据的平均值(列,让我们说)。

使用scikit imputer

可以轻松解决这个问题
from sklearn.reprocessing import Imputer

data_imputer = Imputer(missing_values='NaN, strategy='mean', axis=0)
# fit the imputer - suppose missing data is in the 0th column
data_imputer = data_imputer.fit(data[:, 0])
# transform the data
data[:, 0] = data_imputer.transform(X[:, 0])

请注意,这是一个非常简单的示例,可以进行大量改进,有关详细信息,请参阅scikit-learn doc documentation about this issue