【问题标题】:How do I change categorical data into binary data?如何将分类数据更改为二进制数据?
【发布时间】:2016-06-26 03:23:26
【问题描述】:

我想将分类数据更改为二进制数据。 我的数据是这样的

数据=[[1,2,3,....],[2,3,4,...],[3,8,5,....],...... ..]

这里 1 和 2 没有任何联系,所以我必须将这些数字视为分类数据。

import pandas as pd

from sklearn.feature_extraction import DictVectorizer

converted_val = data.T.to_dict().values()

vectorizer = DictVectorizer(sparse=False)

vec_x = vectorizer.fit_transform( converted_val )

我期待的结果是:

[1,2,3,4,5,6,7,8......

1,1,1,0,0,0,0,0,....

0,1,1,1,0,0,0,0,....

0,0,1,0,1,0,0,1,....

........]

任何帮助得到这个答案都会很好,或者一些解决这个问题的建议将非常感激。

提前谢谢你

【问题讨论】:

标签: python python-2.7 pandas


【解决方案1】:

我猜你想创建一个向量来指示输入向量中每个值的出现次数,而不考虑值的位置。我的解决方案是使用CountVectorizerCountVectorizer 专为 string 设计。要将CountVectorizer 应用于数字向量,我将一些参数传递给下面的CountVectorizer

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer

data = pd.DataFrame([[1,2,30],[2,30,4],[3,8,5]])
converted_val = data.as_matrix()

vectorizer = CountVectorizer( lowercase=False, tokenizer = lambda x:x )

vec_x = vectorizer.fit_transform( converted_val )

通过以下代码检查:

print(vectorizer.get_feature_names()) 
print(vec_x.toarray())

输出:

[1, 2, 3, 4, 5, 8, 30]
[[1 1 0 0 0 0 1]
 [0 1 0 1 0 0 1]
 [0 0 1 0 1 1 0]]

【讨论】:

    猜你喜欢
    • 2020-02-16
    • 2017-07-15
    • 2016-05-05
    • 1970-01-01
    • 2019-01-28
    • 2014-04-19
    • 2014-03-09
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多