patrickstar231 2023-07-06 00:26 采纳率: 0%
浏览 26

python如何对excel进行所有数据随机组合分析

哪位能帮忙看看

需求是想要写一个将excel里的所有数据随机组合进行多元回归分析,并输出最佳结果的相关数据和示意图

但后台一直报错

输出后报错:数据组(37, 6-9)报错: object of type 'numpy.float64' has no len()

目前的相关代码


# 存储分析结果和相关信息的列表
results_list = []

# 遍历每一行的任意四个数据进行分组进行多元回归分析
for i in range(len(df)):
    row_data = df.iloc[i]
    for j in range(len(row_data)-3):
        data_group = row_data[j:j+4]
        try:
            data_group = data_group.apply(pd.to_numeric, errors='coerce')
            X = data_group.iloc[:-1]
            y = data_group.iloc[-1]
            X = sm.add_constant(X)
            model = sm.OLS(y, X)
            results=model.fit()

            # 存储分析结果和相关信息到列表中
            results_list.append({
                '数据组': list(data_group),  # 转换为列表进行存储
                '回归系数': results.params.tolist(),  # 转换为列表进行存储
                'R-squared': results.rsquared,
                '分析报告': str(results.summary())
            })
        except Exception as e:
            print(f"数据组({i+1}, {j+1}-{j+4})报错: {str(e)}")
            continue

#根据R-squared值进行排序
sorted_results = sorted(results_list, key=lambda x: x['R-squared'], reverse=True)

if len(results_list) > 0:
    sorted_results = sorted(results_list, key=lambda x: x['R-squared'], reverse=True)
    
    if len(sorted_results) > 0:
        best_result = sorted_results[0]
        # 其他的操作...
    else:
        print("未找到最佳结果")
else:
    print("结果列表为空")

#输出最佳分析结果和相关信息
best_result = sorted_results[0][1] 
best_data_group = best_result['数据组'] 
print(f"最佳分析结果:") 
print(f"数据组: {best_data_group}") 
print(f"回归系数: {best_result['回归系数']}") 
print(f"R-squared: {best_result['R-squared']}") 
print(f"分析报告: {best_result['分析报告']}") 
print('\n')

#绘制最佳结果的分析示意图
plt.scatter(best_data_group['自变量1'], best_data_group['因变量'], label='自变量1') 
plt.scatter(best_data_group['自变量2'], best_data_group['变量'], label='自变量2') 
plt.scatter(best_data_group['自变量3'], best_data_group['因变量'], label='自变量3') 
plt.xlabel('自变量') 
plt.ylabel('因变量') 
plt.title('最佳多元回归分析示意图') 
plt.legend() 
plt.show()
  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2023-07-06 08:24
    关注

    报错是因为不能对float类型求len长度。
    try代码中,将报错的float类型转为str类型。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月6日

悬赏问题

  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。