矩阵奇异值分解遇到难题

img

img

img

img

img

img

图12所示两个矩阵只有划圈的地方所有不同,图三四所示最小奇异值也并无过大差距,为何图56最小奇异值对应的两列V矩阵差距这么大?

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7659262
  • 这篇博客你也可以参考下:最大似然估计推导最小二乘法以及解释矩阵不可逆的问题
  • 除此之外, 这篇博客: 微博大 V 用户画像与热点话题分析中的 二、清洗数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • user_df的数据不需要清洗,来看df。

    随便从text中抽一条看看:

    在这里插入图片描述
    可见里面主要信息为中文,其余还有一些字符、@、英文,特别要注意的是,这是微博数据,也就是说[]里的内容并不是真正的文本,而是表情,如果没有注意这个,那提取关键词的时候这些表情就会变成最多的词,因为表情才是用户发的最多的,什么[哈哈]、[哭]什么的。

    值得注意的是,除了这些之外,在观察了text文本数据内容,并且在后面提取了关键词后我们会发现,“转发微博”、“微博”、“哈哈”、“啊”这些词出现的频率很高,但是并没有实际含义,而且“哈哈”和“啊”这类词的长度不定,可以是任意个“哈”和“啊”,所以不能在停用词里去掉。所以根据这些,我们来清洗text文本数据。

    df.text.replace(r'\[.*?\]','',regex=True,inplace=True)
    df.text.replace(r'转发微博','',regex=True,inplace=True)
    df.text.replace(r'轉發微博','',regex=True,inplace=True)
    df.text.replace(r'微博','',regex=True,inplace=True)
    df.text.replace(r'转发','',regex=True,inplace=True)
    df.text.replace(r'哈*','',regex=True,inplace=True)
    df.text.replace(r'啊*','',regex=True,inplace=True)
    df['text']=df['text'].str.replace(r'[^\u4e00-\u9fa5]','')
    df
    

    在这里插入图片描述

    得到的结果里只包含中文。但是有些行已经为空了,防止对我们后续造成影响,我们将这些空行去掉。首先填充Nan:

    df.text=df.text.astype(str)
    df.replace(to_replace=r'^\s*$',value=np.nan,regex=True,inplace=True)
    df
    

    在这里插入图片描述

    然后去掉带Nan的行并将索引重排:

    df.dropna(subset=['text'],axis=0,how='any',inplace=True)
    df.reset_index(drop=True,inplace=True)
    df
    

    在这里插入图片描述

    到这里为止数据就算是清理好了。

  • 您还可以看一下 王仕宇老师的v2.0 个人博客管理系统 【附源码】【附开发工具】课程中的 系列课程介绍小节, 巩固相关知识点