我有一个功能,可以创建散点图并计算拟合度和R平方。我已经在两个小时前运行了这没问题,但是现在我尝试运行它,但遇到了新错误:
NameError:未定义全局名称'linregress'
有问题的部分来自scipy库,我在字母中找不到任何错误:
import seaborn as sns
from scipy import stats
def give_me_scatter(x, y, title, xlabel, ylabel):
#The problematic line:
slope, intercept, r_value, p_value, std_err = linregress(x, y)
#print('slope:',slope)
#print('intercept:',intercept)
#print('R:',r_value)
#print('R^2:',(r_value**2))
# use line_kws to set line label for legend
plt.figure(figsize=(7.5,6.5))
ax = sns.regplot(x='NDVI', y='nitrogen', data=merged_data, color='b', line_kws={'label':"y={0:.1f}x+{1:.1f}".format(slope,intercept)})
ax = sns.regplot(x='NDVI', y='nitrogen', data=merged_data,color='b', line_kws={'label':"R^2={0:.3}".format(r_value**2)})
ax.set_title('NDVI vs Nitrogen% ')
# plot legend
ax.legend()
plt.show()
# plot legend
ax.legend()
plt.show()
#The error appears when I try to show the chart:
give_me_scatter(x, y, 'NDVI vs Nitrogen ', 'NDVI', 'Nitrogen %')
我已经重启了几次内核,但是在此阶段仍然出现错误。
答案 0 :(得分:2)
如果您想使用linregress
模块中的scipy.stats
函数,则需要先导入它,以便脚本知道它。您可以在脚本顶部定义以下import语句。
from scipy.stats import linregress
答案 1 :(得分:1)
您确定您没有忘记导入库吗? 例如,
from scipy import stats
def give_me_scatter(x, y, title, xlabel, ylabel):
#The problematic line:
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)