我在Python上使用sklearn进行一些聚类。我已经训练了200,000个数据,下面的代码效果很好。
corpus = open("token_from_xml.txt")
vectorizer = CountVectorizer(decode_error="replace")
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))
km = KMeans(30)
kmresult = km.fit(tfidf).predict(tfidf)
但是,当我拥有新的测试内容时,我想将其群集到我训练过的现有群集中。所以我想知道如何
保存IDF结果,以便对新的测试内容执行TFIDF,并确保新测试内容的结果具有相同的数组长度。
提前致谢。
更新
如果其中一个包含受过训练的IDF结果,则可能需要将“ transformer”或“ tfidf”变量保存到文件(txt或其他)。
更新
例如。我有训练数据:
["a", "b", "c"]
["a", "b", "d"]
并执行TFIDF,结果将包含4个特征(a,b,c,d)
当我 测试时 :
["a", "c", "d"]
看看它属于哪个html" target="_blank">集群(已经由k-means组成)。TFIDF将仅给出具有3个特征(a,c,d)的结果,因此k均值的聚类将下降。(如果我测试了["a", "b", "e"]
,可能还有其他问题。)
那么,如何存储用于测试数据的功能列表(甚至将其存储在文件中)?
更新
解决了,请参阅下面的答案。
我通过保存成功保存了功能列表vectorizer.vocabulary_
,并通过CountVectorizer(decode_error="replace",vocabulary=vectorizer.vocabulary_)
以下代码:
corpus = np.array(["aaa bbb ccc", "aaa bbb ddd"])
vectorizer = CountVectorizer(decode_error="replace")
vec_train = vectorizer.fit_transform(corpus)
#Save vectorizer.vocabulary_
pickle.dump(vectorizer.vocabulary_,open("feature.pkl","wb"))
#Load it later
transformer = TfidfTransformer()
loaded_vec = CountVectorizer(decode_error="replace",vocabulary=pickle.load(open("feature.pkl", "rb")))
tfidf = transformer.fit_transform(loaded_vec.fit_transform(np.array(["aaa ccc eee"])))
这样可行。tfidf
具有与训练数据相同的特征长度。
4.3 使用Pipeline保存结果 好了,爬虫编写完成,现在我们可能还有一个问题:我如果想把抓取的结果保存下来,要怎么做呢?WebMagic用于保存结果的组件叫做Pipeline。例如我们通过“控制台输出结果”这件事也是通过一个内置的Pipeline完成的,它叫做ConsolePipeline。那么,我现在想要把结果用Json的格式保存下来,怎么做呢?我只需要将Pipeline的实现换成"Jso
如果你默认使用Markdown编辑器编辑文档,但是文字中存在一些 Markdown 的保留字。 例如: 表中中出现 | 需要输入 ` 需要成对的出现 [ ] >和<也是需要转义后才能显示。 等等,一些特殊需求。可以通过unicode编码来解决。 将要输入的字符进行转义,之后使用转义字符即可。 常见转义字符: 原字符 转义字符 | | ` ` ] ] [ [ > > < < @ @ #
我在neo4j浏览器中运行不同类型的密码查询来检查我在neo4j图形数据库中的数据。这是一个离线分析工作,所以数据库是只读的(我可以写它,但不会有新的数据) 我想有一个"neo4j浏览器控制台会话"保存查询的结果,供以后使用,如: 因此,以后我可以运行多个查询(比前一个查询运行得更快),如 我该怎么做?我知道我可以使用“with”将它们放在一起,但第一个慢速查询将运行多次,我不希望这样。 目前我在
在我的骆驼路线中,我使用来自队列的消息;每条消息都包含标题“pad”(路径)和文件前缀。例如: 消息1: pad="/some/dir ",file="AAA "消息2: pad="/another/dir ",file="BRD " 每条消息,我想要创建一个文件: 消息1: /一些/目录/AAA.tar (包含所有文件 /一些/目录/AAA*) 消息2: /另一个/目录/BRD.tar (包含
鉴于此: 如果没有为变量“state”提供值,那么我希望保留原始标签('
对于任何使用jmeter进行api功能测试的人来说,报告并不是很好。有人使用http://extentreports.com/这样的东西来显示他们的测试结果吗?对其他更好地显示测试结果的方法有什么想法吗?在尝试使用一个主要关注性能测试和测试结果的工具时,当我们测试REST API调用和测试结果时,这并不起作用。例如,能够捕获在测试运行期间创建的数据是很好的,但是jmeter中内置的报告都没有做到这