PySpark: Can't pickle CountVectorizerModel - TypeError: Cannot serialize socket object (but why is the socket library being used?)
PySpark: Can't pickle CountVectorizerModel - TypeError: Cannot serialize socket object (but why is the socket library being used?)
我注意到,与 Sci-kit learn 不同,CountVectorizer 的 PySpark 实现使用套接字库,因此我无法对其进行 pickle。
是否有任何解决方法或其他方法来持久化矢量化器?我需要矢量化模型,因为我接收输入文本数据,我想将其转换为与测试数据中使用的相同类型的词向量。
我尝试查看 CountVectorizer 源代码,但没有看到套接字库的任何明显用途。
任何想法都非常感谢,谢谢!
这是我尝试腌制模型的方法:
with open("vectorized_model.pkl", "wb") as output_file:
pickle.dump(vectorized_model, output_file)
导致:类型错误:无法序列化套接字对象
这是模型的原始创建:
from pyspark.ml.feature import CountVectorizer
import dill as pickle
vectorizer = CountVectorizer()
vectorizer.setInputCol("TokenizedText")
vectorizer.setOutputCol("Tfidf")
vectorized_model = vectorizer.fit(training_data)
vectorized_model.setInputCol("TokenizedText")
所以我意识到,我可以使用 vectorized_model.save()
和 CountVectorizerModel.load()
来保存和检索模型,而不是酸洗。
我注意到,与 Sci-kit learn 不同,CountVectorizer 的 PySpark 实现使用套接字库,因此我无法对其进行 pickle。
是否有任何解决方法或其他方法来持久化矢量化器?我需要矢量化模型,因为我接收输入文本数据,我想将其转换为与测试数据中使用的相同类型的词向量。
我尝试查看 CountVectorizer 源代码,但没有看到套接字库的任何明显用途。
任何想法都非常感谢,谢谢!
这是我尝试腌制模型的方法:
with open("vectorized_model.pkl", "wb") as output_file:
pickle.dump(vectorized_model, output_file)
导致:类型错误:无法序列化套接字对象
这是模型的原始创建:
from pyspark.ml.feature import CountVectorizer
import dill as pickle
vectorizer = CountVectorizer()
vectorizer.setInputCol("TokenizedText")
vectorizer.setOutputCol("Tfidf")
vectorized_model = vectorizer.fit(training_data)
vectorized_model.setInputCol("TokenizedText")
所以我意识到,我可以使用 vectorized_model.save()
和 CountVectorizerModel.load()
来保存和检索模型,而不是酸洗。