在sklearn术语中,这称为部分拟合,而您不能使用来实现
TfidfVectorizer。有两种解决方法:
- 连接两个训练集并重新向量化
- 使用
HashingVectorizer
支持局部拟合的。但是,get_feature_names
由于存在散列特征,因此没有方法,因此不会保留原始特征。另一个优点是,这将大大提高内存效率。
第一种方法的示例:
from sklearn.feature_extraction.text import TfidfVectorizerimport numpy as nptrain_data1 = ["football is the sport", "gravity is the movie", "education is important"]vectorizer = TfidfVectorizer(stop_words='english')print("Applying first train data")X_train = vectorizer.fit_transform(train_data1)print(vectorizer.get_feature_names())print("nnApplying second train data")train_data2 = ["cricket", "Transformers is a film", "AIMS is a college"]X_train = vectorizer.transform(train_data2)print(vectorizer.get_feature_names())print("nnApplying fit transform onto second train data")X_train = vectorizer.fit_transform(train_data1 + train_data2)print(vectorizer.get_feature_names())输出:
Applying first train data['education', 'football', 'gravity', 'important', 'movie', 'sport']Applying second train data['education', 'football', 'gravity', 'important', 'movie', 'sport']Applying fit transform onto second train data['aims', 'college', 'cricket', 'education', 'film', 'football', 'gravity', 'important', 'movie', 'sport', 'transformers']



