【发布时间】:2015-11-30 19:33:42
【问题描述】:
我在GridSearchCV 中使用Support Vector Regression 作为估计器。但是我想更改误差函数:我想定义自己的自定义误差函数,而不是使用默认值(R-squared:确定系数)。
我尝试用make_scorer 制作一个,但没有成功。
我阅读了文档,发现可以创建custom estimators,但我不需要重新制作整个估算器 - 只需重新制作错误/评分函数。
我想我可以通过将可调用对象定义为记分员来做到这一点,就像 docs 中所说的那样。
但我不知道如何使用估算器:在我的例子中是 SVR。我是否必须切换到分类器(例如 SVC)?我将如何使用它?
我的自定义错误函数如下:
def my_custom_loss_func(X_train_scaled, Y_train_scaled):
error, M = 0, 0
for i in range(0, len(Y_train_scaled)):
z = (Y_train_scaled[i] - M)
if X_train_scaled[i] > M and Y_train_scaled[i] > M and (X_train_scaled[i] - Y_train_scaled[i]) > 0:
error_i = (abs(Y_train_scaled[i] - X_train_scaled[i]))**(2*np.exp(z))
if X_train_scaled[i] > M and Y_train_scaled[i] > M and (X_train_scaled[i] - Y_train_scaled[i]) < 0:
error_i = -(abs((Y_train_scaled[i] - X_train_scaled[i]))**(2*np.exp(z)))
if X_train_scaled[i] > M and Y_train_scaled[i] < M:
error_i = -(abs(Y_train_scaled[i] - X_train_scaled[i]))**(2*np.exp(-z))
error += error_i
return error
变量M 不为空/零。为简单起见,我只是将其设置为零。
谁能展示这个自定义评分功能的示例应用程序?感谢您的帮助!
【问题讨论】:
-
这个例子:(estimator, X, y)
标签: python scikit-learn