get_dummies用于机器学习的特征处理

本文介绍了一种处理机器学习中分类特征的方法,特别是针对无序分类特征的one-hot编码技术,并展示了如何利用Python的pandas库进行数据编码及使用Logistic回归进行模型训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 分类特征有两种:
  1. 普通分类:性别、颜色
  2. 顺序分类:评分、级别

对于评分,可以把这个分类直接转换成1、2、3、4、5表示,因为它们之间有顺序、大小关系

但是对于颜色这种分类,直接用1/2/3/4/5/6/7表达,是不合适的,因为机器学习会误以为这些数字之间有大小关系

get_dummies就是用于颜色、性别这种特征的处理,也叫作one-hot-encoding处理

比如:

男性:1 0
女性:0 1
这就叫做one-hot-encoding,是机器学习对类别的特征处理

  1. 读取数据集
import pandas as pd

df_train = pd.read_csv("./datas/titanic/titanic_train.csv")
df_train.drop(columns=["Name", "Ticket", "Cabin"], inplace=True)
df_train.head()
df_train.info()

特征说明:

  • 数值特征:Fare
  • 分类-有序特征:Age
  • 分类-普通特征:PassengerId、Pclass、Sex、SibSp、Parch、Embarked
  • Survived为要预测的Label
  1. 分类有序特征可以用数字的方法处理
# 使用年龄的平均值,填充空值
df_train["Age"] = df_train["Age"].fillna(df_train["Age"].mean())
df_train.info()
  1. 普通无序分类特征可以用get_dummies编码
# 其实就是one-hot编码
pd.get_dummies(df_train["Sex"]).head()

# 便捷方法,用df全部替换
needcode_cat_columns = ["Pclass","Sex","SibSp","Parch","Embarked"]
df_coded = pd.get_dummies(
    df_train,
    # 要转码的列
    columns=needcode_cat_columns,
    # 生成的列名的前缀
    prefix=needcode_cat_columns,
    # 把空值也做编码
    dummy_na=True,
    # 把1 of k移除(dummy variable trap)
    drop_first=True
)
df_coded.head()

注意,One-hot-Encoding一般要去掉一列,不然会出现dummy variable trap,因为一个人不是male就是femal,它俩有推导关系

  1. 机器学习模型训练
y = df_coded.pop("Survived")
y.head()
X = df_coded
X.head()

from sklearn.linear_model import LogisticRegression
# 创建模型对象
logreg = LogisticRegression(solver='liblinear')
# 实现模型训练
logreg.fit(X, y)

logreg.score(X, y)	# 0.8148148148148148
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值