Python UnboundLocalError:局部变量';矢量器&x27;分配前参考

Python UnboundLocalError:局部变量';矢量器&x27;分配前参考,python,python-3.x,Python,Python 3.x,有人能帮我找到以下代码中的错误吗:UnboundLocalError:赋值前引用的局部变量“vectorizer” def ngrams(data, labels, ntrain, mn=1, mx=1, nm=500, binary = False, donorm = False, stopwords = False, verbose = True, analyzer_char = False): f = data if donorm: f = normalize(f)

有人能帮我找到以下代码中的错误吗:UnboundLocalError:赋值前引用的局部变量“vectorizer”

def ngrams(data, labels, ntrain, mn=1, mx=1, nm=500, binary = False,
       donorm = False, stopwords = False, verbose = True, analyzer_char = False):

f = data
if donorm:
    f = normalize(f)

ftrain = f[:ntrain]
ftest  = f[ntrain:]
y_train = labels[:ntrain]

t0 = time()
analyzer_type = 'word'
if analyzer_char:
    analyzer_type = 'char'

if binary:
    vectorizer = CountVectorizer(max_n=mx,min_n=mn,binary=True)

elif stopwords:
    vectorizer = TfidfVectorizer(max_n=mx,min_n=mn,stop_words='english',
                                 analyzer=analyzer_type,sublinear_tf=True)

if verbose:
    print ("extracting ngrams... where n is [%d,%d]" % (mn,mx))

X_train = vectorizer.fit_transform(ftrain)
X_test = vectorizer.transform(ftest)
**
任何建议都将不胜感激,谢谢各位**

就像wjandrea在评论中所说的,如果
二进制
停止字
都不是真的,那么
矢量器
就不会被初始化。因此,当您尝试在其上调用
fit\u transform
时,它会出现异常。

请发布完整的堆栈跟踪。能否编辑您的问题以包括抛出错误的行?包括完整的堆栈跟踪也会很有帮助:-)从一眼看,如果
二进制
停止字
都为假,
矢量器
将未定义。虽然代码没有正确缩进,但您可以修改它。顺便说一句,欢迎来到SO!如果需要建议,请查看和。