我有以下代码:
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中的函数。
答案 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。