将列中的字符串转换为分类变量

临时调制

我想将填充字符串的列转换为分类变量,以便可以运行统计信息。但是,我在进行这种转换时遇到了困难,因为我是Python的新手。

这是我的代码示例:

# Open txt file and provide column names
data = pd.read_csv('sample.txt', sep="\t", header = None,
                   names = ["Label", "I1", "I2", "C1", "C2"])
# Convert I1 and I2 to continuous, numeric variables
data = data.apply(lambda x: pd.to_numeric(x, errors='ignore'))
# Convert Label, C1, and C2 to categorical variables
data["Label"] = pd.factorize(data.Label)[0]
data["C1"] = pd.factorize(data.C1)[0]
data["C2"] = pd.factorize(data.C2)[0]

# Split the predictors into training/testing sets
predictors = data.drop('Label', 1)
msk = np.random.rand(len(predictors)) < 0.8
predictors_train = predictors[msk]
predictors_test = predictors[~msk]

# Split the response variable into training/testing sets
response = data['Label']
ksm = np.random.rand(len(response)) < 0.8
response_train = response[ksm]
response_test = response[~ksm]

# Logistic Regression
from sklearn import linear_model
# Create logistic regression object
lr = linear_model.LogisticRegression()

# Train the model using the training sets
lr.fit(predictors_train, response_train)

但是,我会收到此错误:

ValueError: could not convert string to float: 'ec26ad35'

ec26ad35值是来自分类变量C1的字符串C2我不确定发生了什么:我不是已经将字符串转换为分类变量了吗?为什么错误说明它们仍然是字符串?

使用data.head(30),这是我的数据:

>> data[["Label", "I1", "I2", "C1", "C2"]].head(30)
    Label   I1   I2        C1        C2
0       0  1.0    1  68fd1e64  80e26c9b
1       0  2.0    0  68fd1e64  f0cf0024
2       0  2.0    0  287e684f  0a519c5c
3       0  NaN  893  68fd1e64  2c16a946
4       0  3.0   -1  8cf07265  ae46a29d
5       0  NaN   -1  05db9164  6c9c9cf3
6       0  NaN    1  439a44a4  ad4527a2
7       1  1.0    4  68fd1e64  2c16a946
8       0  NaN   44  05db9164  d833535f
9       0  NaN   35  05db9164  510b40a5
10      0  NaN    2  05db9164  0468d672
11      0  0.0    6  05db9164  9b5fd12f
12      1  0.0   -1  241546e0  38a947a1
13      1  NaN    2  be589b51  287130e0
14      0  0.0   51  5a9ed9b0  80e26c9b
15      0  NaN    2  05db9164  bc6e3dc1
16      1  1.0  987  68fd1e64  38d50e09
17      0  0.0    1  8cf07265  7cd19acc
18      0  0.0   24  05db9164  f0cf0024
19      0  7.0  102  3c9d8785  b0660259
20      1  NaN   47  1464facd  38a947a1
21      0  0.0    1  05db9164  09e68b86
22      0  NaN    0  05db9164  38a947a1
23      0  NaN    9  05db9164  08d6d899
24      0  0.0    1  5a9ed9b0  3df44d94
25      0  NaN    4  5a9ed9b0  09e68b86
26      1  0.0    1  8cf07265  942f9a8d
27      1  0.0   20  68fd1e64  38a947a1
28      1  0.0   78  68fd1e64  1287a654
29      1  3.0    0  05db9164  90081f33

编辑:将数据帧拆分为训练和测试数据集后,由于缺少数据而导致的错误。也不知道这里发生了什么。

# Impute missing data
>> from sklearn.preprocessing import Imputer
>> imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
>> predictors_train = imp.fit_transform(predictors_train)
TypeError: float() argument must be a string or a number, not 'function'
阿米·塔沃里(Ami Tavory)

正如@ayhan在评论中指出的那样,您可能要在此处使用伪变量这是因为从您的数据看来,文本标签中确实没有任何排序的可能性。

这可以通过轻松完成pandas.get_dummies,例如:

pd.get_dummies(df.C1)

请注意,这将返回常规DataFrame:

>>> pd.get_dummies(df.C1).columns
Index([u'05db9164', u'1464facd', u'241546e0', u'287e684f', u'3c9d8785',
     u'439a44a4', u'5a9ed9b0', u'68fd1e64', u'8cf07265', u'be589b51'],
     dtype='object')

因此,您可能希望将其与horizo​​ntal一起使用concat


如果您实际上实际上是想将标签转换为数字形式(似乎不太可能),则可以看看sklearn.preprocessing.LabelEncoder

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将变量转换为字符串

来自分类Dev

将变量转换为字符串

来自分类Dev

将列转换为字符串

来自分类Dev

Python:将unicode变量转换为字符串变量

来自分类Dev

如何将隐藏在AppleScript字符串中的变量转换为可读变量?

来自分类Dev

将列表变量转换为字符串

来自分类Dev

将变量数组转换为字符串

来自分类Dev

Python将字符串转换为变量名

来自分类Dev

我可以将字符串转换为变量吗?

来自分类Dev

R将字符串转换为变量

来自分类Dev

Swift:将字符串转换为变量名

来自分类Dev

R:将变量名转换为字符串

来自分类Dev

将变量数组转换为字符串

来自分类Dev

C#MVC-将字符串转换为变量

来自分类Dev

将字符串转换为实例变量

来自分类Dev

使用setattr()将字符串转换为变量

来自分类Dev

将变量名转换为字符串的说明

来自分类Dev

JavaScript将字符串转换为变量名?

来自分类Dev

将字符串转换为VBA全局变量

来自分类Dev

如何将字符串转换为多个变量

来自分类Dev

将变量数组转换为字符串

来自分类Dev

将奇数Stata字符串变量转换为日期

来自分类Dev

我可以将字符串转换为变量吗?

来自分类Dev

将字符串变量转换为十六进制

来自分类Dev

将列表变量转换为字符串

来自分类Dev

使用setattr()将字符串转换为变量

来自分类Dev

将任何R变量的值转换为字符串

来自分类Dev

PHP-将字符串转换为变量

来自分类Dev

JavaScript将字符串转换为变量名?