Я продолжаю получать имя ошибки ‘y_test’ не определено

#python #scikit-learn #linear-regression #predict #train-test-split

#python #scikit-learn #линейная регрессия #предсказать #поезд-тест-сплит

Вопрос:

Мне действительно нужна ваша помощь! Я написал этот код:

 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’ не определено». Пожалуйста, дайте мне знать, как это исправить. Спасибо.

Ответ №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)
 

Комментарии:

1. Привет, Ананд, большое спасибо за ваш ответ. Но, к сожалению, теперь, когда я добавил в этот код, на точечной диаграмме ничего не отображается. Оно пустое. Как я могу это исправить?

2. Не могли бы вы поделиться самим сценарием, я полагаю, это может быть связано с порядком выполнения. Вы пробовали очистить всю записную книжку и запустить все ячейки?

3. Привет, Ананд, я не думаю, что смогу поделиться всем скриптом, к сожалению, поскольку он содержит конфиденциальные данные. Но я очистил всю записную книжку и запустил все ячейки, и вместо этого появилась ошибка «имя ‘y_pred’ не определено». Поэтому я решил создать полностью новую записную книжку, в которой было бы всего 4 ячейки (1. импорт библиотек. 2. создание фрейма данных 3 и 4. код в моем исходном сообщении с вашими исправлениями), и он по-прежнему показывал пустой точечный график. Так что я действительно не знаю, что может быть не так

4. можете ли вы проверить значения y_test и y_pred перед запуском точечной диаграммы? я подозреваю, что любой из них вызывает эту проблему.