machine-learning - 使用单独的数据集进行模型验证
问题描述
抱歉,对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
生成 a fit
,然后生成 a transform
。所以这条线适合你的矢量化器,然后转换total_requests
为X
:
X = vectorizer.fit_transform(total_requests)
由于您的矢量化器必须只安装一次(以便每次使用矢量化器时都具有相同的特征矩阵),因此要计算Xprod
,您只需要使用transform
:
Xprod = vectorizer.transform(prod_good)
此外,您需要在安装矢量化器后计算 Xprod,因此在 X 之后计算 Xprod。
推荐阅读
- date - 如何判断 DateTime.Now() 是否在不同 DateTime 之后的一天
- react-native - 反应原生嵌套导航
- python - 使用 Matplotlib 预计算交互式图形的动画
- c - C:如何检查内存地址是否已写入?
- arrays - Marshal 一个 JSON Marshal 兼容映射到 XML
- php - MongoDB 在单个请求中使用 $in 2 次
- mysql - 无法在 PHP My Admin 中使用事件调度程序,如何为 cron 制作 PHP 文件?
- arrays - 如何转换 Hive 数组
在导出数据时键入 Vertica varchar - html - Safari 浏览器中的“高度:内在”是什么?
- docker - 无法使用 REST 请求解锁 WSO2 身份服务器用户