我正在使用線性回歸來預測和評估預測,然后將所有這些資訊輸入到資料框中,但出現錯誤。我使用的功能:
def cross_val(model):
pred = cross_val_score(model, X, y, cv=10)
return pred.mean()
def print_evaluate(true, predicted):
mae = metrics.mean_absolute_error(true, predicted)
mse = metrics.mean_squared_error(true, predicted)
rmse = np.sqrt(metrics.mean_squared_error(true, predicted))
r2_square = metrics.r2_score(true, predicted)
print('MAE: ', mae)
print('MSE: ', mse)
print('RMSE: ', rmse)
print('R2 SQUARE: ', r2_square)
def evaluate(true, predicted):
mae = metrics.mean_absolute_error(true, predicted)
mse = metrics.mean_squared_error(true, predicted)
rmse = np.sqrt(metrics.mean_squared_error(true, predicted))
r2_square = metrics.r2_score(true, predicted)
return mae
return mse
return rmse
return r2_squre
擬合和測量:
lin_reg.fit(X_train, y_train)
y_pred = lin_reg.predict(X_test)
print('-' * 30)
print('Accuracy of Predictions \n')
print_evaluate(y_test, y_pred)
制作資料框并出現錯誤:
results_df = pd.DataFrame(data=[["Linear Regression", *evaluate(y_test, test_pred) , cross_val(LinearRegression())]],
columns=['Model', 'MAE', 'MSE', 'RMSE', 'R2 Square', "Cross Validation"])
錯誤本身:
----> 1 results_df = pd.DataFrame(data=[["Linear Regression", *evaluate(y_test, test_pred) , cross_val(LinearRegression())]],
2 columns=['Model', 'MAE', 'MSE', 'RMSE', 'R2 Square', "Cross Validation"])
TypeError: 'numpy.float64' object is not iterable
uj5u.com熱心網友回復:
問題出在評估函式中:
def evaluate(true, predicted):
mae = metrics.mean_absolute_error(true, predicted)
mse = metrics.mean_squared_error(true, predicted)
rmse = np.sqrt(metrics.mean_squared_error(true, predicted))
r2_square = metrics.r2_score(true, predicted)
return mae
return mse
return rmse
return r2_squre
在這里,當第一次回傳時,函式將結束,不會執行任何其他操作。如果要回傳所有值,則需要將其修改為:
def evaluate(true, predicted):
mae = metrics.mean_absolute_error(true, predicted)
mse = metrics.mean_squared_error(true, predicted)
rmse = np.sqrt(metrics.mean_squared_error(true, predicted))
r2_square = metrics.r2_score(true, predicted)
return mae, mse, rmse, r2_squre
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/405985.html
標籤:
