• 用python绘制饼图


    
    ​
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    import seaborn as sns
    from sklearn.model_selection import GridSearchCV
    from sklearn.ensemble import RandomForestRegressor
    
    import warnings
    warnings.filterwarnings("ignore")
    
    df = pd.read_excel('预处理之后的数据.xlsx')
    # data = df.apply(lambda x: (x - np.mean(x)) / np.std(x))
    data = df
    # data.head()#查看前5行数据
    # data.shape
    
    # 整理数据集
    attributes = list(data.columns) #获取所有列名
    attributes.remove('房屋总价') # 删除'房屋总价'
    X_cols = attributes.copy()
    attributes.append('房屋总价') # 将'房屋总价'添加到列表末尾
    # 输出调整后的列表
    print(X_cols)
    print(attributes)
    
    #提取自变量X和因变量y
    X = np.array(data[X_cols])
    y = np.array(data['房屋总价'])
    #将数据集划分为训练集和测试集
    from sklearn import model_selection
    X_train,X_test,y_train,y_test=model_selection.train_test_split(
              X,y,test_size=0.20,random_state=123)
    
    # parameters = {'n_estimators':np.arange(10,200,5),
    #               'max_depth':np.arange(1,15),
    #               'max_features':np.linspace(0.1,1.0,10)}
    # model = RandomForestRegressor()
    # grid_search = GridSearchCV(model,parameters,cv=5)
    # grid_search.fit(X_train,y_train)
    # params = grid_search.best_params_
    # params
    
    model = RandomForestRegressor(n_estimators=50,
                                  max_depth=14,
                                  max_features=0.3,
                                 random_state=123)
    model.fit(X_train,y_train)
    print('Training score',model.score(X_train,y_train))
    print('Testing score',model.score(X_test,y_test))
    
    df_new = pd.DataFrame()
    df_new['变量名'] = X_cols
    df_new['重要性'] = list(model.feature_importances_)
    df_new.sort_values(by='重要性',ascending=False)
    df_new.set_index('变量名',inplace=True)
    df_new.plot(kind="barh",legend=False)
    
    #后续绘制饼图
    

    如何根据上述代码继续编写绘制各影响因素对房屋总价的影响程度饼图,已经导入了数据580条

    img


    ​​

    展开全部

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

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

      要基于上述代码绘制各影响因素对房屋总价影响程度的饼图,可以按照以下步骤操作:

      首先,确保df_new DataFrame已经按照特征的重要性排序,并且df_new的索引是特征名称,而其列之一是特征的重要度。然后,使用matplotlib.pyplot中的pie函数来绘制饼图。

      以下是具体的代码实现:

      import matplotlib.pyplot as plt
      
      # 假设df_new已经按重要性排序,并且已经设置index为特征名,列'重要性'包含特征重要度
      # df_new应类似如下:
      #           重要性
      # 变量名              
      # 房屋户型      0.20
      # 建筑面积      0.18
      # 所在区域      0.16
      # ...           ...
      # (此处省略部分数据)
      
      # 创建饼图
      plt.figure(figsize=(10, 8))
      plt.pie(df_new['重要性'], labels=df_new.index, autopct='%1.1f%%', startangle=140)
      plt.title('各影响因素对房屋总价的影响程度')
      plt.show()
      

      这段代码将创建一个饼图,其中每个扇区代表一个特征及其对房屋总价的影响程度,百分比通过autopct参数自动计算并显示。startangle参数用于旋转饼图的起始角度,以便于阅读。plt.figure(figsize=(10, 8))设置了图表的大小,可以根据需要调整。

      如果需要更细致的控制,比如改变颜色、添加图例等,可以进一步修改plt.pie的参数。例如,使用colors参数来自定义每个扇区的颜色,或者使用wedgeprops来添加边框等效果。

      展开全部

    • 阿里嘎多学长 2024-06-16 11:32
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      【解题思路】:使用matplotlib绘制

    • Kwan的解忧杂货铺 2024-06-16 11:34
      关注

      上午好☀️☀️☀️️
      本答案参考ChatGPT-3.5

      代码中的问题主要集中在饼图的生成上。我们可以通过创建一个seaborn库的子类来解决这个问题。

      首先,我们需要为生成饼图的函数增加参数。例如:

      import seaborn as sns
      

      然后,我们可以实现以下方法来绘制不同的图形类型:

      • pie():基本的饼图(包括圆形和火矩形)
      • pie.barh():堆叠式柱状图
      • pie.violinplot():多维线图
      • pie.bar():外层圆盘图(包括不完整的轴)
      • pie.pie又一次压缩饼图:使用更复杂的散点图格式

      以下是详细的步骤:

      1. 导入所需的库:
      import numpy as np
      import pandas as pd
      import matplotlib.pyplot as plt
      sns.set_theme(style="whitegrid")
      
      1. 加载原始数据,并对其进行整理。
      # 确保获取所有的列名
      attributes = list(data.columns) # 获取所有列名
      attributes.remove('房屋总价') # 删除'房屋总价'
      X_cols = attributes.copy()
      attributes.append('房屋总价') # 将'房屋总价'添加到列表末尾
      # 输出调整后的列表
      print(X_cols)
      print(attributes)
      
      1. 提取自变量X和因变量y:
      X = np.array(data[X_cols])
      y = np.array(data['房屋总价'])
      
      1. 划分训练集和测试集:
      from sklearn.model_selection import train_test_split
      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)
      
      1. 参数化随机森林模型:
      param_grid = {'n_estimators':np.arange(10,200,5),
                    'max_depth':np.arange(1,15),
                    'max_features':np.linspace(0.1,1.0,10)}
      
      1. 使用GridSearchCV搜索最佳参数组合:
      grid_search = GridSearchCV(model, param_grid,cv=5)
      grid_search.fit(X_train,y_train)
      
      1. 训练模型并评估其性能:
      params = grid_search.best_params_
      params
      
      1. 使用model.predict(X)model.predict_proba(X)预测每种属性对房屋总价的影响程度。
      df_new = pd.DataFrame()
      df_new['变量名'] = X_cols
      df_new['重要性'] = list(model.feature_importances_)
      df_new.sort_values(by='重要性',ascending=False)
      df_new.set_index('变量名',inplace=True)
      df_new.plot(kind="barh",legend=False)
      

      以上就是在Python中绘制不同形状的饼图的方法。希望对你有所帮助!

      展开全部

  • 相关阅读:
    深度学习入门——基于TensorFlow的鸢尾花分类实现(TensorFlow_GPU版本安装、实现)
    前端性能优化:如何根据chrome的timing优化
    【12】理解电路:从电报机到门电路,我们如何做到“千里传信”?
    js常用方法之 slice
    1688普货98%覆盖率,一键生成采购订单,轻松提升采购效率!
    built with gcc 12.1.0 (Rev2, Built by MSYS2 project)
    PMP提分练习
    USB转串口芯片沁恒微CH9340
    chrome浏览器一键切换搜索引擎,一键切换谷歌和百度搜索
    不忘初心
  • 原文地址:https://ask.csdn.net/questions/8119248