【问题标题】:I keep on getting the error name 'y_test' is not defined我不断收到错误名称'y_test'未定义
【发布时间】:2021-03-10 13:09:30
【问题描述】:

我真的需要你的帮助!我已经写了这段代码:

from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.metrics import accuracy_score

def train_test_rmse(x,y):
    X = df_new[feature_cols]
    y = df_new['TOTAL CONSTRUCTION COST - EXCLUDING TAX']
    X_train, X_test, y_train, y_test = train_test_split(x, y, test_size = 0.2,random_state=123)
    linreg = LinearRegression()
    linreg.fit(X_train, y_train)
    y_test = train_test_split(x, y, test_size = 0.2,random_state=123)
    y_pred = linreg.predict(X_test)
    print(accuracy_score(y_test, y_pred))  
    return np.sqrt(metrics.mean_squared_error(y_test, y_pred)) 

^ 上面的代码运行正确。但是当我尝试在下面的单元格中绘制散点图时:

import matplotlib.pyplot as plt
plt.scatter(y_test, y_pred)
plt.xlabel('Actual Y')
plt.ylabel('Predicted Y')
plt.show()

我收到错误“名称'y_test'未定义”。请让我知道如何解决它。谢谢。

【问题讨论】:

    标签: python scikit-learn linear-regression predict train-test-split


    【解决方案1】:

    在代码中,我看到y_test是在train_test_rmse函数内部定义的,你需要在这个函数外部初始化y_test

    您的代码应该可以正常工作,只需进行一些更改,如下所示:

    y_test = None
    
    def train_test_rmse(x,y):
      
      global y_test
      
        X = df_new[feature_cols]
        y = df_new['TOTAL CONSTRUCTION COST - EXCLUDING TAX']
        X_train, X_test, y_train, y_test = train_test_split(x, y, test_size = 0.2,random_state=123)
    

    【讨论】:

    • 您好阿南德,非常感谢您的回复。但不幸的是,现在我在这段代码中添加了散点图上没有任何内容。它是空白的。我该如何解决这个问题?
    • 你能分享脚本本身吗,我想,这可能是由于执行顺序。您是否尝试清除整个笔记本并运行所有单元格?
    • 您好 Anand,我不认为我能够分享整个脚本,因为它包含机密数据。但是我确实清除了整个笔记本并运行了所有单元格,结果却出现了错误“未定义名称'y_pred'”。所以我决定创建一个全新的笔记本,其中只包含 4 个单元格(1. 导入库。2. 创建数据框 3&4。我原始帖子中的代码以及您的更正)它仍然显示一个空的散点图。所以我真的不知道有什么问题
    • 你能在运行散点图之前检查 y_test 和 y_pred 的值吗?我怀疑其中任何一个都导致了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2015-10-28
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    相关资源
    最近更新 更多