Я пытаюсь запустить t-sne из sklearn для данных уменьшенных размеров.
Для начала у меня есть матрица tfidf.Вот код для того же.
def tf_vectorizer (docs): "" "Извлечение вектора частоты терминов для каждого документа
"""
from sklearn.feature_extraction.text import TfidfVectorizer
print("Extracting tfidf features for clustering...\n")
tf_vec = TfidfVectorizer(max_df=0.95, min_df=2,norm='l2').fit(docs)
print("Tf-idf features extracted!!\n")
return tf_vec
Затем я использую TruncatedSVD, чтобы уменьшить размеры с 11Kдо 500. Здесь это
def reduce_dimensions(tfidf_data,n_components):
""" This function will reduce the dimension of the dataset"""
from sklearn.decomposition import TruncatedSVD
svd=TruncatedSVD(n_components=n_components,random_state=42)
svd_reduced_data=svd.fit_transform(tfidf_data)
svd_reduced_data=svd_reduced_data.astype('float')
#print("Explained Variance of all components {}".format(svd.explained_variance_ratio_))
print("Total variance explained {}".format(svd.explained_variance_ratio_.sum()))
return svd_reduced_data
Я проверил вывод svd_reduced_data, чтобы проверить, есть ли какой-либо NaN или Inf.
np.isnan(svd_reduced_data).sum()
0
Так что это показывает, что в этом нет пропущенных значенийданные. Теперь я передаю эти данные 500 измерений в tsne, чтобы уменьшить их до 2 измерений следующим образом:
from sklearn.manifold import TSNE
tsne=TSNE(n_components=n_components,n_iter=300,random_state=42)
tsne_reduced_data=tsne.fit_transform(svd_reduced_data)
И я получаю эту ошибку:
/Users/anaconda/envs/dl/lib/python3.5/site-packages/scipy/linalg/misc.py in norm(a, ord, axis, keepdims)
127 """
128 # Differs from numpy only in non-finite handling and the use of blas.
--> 129 a = np.asarray_chkfinite(a)
130
131 # Only use optimized norms if axis and keepdims are not specified.
/Users/anaconda/envs/dl/lib/python3.5/site-packages/numpy/lib/function_base.py in asarray_chkfinite(a, dtype, order)
1231 if a.dtype.char in typecodes['AllFloat'] and not np.isfinite(a).all():
1232 raise ValueError(
-> 1233 "array must not contain infs or NaNs")
1234 return a
1235
ValueError: array must not contain infs or NaNs
Не уверен, почему это таквыдача этой ошибки, когда базовые данные не имеют NaN. Любая помощь?