2017-10-27 16 views
-1

私は、次のコードを持っている:scipyのダウンロード疎行列からのNaNの除去

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

あなただけゼロに 'np.nan'のインスタンスを設定したいですか? –

+1

NaNを削除することはできません。置き換えることはできます。あなたは同じコンテキストでスパース行列を使用しているので、私は、これは[XY-問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)であると考えています。 * NaNを削除する理由を教えてください。 「TruncatedSVDはそれらを好きではないため、理由は十分ではありません。あなたはあなたのデータにNaN *が何を意味するのかを知る必要があります。さもなければそれらを正しく扱う方法を言う方法がない。 – kazemakase

+0

全体の問題はナンdatpointsは未知であり、実際のゼロ値があるということです、あなたはそれをナンまたはinfの値を渡す場合、truncatedSVDは、実際にエラーが発生します。 – FlorianEn

答えて

0

私はゼロにNaNを設定することになったが、これは最適な解決策はありませんが、私は本当にこのインスタンス内の欠損値を転嫁するために満足のいく方法があるとは思いません。

0

これにはいくつかの方法があります。そのうちの1つ - NaNを0に設定する方法は、データの平均値(列と言うことがあります)と等しくなるように設定することです。

これをアドレスする簡単な方法は、これは非常に単純な例であり、scikit-learn doc documentation about this issueを参照して、より多くの情報のために、多くのことを改善することができることを

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]) 

注imputer scikitです。