python数据预处理包括哪些内容_python数据预处理

一、属性规约

在进行数据预处理的过程中,如果数据的某一列都是一样的或者属性是一样的,那么这一列对我们的预测没有帮助,应该将这一列去掉,pandas中如果某一列属性值相同,但是此列中有缺失值(NaN),pandas会默认其有两个属性,我们在进行此操作的过程中应该首先去掉缺失值,然后检查唯一性。代码如下;

orig_columns = loans_2007.columns

drop_columns = []

for col in orig_columns:

col_series = loans_2007[col].dropna().unique()

if len(col_series) == 1:

drop_columns.append(col)

loans_2007 = loans_2007.drop(drop_columns, axis=1)

二、缺失值

用下面的代码进行缺失值查看数据中每一列的缺失值情况,对于缺失值比较多的列,可以直接删除,对于缺失值比较少的列可以删除其样本,或者填充其他值代替。

null_counts = loans.isnull().sum()

三、字符转化

print(loans.dtypes.value_counts())

object_columns_df = loans.select_dtypes(include=["object"]) #选择字符型的属性

用上面的代码看每一列的属性,sklearn不能处理字符型的,只能接受数值型的。对于字符型的可以进行如下处理:

mapping_dict = {

"emp_length": {

"10+ years": 10,

"9 years": 9,

"8 years": 8,

"7 years": 7,

"6 years": 6,

"5 years": 5,

"4 years": 4,

"3 years": 3,

"2 years": 2,

"1 year": 1,

"< 1 year": 0,

"n/a": 0

}

}

loans = loans.replace(mapping_dict)

loans = loans.drop(["last_credit_pull_d", "earliest_cr_line", "addr_state", "title"], axis=1)

loans["int_rate"] = loans["int_rate"].str.rstrip("%").astype("float")

对于能枚举的可以做一个字典,然后对数据做一个replace,对于有“%”的列,可以直接去掉百分号就好了。

四、样本不均衡问题

1、数据增强

2、加权重项

(1)(lr = LogisticRegression(class_weight="balanced"))

(2)自己设置,传到class_weight中如下:

penalty = {

0: 5,

1: 1

}

lr = LogisticRegression(class_weight=penalty)

3、多个模型融合

原文地址:https://www.cnblogs.com/xiaodongsuibi/p/9031139.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值