对看不见的数据使用文本分类器

数据挖掘 逻辑回归
2022-02-25 22:25:20

我已经训练了一些模型来对两类文本进行分类。逻辑回归是最好的。现在我如何在看不见的数据上测试它?我试过这个:

def train_model():
 classifier.fit(feature_vector_train, label)
 predictions = classifier.predict(feature_vector_valid)
 joblib.dump(classifier, url+name)
...

load_model =joblib.load('my_model.pkl)
result = load_model.score('testx')

它告诉我我需要输入。但是,如果它是新的,我没有标签。我错过了什么?

3个回答

欢迎来到论坛。

我的理解是您想使用先前训练的模型来标记新数据点?如果是这样,你会想要使用.predict(X). 他们说从sklearn的文档中。

scikit-learn 中的所有监督估计器都实现了一个 fit(X, y) 方法来拟合模型 > 和一个 predict(X) 方法,该方法给定未标记的观察值 X,返回预测的标签 y。来源

另一个注意事项是,您不能将直接字符串传递给模型 - 您需要像对训练集所做的那样预处理数据。这是构建分类器并使用它来预测新点的一个很好的例子。

如果您有任何关于我误解的问题,请告诉我。

问题是我认为的这条线。

result = load_model.score('testx')

方法的目的score是计算模型的好坏。这将检查模型的预测与预测变量的实际值的接近程度。这就是为什么您需要为 score 函数提供目标变量的值y

如果要预测值,请使用predict@James C 指出的方法。

在对任何看不见的数据进行预测时,您必须牢记以下几点。

  1. 将你的句子转换成一个数组,如
testx = "i like that movie"
testx = np.array(testx)
  1. 然后执行预处理,如果您应用了删除停用词、创建 ngram
  2. 现在,使用您在训练时使用过的方法(如 countvectorization 和 td-idf)将该单句数组转换为特征。确保您也保存了该模型。在预测阶段加载它
load_cv = joblib.load('cv_model.pkl')
testx = load_cv.transform(testx)
  1. 完成所有这些步骤后,然后加载您的模型
load_model = joblib.load('my_model.pkl')
result = load_model.predict(testx)