错误合集

Posted liuyujie-zhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误合集相关的知识,希望对你有一定的参考价值。

我最开始为什么会搞这些问题,都是因为这个错误:

 

所以我去百度了empty vocabulary; perhaps the documents only contain stop words,但是这个错误真的很难搞,百度了一圈也没搞明白解决办法,真的无语。

所以我开始想会不会是我的cutWords.pickle文件出了问题,于是开始打开文件输出:

我的pickle文件你咋了,昨天明明还好好的,咋变红了,好吓人,去搜了一下:

 

应该是文件太大了,所以我只输出了一个就没问题了:

 

所以pickle文件没有问题。

是不是我不该替换为空格呀,因为下面这个就没有分词且替换为空格,当时我为什么替换呀。

 

 它这里的fit_transform(corpus)中的corpus可以是这种吗,然后我突然想起来我之前看到的逻辑回归的博主好像就是这样写的,我要回去看看。而且vectorizer = TfidfVectorizer(tokenizer=preprocess)中的tokenizer=preprocess这个作用是什么啊。

 因为这里要用到mailContent_list,但每次再运行太麻烦了,所以我也把它生成pickle文件了,但是我是pycharm生成的:

 import jieba
 import re
 import os
 import pickle
 
 def getFilePathList2(rootDir):
     filePath_list = []
     for walk in os.walk(rootDir):
         part_filePath_list = [os.path.join(walk[0], file) for file in walk[2]]
         filePath_list.extend(part_filePath_list)
     return filePath_list
 filePath_list = getFilePathList2(\'./trec06c/data\')
 
 mailContent_list = []
 for filePath in filePath_list:
     with open(filePath, errors=\'ignore\') as file:
         file_str = file.read()
         mailContent = file_str.split(\'\\n\\n\', maxsplit=1)[1]
         mailContent_list.append(mailContent)
 mailContent_list = [re.sub(\'\\s+\', \'\', k) for k in mailContent_list]
 mailContent_list = [re.sub("([^\\u4e00-\\u9fa5])", \'\', k) for k in mailContent_list]
 
 with open(\'mailContent_list.pickle\', \'wb\') as file:
     pickle.dump(mailContent_list, file)

现在我要试一下博主的代码,就是没有这句:mailContent_list = [re.sub("([^\\u4e00-\\u9fa5])", \'\', k) for k in mailContent_list],这时候的输出结果是3241

然后输出看一下这3241个特征词,都是句子,并不是词。

 然后我如果加上了这句:mailContent_list = [re.sub("([^\\u4e00-\\u9fa5])", \'\', k) for k in mailContent_list],这时候的输出结果是44

 

 然后也输出看一下这44个特征词,如下图,这哪是特征词,明明是句子:

 

 

 还是按我之前的来,嗯。

 总共有7842个特征词,看下能不能输出来特征词。

 可以欸,可是我在pycharm输不出来欸,就是下面这个错误:

 

 

 

 

 

 

 

 

 怀疑人生了,难道刚刚不能运行是假的。

第二天我又试着运行了一下,也是可以运行的。

于是就到了下面这个问题,特征个数不符,即我分完后只有54个词,而predict()中的参数需要7842个词:

 

于是我想到把特征数扩为相同的,就是下面这个代码:

        # 获取两个列表中的相同元素
        common_elements = np.intersect1d(features, cutWords)
        # 创建一个和features长度相同的全0数组
        words = np.zeros_like(features)  
        for element in common_elements:
            # 获取相同元素在features中的下标
            indices = np.where(np.array(features) == element)
            # 将相同元素在words中的下标设为1
            words[indices] = 1  

并且也实现了,没有任何问题,就是[1,0,0...]这种,我想着改成这种形式了应该不会出错了吧,但我用predict时又提示我出错。

就是这个错误:ValueError: Expected 2D array, got 1D array instead: array=[0. 0. 0. ... 0. 0. 0.]. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.但是这个错搜都搜不到。

翻译成中文是应该是二维的数组,但我输入的是一维的。

 

 

 根本不会解决。

 

 

 这个错误到底怎么回事啊。

搜了一下二维数组:

于是我去chatGPT上搜到了解决办法,改完之后又出现了下面这个错误:

ValueError: Shape of passed values is (7842, 1), indices imply (7842, 7842),然后又胡搞瞎搞,根本不会。

然后我想到之前看过的一篇文章里有介绍怎么对一封邮件分类,于是我去看他的文章。

 

 好像是这一步:

 

 

 就是将上面扩的列表words改成二维的:words_martrix =pd.DataFrame([words],columns = features)

这样再使用predict函数就不会再出现问题了。下面是使用代码:

 

但是有一个疑问就是我忘记了0和1哪个是正常邮件和垃圾邮件。

于是我print:

 

 

 

 

 与index对比,发现spam垃圾邮件是1:

 

然后这是我的运行结果:

 

 完美!perfect!

 

错误语句合集及整理方法

试用Djiango的时候发现执行mange.py makemigrations 和 migrate是会报错,少位置参数on_delete,查了一下是因为指定外键的方式不对,改一下就OK了。

 # 英雄出现的书 一对多设计 多方持有一方的外键
    # hbook = models.ForeignKey(BookInfo)
    hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE)

 

以上是关于错误合集的主要内容,如果未能解决你的问题,请参考以下文章

错误合集

c 错误合集

spyder错误合集

C++问题,错误合集

存储过程常见错误合集

代码错误合集—1—运算符优先级的错误—i++++ii+1的区别