我正在寻求训练ML模型,以将单词分为几大类,例如:颜色。因此,我将有一些像这样的预定义颜色分区:
let blue = ["blue", "royal", "dark blue", "light blue"]
let red = ["red", "cardinal", "dusty red", "red polka dot"]
我想要
a)为了使模型能够对存储桶中已经存在的颜色进行分类,即如果给定了“蓝色”,它将知道blue
存储桶中是“蓝色”。
b)对于该模型,采用以前未见过的单词(例如“褪色的蓝色”)并将其分类到正确的存储桶中,在这种情况下,blue
基于某种可信度得分。>
我不确定这是否可行,我目前使用的方法是一系列if语句来进行分类,但是我想知道ML模型是否有更直观的方法来做到这一点。
答案 0 :(得分:1)
您可以尝试scikit学习:
import pandas as pd
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
data = {'blue': ["blue", "royal", "dark blue", "light blue"],
'red': ["red", "cardinal", "dusty red", "red polka dot"]}
train_data = pd.DataFrame(data).T.reset_index()
train_data.rename(columns={'index':'target'}, inplace=True)
# predictors
X = train_data.drop('target', axis=1)
X = X.apply(lambda x: ','.join(x), axis=1)
# target
y = train_data.target
# simple toy model
clf = Pipeline(steps=[
('vec', CountVectorizer(ngram_range=(1, 2),)),
('clf', LogisticRegression())
])
# train a model
clf.fit(X,y)
# predict a new value
print(clf.predict(['faded blue']))
希望这会将您设置到正确的路径:)