我有以下代码:
input_data = pd.read_csv('file_name.tsv', sep='t')
data = sparse.csr_matrix(data.values)
model = TruncatedSVD(n_components=2)
model.fit(data)
现在TruncatedVD确实从scipy中获取稀疏矩阵,但它不使用NaN。我希望crs_matrix函数能去除NaN,但它没有,我也找不到从我的scipy矩阵中去除这些NaN的方法。
有什么好方法可以做到这一点吗?我在scipy中找不到函数。
我最终将NaNs设置为零,这不是最佳解决方案,但我认为在这种情况下,没有令人满意的方法来估算缺失的值。
对此有一些方法。其中一种方法是将NaN设置为零,另一种方法可能是将其设置为等于数据(比如列)的平均值。
解决这个问题的一个简单方法是使用scikit估算
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学习文档中有关此问题的内容。