使用单独的数据集进行模型验证

Model validation with separate dataset

抱歉,sklearn 很新。我正在尝试使用外部数据集验证模型以对文本字符串进行二进制分类。我已经训练了模型,但想将它用于另一个不同大小的数据集进行预测,而不是将数据包含在初始数据集拆分中。这甚至可能吗?

初始分裂

vectorizer = TfidfVectorizer(min_df=0.0, analyzer="char", sublinear_tf=True, ngram_range=(3, 3))
Xprod = vectorizer.fit_transform(prod_good)
X = vectorizer.fit_transform(total_requests)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=21)

测试模型

linear_svm=LinearSVC(C=1)
linear_svm.fit(X_train, y_train)
y_pred = linear_svm.predict(X_test)
score_test = metrics.accuracy_score(y_test, y_pred)
matrix = confusion_matrix(y_test, y_pred)

新预测

newpred = linear_svm.predict(Xprod)
...
Error:
ValueError: X has 4553 features per sample; expecting 24422

我想我误解了这里的一些基本概念

函数fit_transform生成一个fit,然后生成一个transform。所以这条线适合你的矢量化器,然后将 total_requests 转换为 X:

X = vectorizer.fit_transform(total_requests)

由于您的矢量化器只能安装一次(以便每次使用矢量化器时都具有相同的特征矩阵),要计算 Xprod,您只需使用 transform :

Xprod = vectorizer.transform(prod_good)

此外,您需要在向量化器拟合后计算 Xprod,因此在 X 之后计算 Xprod。