小编Eri*_*c L的帖子

如何在 scikit learn 中矢量化具有多个文本列的数据框而不会丢失对原始列的跟踪

我有几个 Pandas 数据系列,想训练这些数据映射到输出 df["output"]。

到目前为止,我已将系列合并为一个,并用逗号分隔每个系列。

df = pd.read_csv("sourcedata.csv")
sample = df["catA"] + "," + df["catB"] + "," + df["catC"]

def my_tokenizer(s):
    return s.split(",")

vect = CountVectorizer()
vect = CountVectorizer(analyzer='word',tokenizer=my_tokenizer, ngram_range=(1, 3), min_df=1) 
train = vect.fit_transform(sample.values)

lf = LogisticRegression()
lfit = lf.fit(train, df["output"])
pred = lambda x: lfit.predict_proba(vect.transform([x]))
Run Code Online (Sandbox Code Playgroud)

问题是这是一个词袋方法,没有考虑
- 每个类别中的唯一顺序。(“橙香蕉”与“香蕉橙”不同)
-文本是一个类别的含义与另一个类别不同(一个类别中的“美国”可能意味着原产国与目的地国家/地区)

例如,整个字符串可以是:
pred("US, Chiquita Banana, China")
A 类:原产国
B 类:公司和水果类型(订单很重要)
C 类:目的地

我目前的做法是忽略任何类型的排序,并且出于某种原因还在我的功能名称中生成了额外的空格(这会使事情更加混乱):

In [1242]: vect.get_feature_names()[0:10]
Out[1242]:
[u'',
 u' ',
 u'  ',
 u'   ',
 u'    ',
 u'     ',
 u'   US', …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning pandas scikit-learn

3
推荐指数
1
解决办法
8989
查看次数

标签 统计

machine-learning ×1

numpy ×1

pandas ×1

python ×1

scikit-learn ×1