2301_76994578 2024-06-17 09:19 采纳率: 0%
浏览 5

python运行显示框无响应

代码运行之后,显示框无响应
不知道代码中是否存在错误
修改过代码也不清楚

img

img

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-17 09:19
    关注

    引自免费微信小程序:皆我百晓生

    从描述来看,遇到的问题是Python代码执行后,matplotlib生成的图表窗口无响应。这通常意味着在图表绘制过程中遇到了阻塞,或者是代码中的某些部分没有正确地关闭图表窗口,导致程序挂起。

    首先,检查代码中是否有任何明显的错误,比如语法错误、函数调用错误等。在你提供的代码片段中,确实存在一些明显的错误,比如:

    1. Figure 1(未响应) 这一行看起来像是注释的一部分,但似乎包含了一些乱码,应当确保所有的注释都是清晰且正确的。
    2. 在导入模块时,import语句中有多余的空格和特殊字符,例如 import pandas as pd 正确,而 dimport pandas as pd 是错误的。
    3. 函数定义中也有类似的错误,如 efrom sklearn.metrics import precision_score,recall_score 应当改为 from sklearn.metrics import precision_score, recall_score
    4. 字符串中的转义字符使用不正确,例如路径字符串中的双反斜杠 \ 应当被正确转义,或者直接使用原始字符串(r 前缀)。

    接下来,针对图表无响应的问题,有几点可以尝试解决:

    修改代码

    确保所有导入语句正确,并修复字符串路径中的转义问题。下面是一个修正后的代码示例:

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.metrics.pairwise import cosine_similarity
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import precision_score, recall_score
    
    def read_data(file_path):
        data = pd.read_csv(file_path, sep='\t', header=None, names=['user_id', 'news_type', 'click'])
        return data
    
    def plot_bar(data, column, title):
        plt.figure(figsize=(10, 6))
        data[column].value_counts().plot(kind='bar')
        plt.title(title)
        plt.xlabel(column)
        plt.ylabel('Count')
        plt.show()
    
    def plot_pie(data, column, title):
        plt.figure(figsize=(10, 6))
        data[column].value_counts().plot(kind='pie', autopct='%1.1f%%')
        plt.title(title)
        plt.ylabel('')
        plt.show()
    
    def remove_special_characters(data, column):
        data[column] = data[column].str.replace(r'[\w\s]', '')
        return data
    
    # 读取数据
    data = read_data(r'C:\Users\TM\Desktop\z\data.txt')
    
    # 绘制不同类型新闻的数量分布柱状图
    plot_bar(data, 'news_type', 'News Type Distribution')
    
    # 绘制不同类型新闻用户浏览量饼图
    plot_pie(data, 'news_type', 'News Type User Views')
    
    # 对数据进行特殊字符处理
    data = remove_special_characters(data, 'news_type')
    
    # 计算不同新闻之间的相似度
    news_matrix = data.pivot_table(index='user_id', columns='news_type', values='click', fill_value=0)
    cosine_sim = cosine_similarity(news_matrix)
    
    # 使用基于物品的系统过滤推荐算法建立推荐模型
    train_data, test_data = train_test_split(data, test_size=0.2, random_state=42)
    train_matrix = train_data.pivot_table(index='user_id', columns='news_type', values='click', fill_value=0)
    test_matrix = test_data.pivot_table(index='user_id', columns='news_type', values='click', fill_value=0)
    
    # 计算预测评分
    predicted_ratings = np.dot(train_matrix, cosine_sim) / np.array([np.abs(cosine_sim).sum(axis=1)]).T
    
    # 将预测评分转换为二值化的目标变量
    threshold = 0.5
    predicted_binary = (predicted_ratings > threshold).astype(int)
    
    # 计算精度和召回率
    precision = precision_score(test_matrix.values.flatten(), predicted_binary.flatten(), average='micro')
    recall = recall_score(test_matrix.values.flatten(), predicted_binary.flatten(), average='micro')
    print('Precision: {:.2f}'.format(precision))
    print('Recall: {:.2f}'.format(recall))
    

    调整matplotlib行为

    如果上述修改仍然不能解决问题,可能是因为matplotlib在非交互式环境下运行时的行为。在脚本中加入以下代码,确保图表窗口正确关闭:

    import matplotlib.pyplot as plt
    
    # ... 其他代码 ...
    
    if __name__ == "__main__":
        # ... 执行绘图代码 ...
        
        plt.close('all')  # 关闭所有图表窗口
    

    这将确保在所有图表绘制完毕后,所有窗口都被正确关闭,防止阻塞。

    如果在Jupyter Notebook中运行,确保使用了正确的魔术命令 %matplotlib inline%matplotlib notebook

    如果在IDE或脚本模式下运行,确保你的环境配置正确,尤其是matplotlib的后端设置。对于非GUI环境,可以尝试设置后端为Agg

    import matplotlib
    matplotlib.use('Agg')  # 必须在导入plt之前设置
    import matplotlib.pyplot as plt
    
    # ... 其他代码 ...
    

    这将使matplotlib使用非交互式的后端,适合于服务器环境或无GUI的环境。然而,这样做会阻止图表窗口的弹出,而是将图表保存为文件或在脚本中返回图像数据。

    最后,确保你的Python环境和所有依赖库都已更新到最新版本,有时候旧版本的库可能会有已知的bug。如果问题仍然存在,可能需要更详细的调试信息来定位具体原因。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月17日

悬赏问题

  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页头,页脚具体代码该怎么写?
  • ¥15 关于#sql#的问题,请各位专家解答!
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂