我正试图在sklearn上运行缩小尺寸数据的t-sne。
首先,我有一个tfidf矩阵。这是相同的代码。
def tf_vectorizer(docs): """提取每个文档的术语频率向量
ik
然后我使用TruncatedSVD将尺寸从11K减少到500.这是
"""
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
我检查了svd_reduced_data的输出以检查是否有NaN或Inf。
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
因此,这表明此数据中没有缺失值。现在我将500维度的这些数据传递给tsne,将其减少到2维,如下所示:
np.isnan(svd_reduced_data).sum()
0
我收到了这个错误:
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)
当基础数据没有NaN时,不确定为什么会出现此错误。有什么帮助吗?
答案 0 :(得分:1)
您还需要与np.isinf()
核对,以确保没有无限的功能。