python - 如何使用 scikit 学习具有新值的 inverse_transform

标签 python scikit-learn pca

我有一组我用scikit学习PCA的数据。在使用 StandardScaler() 执行 PCA 之前,我对数据进行了缩放。

variance_to_retain = 0.99
np_scaled = StandardScaler().fit_transform(df_data)
pca = PCA(n_components=variance_to_retain)
np_pca = pca.fit_transform(np_scaled)

# make dataframe of scaled data
# put column names on scaled data for use later
df_scaled = pd.DataFrame(np_scaled, columns=df_data.columns)
num_components = len(pca.explained_variance_ratio_)
cum_variance_explained = np.cumsum(pca.explained_variance_ratio_)

eigenvalues = pca.explained_variance_
eigenvectors = pca.components_

然后我在缩放的数据集上运行 K-Means 聚类。我可以在缩放空间中很好地绘制聚类中心。

我的问题是:如何将中心的位置转换回原始数据空间。我知道 StandardScaler.fit_transform() 使数据的均值和单位方差为零。但是有了新的形状点(num_clusters,num_features),我可以使用 inverse_transform(centers) 将中心转换回原始数据的范围和偏移量吗?

谢谢,大卫

最佳答案

您可以在 kmeans 上获取 cluster_centers,然后将其插入您的 pca.inverse_transform

这是一个例子

import numpy as np
from sklearn import decomposition
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler



iris = datasets.load_iris()
X = iris.data
y = iris.target

scal = StandardScaler()
X_t = scal.fit_transform(X)

pca = decomposition.PCA(n_components=3)
pca.fit(X_t)
X_t = pca.transform(X_t)

clf = KMeans(n_clusters=3)
clf.fit(X_t)

scal.inverse_transform(pca.inverse_transform(clf.cluster_centers_))

请注意,sklearn 有多种方法可以进行拟合/转换。你可以做StandardScaler().fit_transform(X)但是你失去了定标器,并且不能重复使用它;你也不能用它来创建一个逆。

或者,你可以做 scal = StandardScaler()其次是 scal.fit(X)然后通过 scal.transform(X)
或者你可以做 scal.fit_transform(X)它结合了拟合/转换步骤

关于python - 如何使用 scikit 学习具有新值的 inverse_transform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49885007/

相关文章:

math - 关于PCA降维的问题

machine-learning - 在 scikit 中使用 libsvm 格式

python - 通过 HTTPS 使用 gevent/grequests 的奇怪阻塞行为

python - 在没有计数的情况下计算两个列表之间的频率的替代方法

python - 如何在 Python 中读取简单的 Json 结果(来自 Google 计算器)?

python - 如何避免回归模型中的浮点值

scikit-learn - 模型 score() 与 r2_score 之间的差异

python - 来自 joblib 的多处理不并行化?

machine-learning - 特征脸方法中的权重

python - 在 pandas DataFrame 中计算每列行中的重复项