将标签从字符串转换为浮点数
Posted
技术标签:
【中文标题】将标签从字符串转换为浮点数【英文标题】:Transform a label from string to float 【发布时间】:2021-03-03 16:42:27 【问题描述】:我想将标签(即字符串)转换为浮点数。 我是这样做的:
label = LabelEncoder()
balanced_data['label'] = label.fit_transform(balanced_data['activity'])
balanced_data.head()
我获得了数字形式的标签,但仍然是字符串。 我该如何解决?谢谢
【问题讨论】:
标签编码产生一个字符串。在 pandas 中检查 dtypes 是使用Series.dtype
方法完成的,而不是 type
我并不是真正的 Pandas 专家,但是...label.fit_transform(float(balanced_data['activity']))
呢?
【参考方案1】:
你可以试试“eval”
st = "5"
st_as_int = eval(st)
print(type(st_as_int))
将返回“int”
【讨论】:
eval 只适用于一个对象,我想更改 Dataframe 的所有列 是的,所以:balanced_data['label'] = balance_data['label'].apply(lambda x: eval(x))【参考方案2】:由于标签当前是字符串,您必须将字符串转换为 float
。
label = float(label)
应该可以。 More on casting here.
【讨论】:
【参考方案3】:让我们假设一个新的 DataFrame 有两列(产品和价格列)。只是这一次,Price 列下的值将包含数字和非数字数据的组合: 然后您可以使用 astype(float) 方法执行转换为浮点数:
Data = 'Product': ['A','B'],'Price': ['250','270']
df = pd.DataFrame(Data)
df['Price'] = df['Price'].astype(float)
print (df)
print (df.dtypes)
【讨论】:
【参考方案4】:您的问题出在其他地方。你定义label = LabelEncoder()
- 然后你使用label.type
并得到AttributeError: 'str' object has no attribute 'type'
。
这意味着label
(此时此刻)是字符串类型,而应该报告为<class 'sklearn.preprocessing._label.LabelEncoder'>
跟在label = LabelEncoder()
之后!
当以这种方式拟合标签时,您已经得到整数,而不是字符串:不需要任何转换:
from sklearn import preprocessing
import pandas as pd
from random import random, choice
r = random
c = choice
df = pd.DataFrame([[r(),r(),r(),r(),c(["sitting","standing"])] for _ in range(6)],
columns=["quat1","quat2","quat3","quat4","activity"])
le = preprocessing.LabelEncoder()
df["label"] = le.fit_transform(df["activity"])
print(df)
print(df["label"].dtypes)
输出:
quat1 quat2 quat3 quat4 activity label
0 0.550365 0.051738 0.485262 0.194497 standing 1
1 0.656460 0.151324 0.131370 0.338022 standing 1
2 0.512595 0.501235 0.449589 0.302794 standing 1
3 0.440568 0.043643 0.817394 0.128534 sitting 0
4 0.364890 0.714289 0.683436 0.731021 sitting 0
5 0.708488 0.423278 0.624220 0.880735 standing 1
int32
要返回您的标签,请使用
print(le.inverse_transform([0])) # ['sitting']
见Examples on sklearn.preprocessing.LabelEncoder
documentation
【讨论】:
以上是关于将标签从字符串转换为浮点数的主要内容,如果未能解决你的问题,请参考以下文章
朴素贝叶斯高斯抛出 ValueError:无法将字符串转换为浮点数:'M'
sklearn-LinearRegression:无法将字符串转换为浮点数:'--'