gpt4 book ai didi

python - 为什么 sklearn KMeans 在拟合后会更改我的数据集?

转载 作者:行者123 更新时间:2023-12-02 17:58:36 24 4
gpt4 key购买 nike

我正在使用 sklearn 中的 KMeans 对 College.csv 进行聚类。但是当我拟合 KMeans 模型时,我的数据集随后发生了变化!在使用 KMeans 之前,我使用 StandardScaler 标准化数值变量,并使用 OneHotEncoder 来虚拟分类变量 “Private”

我的代码是:

num_vars = data.columns[1:]
scaler = StandardScaler()
data[num_vars] = scaler.fit_transform(data[num_vars])

ohe = OneHotEncoder()
data["Private"] = ohe.fit_transform(data.Private.values.reshape(-1,1)).toarray()

km = KMeans(n_cluster = 6)
km.fit(data)

使用 KMeans 之前的数据集: enter image description here

使用KMeans后的数据集: enter image description here

最佳答案

看来,当您运行 km.fit(data) 时,.fit 方法会通过插入一列来就地修改 data与您的 one-hot 编码列相反。同样令人困惑的是“Terminal”列消失了。

enter image description here

目前,您可以使用此解决方法来复制数据:

data1 = data.copy()
km = KMeans(n_clusters = 6, n_init = 'auto')
km.fit(data1)

编辑:当您运行 km.fit 时,运行的第一个方法是 km._validate_data – 这是修改您传递的数据帧的验证步骤(请参阅 herehere )

例如,如果我将以下内容添加到代码末尾:

km._validate_data(
data,
accept_sparse="csr",
dtype=[np.float64, np.float32],
order="C",
accept_large_sparse=False,
)

运行此命令会更改您的数据,但我不知道为什么会发生这种情况。这可能与数据本身有关。

关于python - 为什么 sklearn KMeans 在拟合后会更改我的数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75009419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com