python 分类变量转为哑变量_如何转化哑变量

Python分析建模,日常问题整理(四)

确认过时间,离发工资还有四周。

2018.08.13~2018.08.19

numpy的argmax、arange方法对哑变量的转化

a = numpy.array([[1, 5, 5, 2],

[9, 6, 2, 8],

[3, 7, 9, 1]])

numpy.argmax(a, axis=0) # 输出每个向量最大值索引

numpy.argmax(a, axis=1) # 输出最大值索引

numpy.equal(result_max, test_max) #一一对应的元素,如果相等返回true,不相等返回false

numpy的方法真的很好用,运算十分快,虽然pd也可以写方法进去,但是就是不如numpy快。

tem = (numpy.arange(3) == np.array([[2],[1],[0],[3]])).astype(int)

将数值变量转化为哑变量,分类为numpy.arange(2) ,即[0,1]

如果数据为0,则返回true,如果数据为1,返回false。

np.astype(int) 能将所有的true转化为1,所有的False转化为0

这样就可以将数据转化为0,1哑变量了。

np.argmax(tem,axis = 1)

将哑变量转化为数值。

type(df.ix[:,1:2]) 或者type(df.iloc[:,1:2])的数据类型是dataframe

type(df['b']) 的数据类型是Series

df.ix[:,1:2].values 的数据形式是多个数组[[2],[4],[1]]

df['b'].values 的数据形式是一个数组[2,4,1]

将dataframe的某列转化为哑变量

如果一共有三个类,那么只需转化为两列哑变量,如果n各类,只需转化为n-1列哑变量。

# 方法一:

(np.arange(2)==pd.DataFrame([0,1,1,0,1]).values).astype(int)

# 方法二:

from keras.utils.np_utils import to_categorical

to_categorical(pd.DataFrame([0,1,1,0,1]).values, num_classes = 2)

要将类别型变量转为哑变量,可以使用pandas库中的get_dummies函数。首先,将需要转换的类别型变量存储在一个列表中,例如features = \["Pclass", "Sex", "SibSp", "Parch"\]。然后,使用pd.get_dummies函数将这些类别型变量转换为哑变量。这样,每个类别型变量的每个属性都会被转换为一个新的哑变量列。\[1\] 举个例子,假设我们有一个职业因素的类别型变量,包括学生、农民、工人、公务员和其他五个属性。我们可以将这个类别型变量转换为四个哑变量。其中,其他属性作为参照,每个哑变量的赋值为0。在模型解释时,每个类别哑变量的回归系数表示该哑变量与参照相比后对因变量的影响。\[2\] 另外一个例子是血型,分为A、B、O、AB四个类型。如果我们更关注O型血的人,可以将O型作为参照,来分析其他血型与O型相比后对于结局产生影响的差异。\[3\] 在引入哑变量时,有两种方式:加法方式和乘法方式。加法方式是指将哑变量作为单独的自变量,有独立的系数,只改变回归直线的截距,不改变斜率。乘法方式则相反,不改变截距,只改变斜率,因为哑变量在回归方程中与某个自变量相乘后作为一个自变量。当然,也可以同时使用加法和乘法来引入哑变量,即同时改变截距和斜率。\[3\] 因此,通过使用pd.get_dummies函数,我们可以将类别型变量转换为哑变量,并根据需要选择加法方式或乘法方式来引入这些哑变量。 #### 引用[.reference_title] - *1* [Python超实用小技巧:分类变量转化哑变量(附哑变量详解)](https://blog.csdn.net/Wan7777777/article/details/119746355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [哑变量详解](https://blog.csdn.net/huaishitou/article/details/122491259)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值