哪位能帮忙看看
需求是想要写一个将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()