我想将分类数据更改为二进制数据。 我的数据看起来像这样
数据= [[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,...
....................]
获得这个答案的任何帮助都会很棒或者解决这个问题的一些建议会非常感激。
提前谢谢
答案 0 :(得分:0)
我猜你想要一个向量来指示输入向量中每个值的出现次数,而不考虑值的位置。我的解决方案是使用CountVectorizer
。 CountVectorizer
专为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]]