在使用 sklearns 的 LabelEncoder() 时,如何检查分配给哪个标签的值?
How can I check what value is assigned to what label while using sklearns' LabelEncoder()?
我正在将分类数据转换为数值以用于机器学习目的。
举个例子,一辆汽车的购买价格(="buying"变量)分类为:"vhigh, high, med, low"。
为了将其转换为数值,我使用了:
le = preprocessing.LabelEncoder()
buying = le.fit_transform(list(data["buying"]))
由于这是随机完成的(例如 vhigh = 0、high = 2),因此有没有一种方法可以检查 Python 如何将这些标签中的每一个准确地转换为数值?
您可以在数据框中创建一个额外的列来映射值:
mapping_df = data[['buying']].copy() #Create an extra dataframe which will be used to address only the encoded values
mapping_df['buying_encoded'] = le.fit_transform(data['buying'].values) #Using values is faster than using list
这是一个完整的工作示例:
import pandas as pd
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data = pd.DataFrame({'index':[0,1,2,3,4,5,6],
'buying':['Luffy','Nami','Luffy','Franky','Sanji','Zoro','Luffy']})
data['buying_encoded'] = le.fit_transform(data['buying'].values)
data = data.drop_duplicates('buying').set_index('index')
print(data)
输出:
buying buying_encoded
index
0 Luffy 1
1 Nami 2
3 Franky 0
4 Sanji 3
5 Zoro 4
您还可以获得映射到类别的字典,如下所示
从@celius-stingher 停止的地方开始,
d1 = data.drop_duplicates('buying').drop('index', axis=1).set_index('buying')
print(d1)
输出:
buying_encoded
buying
Luffy 1
Nami 2
Franky 0
Sanji 3
Zoro 4
要将此输出转换为字典,
dict_map = d1.to_dict()
print(dict_map)
输出:
{'buying_encoded': {'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}}
所以我们可以通过从返回的 Dict
中获取 buying_encoded
属性来获取字典
print(dict_map['buying_encoded'])
输出:
{'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}
我正在将分类数据转换为数值以用于机器学习目的。
举个例子,一辆汽车的购买价格(="buying"变量)分类为:"vhigh, high, med, low"。 为了将其转换为数值,我使用了:
le = preprocessing.LabelEncoder()
buying = le.fit_transform(list(data["buying"]))
由于这是随机完成的(例如 vhigh = 0、high = 2),因此有没有一种方法可以检查 Python 如何将这些标签中的每一个准确地转换为数值?
您可以在数据框中创建一个额外的列来映射值:
mapping_df = data[['buying']].copy() #Create an extra dataframe which will be used to address only the encoded values
mapping_df['buying_encoded'] = le.fit_transform(data['buying'].values) #Using values is faster than using list
这是一个完整的工作示例:
import pandas as pd
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data = pd.DataFrame({'index':[0,1,2,3,4,5,6],
'buying':['Luffy','Nami','Luffy','Franky','Sanji','Zoro','Luffy']})
data['buying_encoded'] = le.fit_transform(data['buying'].values)
data = data.drop_duplicates('buying').set_index('index')
print(data)
输出:
buying buying_encoded
index
0 Luffy 1
1 Nami 2
3 Franky 0
4 Sanji 3
5 Zoro 4
您还可以获得映射到类别的字典,如下所示 从@celius-stingher 停止的地方开始,
d1 = data.drop_duplicates('buying').drop('index', axis=1).set_index('buying')
print(d1)
输出:
buying_encoded
buying
Luffy 1
Nami 2
Franky 0
Sanji 3
Zoro 4
要将此输出转换为字典,
dict_map = d1.to_dict()
print(dict_map)
输出:
{'buying_encoded': {'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}}
所以我们可以通过从返回的 Dict
buying_encoded
属性来获取字典
print(dict_map['buying_encoded'])
输出:
{'Luffy': 1, 'Nami': 2, 'Franky': 0, 'Sanji': 3, 'Zoro': 4}