#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 перед запуском точечной диаграммы? я подозреваю, что любой из них вызывает эту проблему.