Python 创建和测试分类器

Python 创建和测试分类器,python,machine-learning,classification,multiclass-classification,Python,Machine Learning,Classification,Multiclass Classification,我在excel文件中有两列。 第1行有确切的用户输入,第2行有其原因。e、 g ROW 1 ROW 2 money deducted cause 1 delivery is late cause 2 something here cause 48 payment pro

我在excel文件中有两列。 第1行有确切的用户输入,第2行有其原因。e、 g

ROW 1                                     ROW 2
money deducted                            cause 1
delivery is late                          cause 2
something here                            cause 48
payment problem                           cause 1
.                                         .
.                                         .
该任务是实现一个分类器,当下一次给出特定用户输入时,它可以将其分类为原因之一,即使分类器了解这些情况并预测未来的值


我对分类有一些了解,但我真的很想知道如何使用one vs rest分类器实现这一点。

这就是使用scikit learn实现此分类器的方法。根据目标_名称索引,将所有训练句子传递给X_train和相应的标签

X_train = np.array(["money deducted",
                    "delivery is late",
                    "something here",
                    "payment problem"])
y_labels = [(1, ), (2, ), (3, ), (1, )]
y_train = MultiLabelBinarizer().fit_transform(y_labels)
target_names = ['cause1', 'cause2', 'cause48']
classifier = Pipeline([
    ('vectorizer', CountVectorizer()),
    ('tfidf', TfidfTransformer()),
    ('clf', OneVsRestClassifier(LinearSVC()))])
classifier.fit(X_train, y_train)
这就是训练分类器的全部内容,然后您可以轻松地预测您想要的任何内容。 更多参考:

然后将y_标签拟合并转换为二进制:

mlb.fit_transform(y_labels)
然后预测如下:

mlb.inverse_transform(classifier.predict(X_test))
这将为您提供类标签,然后您可以将其作为索引传递给目标名称

X_train = np.array(["money deducted",
                    "delivery is late",
                    "something here",
                    "payment problem"])
y_labels = [(1, ), (2, ), (3, ), (1, )]
y_train = MultiLabelBinarizer().fit_transform(y_labels)
target_names = ['cause1', 'cause2', 'cause48']
classifier = Pipeline([
    ('vectorizer', CountVectorizer()),
    ('tfidf', TfidfTransformer()),
    ('clf', OneVsRestClassifier(LinearSVC()))])
classifier.fit(X_train, y_train)

希望有帮助

尝试阅读分类算法,如
朴素贝叶斯分类器
。链接到一个简单的教程:@Thiru有没有关于如何使用一个或多个Classifier实现的想法?对于相同的导入,我有点困惑。我已经导入了
sklearn
,但仍然存在错误。我还需要导入什么?
从sklearn.pipeline导入管道从sklearn.feature\u extraction.text导入countvectorier
从sklearn.svm导入LinearSVC
从sklearn.feature\u extraction.text导入TfidfTransformer从sklearn.multi类导入OneVsRestClassifier
来自sklearn。预处理导入多LabelBinarizer
非常感谢!救了我一天!:)我有一个疑问,如果第1行具有相同的用户输入,而第2行具有与之对应的不同问题,该怎么办。在这种情况下,分类器不会预测任何内容。可能的修复方法是什么?在这种情况下,您可以使用阈值。如果预测值高于某个阈值,则认为它是正确的,否则就不正确。