类别属性转数值类型方法集

1  设置测试数据集

df_test = pd.DataFrame({
'sex':['man','man','woman','man','woman','man'],
'name':['Alice','Bob','Cindy','Eric','Helen','Grace '],
'where':['bj','bj','sh','bj','cd','cd'],
'play':['game','game','ball','game','game','ball']
})
df_test

 2  方法

2.1  Label encoding

 将列中每种取值对应成一个数字,有多少种取值就有多少种数字

缺点:会出现等级差,比如 1<3

from sklearn.preprocessing import LabelEncoder
X = df_test.copy()
label = LabelEncoder()
for c in X.columns:
    if (X[c].dtype == 'object'):
        X[c]=label.fit_transform(X[c])
X

 

 2.2  One Hot Encoder

将分类特征的每个元素转化为一个可以用来计算的值

优点:解决2.1问题

缺点:出现稀疏矩阵

from sklearn.preprocessing import OneHotEncoder
X = df_test.copy()
one=OneHotEncoder()

one.fit(X)
X = one.transform(X)

print(X.toarray())

 

 2.3  get_dummies

将每列的所有属性取值设成一列,取0或1

优点:解决2.1问题,效果通2.2,但代码简单

缺点:出现稀疏矩阵

X = df_test.copy()
X = pd.get_dummies(X)
X

 2.4  FeatureHasher

X = df_test.copy()
for c in X.columns:
    X[c] = X[c].astype('str')
hashing = FeatureHasher(input_type='string')
X = hashing.transform(X.values)
X.data

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,对于这个任务,我们可以按照以下步骤进行: 1. 导入需要的库,读取数据。 ``` import pandas as pd import numpy as np from sklearn.impute import SimpleImputer data = pd.read_csv('labor.csv') ``` 2. 确定需要填充的属性列及其类型。 ``` numeric_cols = ['wage', 'age'] categorical_cols = ['education', 'race', 'hispanic', 'sex', 'union', 'region', 'jobclass', 'health', 'health_ins'] ``` 3. 对数值属性采用平均值进行填充。 ``` numeric_imputer = SimpleImputer(missing_values=np.nan, strategy='mean') data[numeric_cols] = numeric_imputer.fit_transform(data[numeric_cols]) ``` 4. 对非数值属性采用众数进行填充。 ``` categorical_imputer = SimpleImputer(missing_values=np.nan, strategy='most_frequent') data[categorical_cols] = categorical_imputer.fit_transform(data[categorical_cols]) ``` 5. 检查数据是否还存在缺失值。 ``` data.isnull().sum() ``` 完整代码如下: ``` import pandas as pd import numpy as np from sklearn.impute import SimpleImputer data = pd.read_csv('labor.csv') numeric_cols = ['wage', 'age'] categorical_cols = ['education', 'race', 'hispanic', 'sex', 'union', 'region', 'jobclass', 'health', 'health_ins'] numeric_imputer = SimpleImputer(missing_values=np.nan, strategy='mean') data[numeric_cols] = numeric_imputer.fit_transform(data[numeric_cols]) categorical_imputer = SimpleImputer(missing_values=np.nan, strategy='most_frequent') data[categorical_cols] = categorical_imputer.fit_transform(data[categorical_cols]) data.isnull().sum() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值