Python 如何在列车数据集上使用SMAPE评估指标?

Python 如何在列车数据集上使用SMAPE评估指标?,python,pandas,numpy,scikit-learn,Python,Pandas,Numpy,Scikit Learn,我使用SMAPE(对称平均绝对百分比误差)评估指标 公式: 我使用上面的函数来计算SMAPE 现在我正试图使用上面的代码SMAPE评估我的模型,但我不知道如何在训练数据集上使用它进行评估,然后预测测试数据集的值 我的代码: from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split from sklearn.preprocessing import

我使用SMAPE(对称平均绝对百分比误差)评估指标

公式:

我使用上面的函数来计算SMAPE

现在我正试图使用上面的代码SMAPE评估我的模型,但我不知道如何在训练数据集上使用它进行评估,然后预测测试数据集的值

我的代码:

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# Train and test data split 70-30 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Establish model
model = RandomForestRegressor(n_jobs=-1)

model.fit(X_train, y_train)
现在如何将SMAPE与上述随机森林回归器一起使用?我应该使用
model.score
model.score(X\u测试,y\u测试)
还是
model.smape(X\u测试,y\u测试)

如果我使用
model.score(X\u测试,y\u测试)
我得到
-0.4678402626438
分数。请建议我如何在随机森林回归模型中使用SMAPE度量。

模型之后。拟合(X\u序列,y\u序列)


假设
y\u pred=model.predict(x\u test)
,然后使用
smape(y\u test,y\u pred)
@xyzjayne,那么在
模型之后就可以了。fit(x\u train,y\u train)
而不是使用
模型。predict(x\u test)
我应该使用
smape(y\u test,y\u pred)
我说得对吗?你需要做一个预测并把它分配给一个变量;否则,你在SMAPE中没有什么可以比较的…@xyzjayne如果可能的话,你能写一个答案:)我有一个问题:我得到的分数=101.89120508979043检查屏幕截图->但是由于我的火车数据集现在有79k行,我如何预测只有495行的测试数据集?我相信SMAPE的范围是(0200)根据你的公式。我不明白问题的第二部分——你是说样本没有被正确分割(70-30)?不,你没有明白我的意思。我是说,在火车数据集上训练模型之后,现在我想对测试数据集(而不是火车测试分割的测试数据)进行预测。如何对只有495行的测试数据集进行预测(即,应该预测目标变量)y_pred_1=model.predict(**任何测试数据集**),我猜?然后在预测之后再次使用
smape()
我说得对吗?
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# Train and test data split 70-30 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Establish model
model = RandomForestRegressor(n_jobs=-1)

model.fit(X_train, y_train)
y_pred = model.predict(x_test)
print(smape(y_test,y_pred))