Categorical variable(类别变量)学习笔记(未完)
写在前面
一、为什么要引入类别变量:对现有的数据进行预处理,再训练模型,使得训练出来的模型效果更好
二、什么是类别变量:类别变量又名分类变量,顾名思义,类别变量就是能表示类别的名词,比如说,男,女;汽车制造业,手工业,农业等。
本文基于kaggle教程介绍三个方法
1、丢弃分类变量
找到数据中的分类变量,drop掉
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
from sklearn.preprocessing import OrdinalEncoder,OneHotEncoder
pd.set_option('display.max_columns',None)
# Function for comparing different approaches
def score_dataset(X_train, X_valid, y_train, y_valid):model = RandomForestRegressor(n_estimators=100, random_state=0)model.fit(X_train, y_train)preds = model.predict(X_valid)return mean_absolute_error(y_valid, preds)# Read the data
data = pd.read_csv('../machineLearning/temp/archive/melb_data.csv')# Separate target from predictors
y = data.Price
X = data.drop(['Price'], axis=1)# Divide data into training and validation subsets
X_train_full, X_valid_full, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2,random_state=0)
# 删除存在空值的列
cols_with_missing = [col for col in X_train_full.columns if X_train_full[col].isnull().any()]
X_train_full.drop(cols_with_missing, axis=1, inplace=True)
X_valid_full.drop(cols_with_missing, axis=1, inplace=True)# "Cardinality" means the number of unique values in a column
# Select categorical columns with relatively low cardinality (convenient but arbitrary)
low_cardinality_cols = [cname for cname in X_train_full.columns if X_train_full[cname].nunique() < 10 andX_train_full[cname].dtype == "object"]# 选择num列
numerical_cols = [cname for cname in X_train_full.columns if X_train_full[cname].dtype in ['int64', 'float64']]
# Keep selected columns only
my_cols = low_cardinality_cols + numerical_cols
X_train = X_train_full[my_cols].copy()
X_valid = X_valid_full[my_cols].copy()#找到object列
s = (X_train.dtypes == 'object')
object_cols = list(s[s].index)print("Categorical variables:")
print(object_cols)#直接将类别变量去掉
drop_X_train = X_train.select_dtypes(exclude=['object'])
drop_X_valid = X_valid.select_dtypes(exclude=['object'])print("MAE from Approach 1 (Drop categorical variables):")
print(score_dataset(drop_X_train, drop_X_valid, y_train, y_valid))
2、Ordinal Encoding
对数据中分类变量的值进行从0到排号
# Make copy to avoid changing original data
label_X_train = X_train.copy()
label_X_valid = X_valid.copy()# Apply ordinal encoder to each column with categorical data
ordinal_encoder = OrdinalEncoder()
#print(label_X_train[object_cols])
label_X_train[object_cols] = ordinal_encoder.fit_transform(X_train[object_cols])
label_X_valid[object_cols] = ordinal_encoder.transform(X_valid[object_cols])
#print(label_X_train[object_cols])print("MAE from Approach 2 (Ordinal Encoding):")
print(score_dataset(label_X_train, label_X_valid, y_train, y_valid))
3、One-Hot Encoding
OH_encoder = OneHotEncoder(handle_unknown='ignore', sparse=False)
OH_cols_train = pd.DataFrame(OH_encoder.fit_transform(X_train[object_cols]))
OH_cols_valid = pd.DataFrame(OH_encoder.transform(X_valid[object_cols]))
#print(OH_cols_train.head())# One-hot encoding removed index; put it back
OH_cols_train.index = X_train.index
OH_cols_valid.index = X_valid.index
print(OH_cols_train.shape)
# Remove categorical columns (will replace with one-hot encoding)
num_X_train = X_train.drop(object_cols, axis=1)
num_X_valid = X_valid.drop(object_cols, axis=1)
print(num_X_train.shape)# Add one-hot encoded columns to numerical features
OH_X_train = pd.concat([num_X_train, OH_cols_train], axis=1)
OH_X_valid = pd.concat([num_X_valid, OH_cols_valid], axis=1)
print(OH_X_train.shape)print("MAE from Approach 3 (One-Hot Encoding):")
print(score_dataset(OH_X_train, OH_X_valid, y_train, y_valid))
Categorical variable(类别变量)学习笔记(未完)相关推荐
- TS学习笔记 ---未完待续....
TS学习笔记 1 .ts文件与.tsx文件有什么区别 2.使用TS之前需要配置 3.TS特性 泛型和类型注解有什么区别? 3.什么是泛型参数? 4.函数.类.接口有什么区别? 4.1 一个class不 ...
- XSS学习笔记(未完)
XSS基础学习 1. XSS 1.1 客户端Cookie: 1.2 XSS攻击类型 1.3 工具/平台 1.4 利用方式 1.4.1 非手工方式 1.4.1.1自动化攻击:beef 1.4.2 手工方 ...
- 个体软件过程(PSP)学习笔记 (未完)
个体软件过程 前言 软件工程漫谈 软件工程认识观 标准定义 将系统化的.规范的.可度量的方法应用于软件的开发.运行和维护的过程,即将工程化应用于软件中;以上所述方法的研究 软件开发管理 项目管理是基础 ...
- 赖世雄教你学英语语法学习笔记(未完)
[size=medium]关系代词部分(18-19) 关系代词使用的三个原则 1.关系代词前面必须有先行词,也就是被代替的名词 2.关系代词在所引导的从句中必须当主语或宾语 3.关系代词在从句中不能当 ...
- pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)
1. SRCNN 1.1. Contribution end-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 ). 指出了超分辨方向上传统方法( spar ...
- 《漫画算法》读书心得笔记-未完
感谢FunTester送的书籍.建议大家买或借来看看,一起学习下.本文主要是记录我看这本书的心得,不一定理解是对的,是我自己悟出来的体会,而不是按书照抄,都是凭自己的理解写出来的,相当于在写一本书了, ...
- 哔哩大学计算机学院:初识常量变量学习笔记
CSDN话题挑战赛第2期 参赛话题:学习笔记 目录 视频教程上整理知识点 遇到的难题 解决方法 知识点实践 视频教程上整理知识点 1. 初识变量常量 生活中的数据 有些数据不能变:血型,性别 有些数据 ...
- Ubuntu系统学习笔记(完整版)
Ubuntu是一个以桌面应用为主的Linux操作系统.一般叫做乌班图 什么叫操作系统? widows,用于个人桌面 macOS,用于个人桌面 Linux,主要用于服务器,商务部署 创建虚拟机安装Ubu ...
- Kubernetes学习笔记-未整理
Kubernetes学习笔记 标签:Kubernetes 学习笔记 原文:https://github.com/wtysos11/NoteBook/blob/master/微服务/Kubernetes ...
- 大数据Spark学习笔记—未更完
Spark概述 核心模块 Spark编程配置 IDEA配置scala环境 IDEA软件中Scala配置安装教程(Spark计算环境搭建)_jing_zhong的博客-CSDN博客 较全的idea202 ...
最新文章
- 安卓学习第36课——PopupWindow
- m 文件 dll matlab 中调用_Java与MatLab混编
- 假如有人把支付宝存储服务器炸了(附文末福利)
- C#打造自己的文件浏览器
- STM8S001J3M3还能完这么多花样,开发板尝鲜体验。
- python画带状图_13个使用Matplotlib实现数据可视化的Python代码
- aspose.words读取html,Aspose.Words for .NET HTML代码直接生成WORD | 学步园
- sql重命名数据库_SQL重命名数据库
- 怎么阻止acrobat自动更新升级?
- 搜索引擎的原理以及倒排索引技术
- r语言 svycoxph_R语言之生信⑦Cox比例风险模型(单因素)
- 分辨率单位及换算详解
- WordPress二次元博客主题模板-Sakurairo v2.5.1.1
- uniapp微信小程序引用标准版交易组件
- 腾讯云HTTPDNS 将上线微信服务平台!
- Python3网络爬虫:腾讯新闻App的广告数据抓取
- 我的大学六年——郭天祥
- 数字IC常考题(单选、多选、编程)
- 今天老夫就把完全背包的底裤给你扒出来瞅瞅!!!
- OLED显示技术的发展趋势浅析