NameError:全局名称'linregress'未定义

时间:2019-12-11 10:59:54

标签: python scipy jupyter linear-regression nameerror

我有一个功能,可以创建散点图并计算拟合度和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 %')

我已经重启了几次内核,但是在此阶段仍然出现错误。

2 个答案:

答案 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)