gpt4 book ai didi

python - pd.get_dummies 是单热编码吗?

转载 作者:太空狗 更新时间:2023-10-29 19:33:32 25 4
gpt4 key购买 nike

Given one-hot encoding 和 dummy coding 的区别,pandas.get_dummies 方法在使用默认参数(即 drop_first=False)时的 one-hot 编码?

如果是这样,我从逻辑回归模型中删除截距是否有意义?这是一个例子:

# I assume I have already my dataset in a DataFrame X and the true labels in y
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

X = pd.get_dummies(X)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .80)

clf = LogisticRegression(fit_intercept=False)
clf.fit(X_train, y_train)

最佳答案

虚拟变量是每次观测值为 1 或 0 的任何变量。 pd.get_dummies 当应用于类别列时,我们每个观察都有 一个 类别,将为每个唯一的分类值生成一个新列(变量)。它将在对应于该观察的分类值的列中放置一个 1。这相当于一次热编码。

one-hot 编码的特点是每次观察的每组分类值只有一个。

考虑系列 s

s = pd.Series(list('AABBCCABCDDEE'))

s

0 A
1 A
2 B
3 B
4 C
5 C
6 A
7 B
8 C
9 D
10 D
11 E
12 E
dtype: object

pd.get_dummies 将生成单热编码。是的!不适合截距是绝对合适的。

pd.get_dummies(s)

A B C D E
0 1 0 0 0 0
1 1 0 0 0 0
2 0 1 0 0 0
3 0 1 0 0 0
4 0 0 1 0 0
5 0 0 1 0 0
6 1 0 0 0 0
7 0 1 0 0 0
8 0 0 1 0 0
9 0 0 0 1 0
10 0 0 0 1 0
11 0 0 0 0 1
12 0 0 0 0 1

但是,如果您有 s 包含不同的数据并使用了 pd.Series.str.get_dummies

s = pd.Series('A|B,A,B,B,C|D,D|B,A,B,C,A|D'.split(','))

s

0 A|B
1 A
2 B
3 B
4 C|D
5 D|B
6 A
7 B
8 C
9 A|D
dtype: object

然后 get_dummies 生成非单热编码的虚拟变量,理论上您可以离开截距。

s.str.get_dummies()

A B C D
0 1 1 0 0
1 1 0 0 0
2 0 1 0 0
3 0 1 0 0
4 0 0 1 1
5 0 1 0 1
6 1 0 0 0
7 0 1 0 0
8 0 0 1 0
9 1 0 0 1

关于python - pd.get_dummies 是单热编码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48170405/

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