向 PCA 模型添加一个点
adding a point to a PCA model
我正在使用 PCA 将文档减少到 2 点,以便我可以可视化它们。
我的方法看起来像这样。
pipeline = Pipeline([('tfidf', TfidfVectorizer())])
X = pipeline.fit_transform(sent_list).todense()
pca = PCA(n_components = 2).fit(X)
data2D = pca.fit_transform(X)
然后我使用 matplotlib 绘制它们
plt.scatter(data2D[:,0],data2D[:,1],c = label_colour)
我想添加 2 个新点并查看它们在模型中的位置。到目前为止,我在最后的训练数据中包含了初始点,并在数组的最后两个位置绘制了一个 X,但我不确定这是否真实反映了它们的价值。任何见解都会很棒。
TfidfVectorizer
和 PCA
都保留了转换后的行顺序,因此您所做的看起来基本正确(即 sent_list
中的最后一行映射到data2D
数组中的最后一行)。
但是,如果新的数据点不应该影响模型,你应该先用原始数据拟合模型,然后用已经拟合的模型转换新数据。例如:
# Fit the model with original data
vect = TfidfVectorizer()
X = vect.fit_transform(sent_list)
svd = TruncatedSVD(n_components = 2)
data2D = svd.fit_transform(X)
# Transform new data with fitted model
X_new = vect.transform(new_data)
data2D_new = svd.transform(X_new)
出于性能原因,对稀疏矩阵使用 TruncatedSVD
可能比加密数据并应用 PCA
更好。结果应该是相同的。
我正在使用 PCA 将文档减少到 2 点,以便我可以可视化它们。 我的方法看起来像这样。
pipeline = Pipeline([('tfidf', TfidfVectorizer())])
X = pipeline.fit_transform(sent_list).todense()
pca = PCA(n_components = 2).fit(X)
data2D = pca.fit_transform(X)
然后我使用 matplotlib 绘制它们 plt.scatter(data2D[:,0],data2D[:,1],c = label_colour)
我想添加 2 个新点并查看它们在模型中的位置。到目前为止,我在最后的训练数据中包含了初始点,并在数组的最后两个位置绘制了一个 X,但我不确定这是否真实反映了它们的价值。任何见解都会很棒。
TfidfVectorizer
和 PCA
都保留了转换后的行顺序,因此您所做的看起来基本正确(即 sent_list
中的最后一行映射到data2D
数组中的最后一行)。
但是,如果新的数据点不应该影响模型,你应该先用原始数据拟合模型,然后用已经拟合的模型转换新数据。例如:
# Fit the model with original data
vect = TfidfVectorizer()
X = vect.fit_transform(sent_list)
svd = TruncatedSVD(n_components = 2)
data2D = svd.fit_transform(X)
# Transform new data with fitted model
X_new = vect.transform(new_data)
data2D_new = svd.transform(X_new)
出于性能原因,对稀疏矩阵使用 TruncatedSVD
可能比加密数据并应用 PCA
更好。结果应该是相同的。