Python 如何对特征值为数字范围的有序特征进行预处理,并对其进行相应的排序或编码
我的数据集中有以下功能列:Python 如何对特征值为数字范围的有序特征进行预处理,并对其进行相应的排序或编码,python,machine-learning,categorical-data,feature-engineering,Python,Machine Learning,Categorical Data,Feature Engineering,我的数据集中有以下功能列: +-----------+ | size | +-----------+ | 10-90 | | <10 | | 100-200 | | 10-90 | | 500-800 | | 10000+ | | <10 | | 1000-4999 | +-----------+ y的输出为: [10-90, <10, 100-200, 10-90, 500-800, 10000+, <1
+-----------+
| size |
+-----------+
| 10-90 |
| <10 |
| 100-200 |
| 10-90 |
| 500-800 |
| 10000+ |
| <10 |
| 1000-4999 |
+-----------+
y的输出为:
[10-90, <10, 100-200, 10-90, 500-800, 10000+, <10, 1000-4999]
Categories (6, object): [10-90 < 100-200 < 1000-4999 < 10000+ < 500-800 < <10]
[10-90,熊猫解决方案也指定了类别
的预期顺序:
cats= ['<10', '10-90' , '100-200','500-800', '1000-4999', '10000+']
y = pd.Categorical(train['size'],ordered=True, categories=cats)
print (y)
[10-90, <10, 100-200, 10-90, 500-800, 10000+, <10, 1000-4999]
Categories (6, object): [<10 < 10-90 < 100-200 < 500-800 < 1000-4999 < 10000+]
cats=['Pandas解决方案也指定了类别
的预期顺序:
cats= ['<10', '10-90' , '100-200','500-800', '1000-4999', '10000+']
y = pd.Categorical(train['size'],ordered=True, categories=cats)
print (y)
[10-90, <10, 100-200, 10-90, 500-800, 10000+, <10, 1000-4999]
Categories (6, object): [<10 < 10-90 < 100-200 < 500-800 < 1000-4999 < 10000+]
cats=['R解决方案:
cats = c('<10', '10-90' , '100-200','500-800', '1000-4999', '10000+')
factor(train$size,levels = cats,ordered = TRUE)
[1] 10-90 <10 100-200 10-90 500-800 10000+ <10 1000-4999
Levels: <10 < 10-90 < 100-200 < 500-800 < 1000-4999 < 10000+
cats=c('R解决方案:
cats = c('<10', '10-90' , '100-200','500-800', '1000-4999', '10000+')
factor(train$size,levels = cats,ordered = TRUE)
[1] 10-90 <10 100-200 10-90 500-800 10000+ <10 1000-4999
Levels: <10 < 10-90 < 100-200 < 500-800 < 1000-4999 < 10000+
cats=c('我不是r
coder,但如何工作y=factor(train$size,levels=c('我不是r
coder,但如何工作y=factor(train$size,levels=c('x=np.unique(train_数据['size'])打印(x)数组(['10-90','100-200','1000-4999','10000+','500-800',您的代码是错误的,因为需要手动指定类别,因为print(x)
创建了错误的顺序,因为像字符串一样按字典排序。对于排名使用print(y.code)
-我的数据有很多层次。因此我想避免手动分类。我知道这是否是唯一的方法。有没有方法映射一个看不见的数据,比如说@rjdj-理论上很难回答。给我一些时间。x=np.unique(train_data['size'])print(x)数组(['10-90','100-200','1000-4999','10000+','500-800',您的代码是错误的,因为需要手动指定类别,因为print(x)
创建了错误的顺序,因为像字符串一样按字典排序。对于排名使用print(y.code)
-我的数据有很多层次。所以我想避免手动分类。我知道这是否是唯一的方法。有没有方法映射一个看不见的数据,比如说,@rjdj-理论上很难回答。给我一些时间。