TypeError: 'numpy.float64' object is not iterable. While trying to make dataframe with results of model prediction
TypeError: 'numpy.float64' object is not iterable. While trying to make dataframe with results of model prediction
我正在使用线性回归来预测和评估预测,然后将所有这些信息输入到数据框中,但出现错误。
我使用的功能:
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
问题出在求值函数中:
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
此处,当第一个 return 被命中时,函数将结束,不会执行任何其他操作。如果您希望所有值都被 returned,您需要将其修改为:
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
我正在使用线性回归来预测和评估预测,然后将所有这些信息输入到数据框中,但出现错误。 我使用的功能:
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
问题出在求值函数中:
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
此处,当第一个 return 被命中时,函数将结束,不会执行任何其他操作。如果您希望所有值都被 returned,您需要将其修改为:
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