我有一个句子列表,这些句子最终应该以随机梯度分类器结尾。我使用word2vec将单词转换为向量,对句子取平均并将这些向量提供给SGC。
在使用给定参数进行拟合和预测时,效果非常好。但是,当我应用gridSearch来为SGC查找最佳参数时,就会失败。
尽管我只在分类器上执行网格搜索,但我还是在类中添加了set_params和get_params。
这是我使用word2vec矢量化的课程。
#!/bin/ash
set -e
if [ "$1" = '/bin/ash' ]; then
echo "container booting..."
echo "creating directory having name $VAR2"
mkdir -p $VAR2
fi
exec "$@"
这是测试场景:
import numpy as np
from gensim.models import Word2Vec
from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
class MeanEmbeddingVectorizer(object):
def __init__(self, word2vec):
self.word2vec = word2vec
if self.word2vec.vector_size > 0:
self.dim = self.word2vec.vector_size
else:
self.dim = 0
def set_params(self, **parameters):
print("foo")
def get_params(self,deep=True):
return {}
def fit(self, X, y):
return self
def transform(self, X):
return np.array([
np.sum([self.word2vec[w] for w in words if w in self.word2vec]
or [np.zeros(self.dim)], axis=0)
for words in X
])
我不明白,为什么它不起作用。使用clfTest__alpha时,应该只为SGC优化alpha,不是吗?
有人可以帮我吗?