我想用两个数据(测试数据,训练数据)构建一个朴素的bayes模型。
dataframe包含13列,但我只想在5-6列中将数据从str编码为int值。如何使用一段代码来实现这一目的,从而可以直接对6列进行编码,我遵循以下答案:
https://stackoverflow.com/a/37159615/12977554
import pandas as pd
from sklearn.preprocessing import LabelEncoder
df = pd.DataFrame({
'colors': ["R" ,"G", "B" ,"B" ,"G" ,"R" ,"B" ,"G" ,"G" ,"R" ,"G" ],
'skills': ["Java" , "C++", "SQL", "Java", "Python", "Python", "SQL","C++", "Java", "SQL", "Java"]
})
def encode_df(dataframe):
le = LabelEncoder()
for column in dataframe.columns:
dataframe[column] = le.fit_transform(dataframe[column])
return dataframe
#encode the dataframe
encode_df(df)但是它只是编码了1列,而不是我想要的是6列和1段代码。
发布于 2021-04-26 07:06:59
可以循环遍历列和fit_transform。
cols = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6']
for col in cols:
le = LabelEncoder()
df[col] = le.fit_transform(df[col].astype('str'))
df理想情况下,您希望对训练数据集和测试数据集使用相同的转换器。
为此,你需要使用
for col in cols:
le = LabelEncoder()
le.fit(df_train[col].astype('str'))
df_train[col] = le.transform(df_train[col].astype('str'))
df_test[col] = le.transform(df_test[col].astype('str'))
df发布于 2021-04-26 07:08:47
你试过申请了吗?
le = LabelEncoder()
df['colors'] = df['colors'].apply(lambda x: le.fit_transform(x))https://stackoverflow.com/questions/67262143
复制相似问题