首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PCA分析中的纯度分数低于预期

PCA分析中的纯度分数低于预期
EN

Stack Overflow用户
提问于 2020-08-25 21:40:20
回答 1查看 136关注 0票数 0

我正在尝试根据PCA中捕获的方差绘制纯度得分的折线图。我们的目标是根据捕获的89%和99%的方差绘制纯度分数的折线图。在我的代码中,当组件/维度为2时,它捕获89%的方差,当组件/维度为4时,它捕获99%的方差。

代码语言:javascript
复制
import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

df = pd.read_csv("clustering.csv")
X10_df = df.drop("Class",axis = 1) #feature matrix
Y10_df = df["Class"] #Target vector
X10_df = np.array(X10_df)
Y10_df = np.array(Y10_df)
scaler = StandardScaler() # Standardizing the data
df_std = scaler.fit_transform(X10_df)
pca = PCA()
pca.fit(df_std)
purity = []
n_comp = range(2,5)
for k in n_comp :
    pca = PCA(n_components = k)
    pca.fit(df_std)
    pca.transform(df_std)
    scores_pca = pca.transform(df_std)
    kmeans_pca = KMeans(n_clusters=3, init ='k-means++', max_iter=300, n_init=10, random_state=0)
    pred_y12 = kmeans_pca.fit_predict(scores_pca)
    purity13 = purity_score(Y10_df, pred_y12)
    purity.append(purity13)

下面的函数计算纯度分数:

代码语言:javascript
复制
def purity_score(y_true, y_pred):
    contingency_matrix = metrics.cluster.contingency_matrix(y_true, y_pred)
    return np.sum(np.amax(contingency_matrix, axis=0)) / np.sum(contingency_matrix)

然而,虽然我有四个方差分数,但我只有三个纯度分数。我希望有四个纯度分数,这样我就可以创建方差与纯度的关系图。

为什么只有三个纯度分数?

以下是指向我的数据集文件的链接:https://gofile.io/d/3CgFTi

EN

回答 1

Stack Overflow用户

发布于 2020-08-28 21:48:17

这很简单,因为当您使用带范围的for循环时,范围中的最后一个数字将被忽略。所以在一个范围( 2,5)中,它将转到2,3,4,然后是一个循环。请继续阅读Python中的for循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63580150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档