Деревья решений, реализованные в sklearn, строятся только на основе критериев расщепления, учитывающих коэффициент Джини, энтропию или выигрыш в информации. Пользовательские функции потери невозможны.
Однако, Gradient Boosted Trees, такие как XGboost, LightGBM и CatBoost, позволяют указывать ваши собственные функции потерь. Учебное пособие можно найти здесь: https://towardsdatascience.com/custom-loss-functions-for-gradient-boosting-f79c1b40466d
Затем вы должны включить штрафной термин за нарушение вашего ограничение в функцию потерь.
Вы найдете инструмент для этого здесь:
http://www.pretentiousname.com/excel_extractvba/index.html
Это - сценарий VBS, который автоматизирует Excel. Можно изменить его согласно потребностям - отмечают, что это не прекрасно (считайте веб-страницу для протестов).
option explicit
Const vbext_ct_ClassModule = 2
Const vbext_ct_Document = 100
Const vbext_ct_MSForm = 3
Const vbext_ct_StdModule = 1
Main
Sub Main
Dim xl
Dim fs
Dim WBook
Dim VBComp
Dim Sfx
Dim ExportFolder
If Wscript.Arguments.Count <> 1 Then
MsgBox "As the only argument, give the FULL path to an XLS file to extract all the VBA from it."
Else
Set xl = CreateObject("Excel.Application")
Set fs = CreateObject("Scripting.FileSystemObject")
xl.Visible = true
Set WBook = xl.Workbooks.Open(Trim(wScript.Arguments(0)))
ExportFolder = WBook.Path & "\" & fs.GetBaseName(WBook.Name)
fs.CreateFolder(ExportFolder)
For Each VBComp In WBook.VBProject.VBComponents
Select Case VBComp.Type
Case vbext_ct_ClassModule, vbext_ct_Document
Sfx = ".cls"
Case vbext_ct_MSForm
Sfx = ".frm"
Case vbext_ct_StdModule
Sfx = ".bas"
Case Else
Sfx = ""
End Select
If Sfx <> "" Then
On Error Resume Next
Err.Clear
VBComp.Export ExportFolder & "\" & VBComp.Name & Sfx
If Err.Number <> 0 Then
MsgBox "Failed to export " & ExportFolder & "\" & VBComp.Name & Sfx
End If
On Error Goto 0
End If
Next
xl.Quit
End If
End Sub
-Adam
Когда я делал большую разработку Excel VBA, я выработал привычку экспорта в текстовый формат для каждого файла (модуль, и т.д.) каждый раз, когда я внес изменение (из контекстного меню). Я сохранил те файлы в управлении исходным кодом вместе с двоичным файлом XLA. Это работало вполне прилично на меня и не потребовало никаких внешних инструментов.
Я успешно использовал это в течение последних нескольких лет, чтобы экспортировать свой код и сохранить его. Я могу подтвердить, что он работает в Office 2003, 2007. Я предполагаю, что он работает и в 2000 году.