为什么我的预测会出现零错误?
Why do I get a zero error in my prediction?
下面的代码是我参加 Titanic Kaggle 竞赛的第一个代码和第一个方法。出了点问题,因为我的预测结果为零 mean_absolute_error
.
df = pd.read_csv('train.csv')
y=df['Survived']
feature_columns = ['Pclass']
X = df[feature_columns]
# split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
model = RandomForestClassifier(random_state=1)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
#validation
val_mae = mean_absolute_error(predictions, y_test)
print("Validation MAE: {:,.0f}".format(val_mae))
列 df['Survived'] 是单热编码列,即它仅包含 [0,1] 的值,这意味着 数据点的最高绝对误差可以达到 1(即,如果您的模型在 0 时预测 1,反之亦然;还值得注意的是个别绝对误差只能是 0 或 1,因为你的 y_true 是 0 或 1,而你的预测是 0 或 1)。所以 mean_absolute_error 也将位于 0 和 1 之间,你正在四舍五入这里的值到最接近的整数 "Validation MAE: {:,.0f}".format(val_mae)
,所以如果 <= 0.5,它只会显示 0.
其他几点:这是一个分类问题,你不应该使用mean_absolute_error,它在回归问题。而是使用 confusion_matrix/classification_report。此外,mean_absolute_error 将值作为 mean_absolute_error(y_true, y_predicted) 因此在您的代码中(如果您要使用 mean_absolute_error)它应该看起来像 mean_absolute_error(y_test, 预测).
下面的代码是我参加 Titanic Kaggle 竞赛的第一个代码和第一个方法。出了点问题,因为我的预测结果为零 mean_absolute_error
.
df = pd.read_csv('train.csv')
y=df['Survived']
feature_columns = ['Pclass']
X = df[feature_columns]
# split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
model = RandomForestClassifier(random_state=1)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
#validation
val_mae = mean_absolute_error(predictions, y_test)
print("Validation MAE: {:,.0f}".format(val_mae))
列 df['Survived'] 是单热编码列,即它仅包含 [0,1] 的值,这意味着 数据点的最高绝对误差可以达到 1(即,如果您的模型在 0 时预测 1,反之亦然;还值得注意的是个别绝对误差只能是 0 或 1,因为你的 y_true 是 0 或 1,而你的预测是 0 或 1)。所以 mean_absolute_error 也将位于 0 和 1 之间,你正在四舍五入这里的值到最接近的整数 "Validation MAE: {:,.0f}".format(val_mae)
,所以如果 <= 0.5,它只会显示 0.
其他几点:这是一个分类问题,你不应该使用mean_absolute_error,它在回归问题。而是使用 confusion_matrix/classification_report。此外,mean_absolute_error 将值作为 mean_absolute_error(y_true, y_predicted) 因此在您的代码中(如果您要使用 mean_absolute_error)它应该看起来像 mean_absolute_error(y_test, 预测).