我如何将分类数据转换为二进制数据?

3

我想把分类数据转换为二进制数据。

数据=[[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,....

....................]

希望能得到这个答案的任何帮助都将是非常棒的,或者对于解决这个问题的一些建议将不胜感激。
提前感谢您。

http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html - Boa
1个回答

0

我猜你想要创建一个向量,指示输入向量中每个值的出现次数,而不考虑其位置。我的解决方案是使用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]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接