Доступ к LocalApplicationData, эквивалентному в Delphi

Превращая мой комментарий в ответ, нет никакого обхода, и все по-прежнему работает, но это просто не имеет смысла. Каждый алгоритм максимизирует показатель, о котором вы говорите, поэтому в вашем примере xgboost построит деревья, чтобы максимизировать auc, а поиск по сетке найдет гиперпараметры, которые максимизируют точность. И это явно не имеет смысла.

Таким образом, вы должны установить обе метрики на одно и то же, будь то AUC, отзыв или что вы считаете подходящим для вашей проблемы; для несбалансированных наборов данных AUC - хороший выбор, или вы можете выбрать F-оценку, которая более сбалансирована в отношении отзыва.

7
задан Dave 22 January 2009 в 22:35
поделиться

3 ответа

В Delphi специальные константы пути системной папки определяются в ShlObj. На DCU, и ссылаются в форме CSIDL_, сопровождаемого символьным именем. Пример:

  • CSIDL_DESKTOPDIRECTORY возвращает путь к текущему рабочему столу
  • CSIDL_PERSONAL является каталогом My Documents
  • CSIDL ___ LOCAL_APPDATA является (имя пользователя) \Local каталогом Settings\Application Data

Вот быстрая функция, которая возвратит соответствующий специальный путь к папке при давании символьного имени. Удостоверьтесь, что Вы включаете единицу SHLOBJ.DCU в свой оператор USES и используете следующее:

function GetSpecialFolderPath(Folder: Integer; CanCreate: Boolean): string;

// Gets path of special system folders
//
// Call this routine as follows:
// GetSpecialFolderPath (CSIDL_PERSONAL, false)
//        returns folder as result
//
var
   FilePath: array [0..255] of char;

begin
 SHGetSpecialFolderPath(0, @FilePath[0], FOLDER, CanCreate);
 Result := FilePath;
end;

================================================================

Для ссылки константы следующие:

  CSIDL_DESKTOP                       = $0000; { <desktop> }
  CSIDL_INTERNET                      = $0001; { Internet Explorer (icon on desktop) }
  CSIDL_PROGRAMS                      = $0002; { Start Menu\Programs }
  CSIDL_CONTROLS                      = $0003; { My Computer\Control Panel }
  CSIDL_PRINTERS                      = $0004; { My Computer\Printers }
  CSIDL_PERSONAL                      = $0005; { My Documents.  This is equivalent to CSIDL_MYDOCUMENTS in XP and above }
  CSIDL_FAVORITES                     = $0006; { <user name>\Favorites }
  CSIDL_STARTUP                       = $0007; { Start Menu\Programs\Startup }
  CSIDL_RECENT                        = $0008; { <user name>\Recent }
  CSIDL_SENDTO                        = $0009; { <user name>\SendTo }
  CSIDL_BITBUCKET                     = $000a; { <desktop>\Recycle Bin }
  CSIDL_STARTMENU                     = $000b; { <user name>\Start Menu }
  CSIDL_MYDOCUMENTS                   = $000c; { logical "My Documents" desktop icon }
  CSIDL_MYMUSIC                       = $000d; { "My Music" folder }
  CSIDL_MYVIDEO                       = $000e; { "My Video" folder }
  CSIDL_DESKTOPDIRECTORY              = $0010; { <user name>\Desktop }
  CSIDL_DRIVES                        = $0011; { My Computer }
  CSIDL_NETWORK                       = $0012; { Network Neighborhood (My Network Places) }
  CSIDL_NETHOOD                       = $0013; { <user name>\nethood }
  CSIDL_FONTS                         = $0014; { windows\fonts }
  CSIDL_TEMPLATES                     = $0015;
  CSIDL_COMMON_STARTMENU              = $0016; { All Users\Start Menu }
  CSIDL_COMMON_PROGRAMS               = $0017; { All Users\Start Menu\Programs }
  CSIDL_COMMON_STARTUP                = $0018; { All Users\Startup }
  CSIDL_COMMON_DESKTOPDIRECTORY       = $0019; { All Users\Desktop }
  CSIDL_APPDATA                       = $001a; { <user name>\Application Data }
  CSIDL_PRINTHOOD                     = $001b; { <user name>\PrintHood }
  CSIDL_LOCAL_APPDATA                 = $001c; { <user name>\Local Settings\Application Data (non roaming) }
  CSIDL_ALTSTARTUP                    = $001d; { non localized startup }
  CSIDL_COMMON_ALTSTARTUP             = $001e; { non localized common startup }
  CSIDL_COMMON_FAVORITES              = $001f;
  CSIDL_INTERNET_CACHE                = $0020;
  CSIDL_COOKIES                       = $0021;
  CSIDL_HISTORY                       = $0022;
  CSIDL_COMMON_APPDATA                = $0023; { All Users\Application Data }
  CSIDL_WINDOWS                       = $0024; { GetWindowsDirectory() }
  CSIDL_SYSTEM                        = $0025; { GetSystemDirectory() }
  CSIDL_PROGRAM_FILES                 = $0026; { C:\Program Files }
  CSIDL_MYPICTURES                    = $0027; { C:\Program Files\My Pictures }
  CSIDL_PROFILE                       = $0028; { USERPROFILE }
  CSIDL_SYSTEMX86                     = $0029; { x86 system directory on RISC }
  CSIDL_PROGRAM_FILESX86              = $002a; { x86 C:\Program Files on RISC }
  CSIDL_PROGRAM_FILES_COMMON          = $002b; { C:\Program Files\Common }
  CSIDL_PROGRAM_FILES_COMMONX86       = $002c; { x86 C:\Program Files\Common on RISC }
  CSIDL_COMMON_TEMPLATES              = $002d; { All Users\Templates }
  CSIDL_COMMON_DOCUMENTS              = $002e; { All Users\Documents }
  CSIDL_COMMON_ADMINTOOLS             = $002f; { All Users\Start Menu\Programs\Administrative Tools }
  CSIDL_ADMINTOOLS                    = $0030; { <user name>\Start Menu\Programs\Administrative Tools }
  CSIDL_CONNECTIONS                   = $0031; { Network and Dial-up Connections }
  CSIDL_COMMON_MUSIC                  = $0035; { All Users\My Music }
  CSIDL_COMMON_PICTURES               = $0036; { All Users\My Pictures }
  CSIDL_COMMON_VIDEO                  = $0037; { All Users\My Video }
  CSIDL_RESOURCES                     = $0038; { Resource Directory }
  CSIDL_RESOURCES_LOCALIZED           = $0039; { Localized Resource Directory }
  CSIDL_COMMON_OEM_LINKS              = $003a; { Links to All Users OEM specific apps }
  CSIDL_CDBURN_AREA                   = $003b; { USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning }
  CSIDL_COMPUTERSNEARME               = $003d; { Computers Near Me (computered from Workgroup membership) }
  CSIDL_PROFILES                      = $003e;
18
ответ дан 6 December 2019 в 10:03
поделиться

См. эту статью.

Править:

Как добавлено в комментарии stukelly существует намного больше информации, доступной о SHGetFolderPath () функциональность. Delphi VCL действительно должен иметь функциональность для получения стандартных путей, и если Причал действительно будет иметь другой подобный Дельфи инструмент на другой ОС, это будет тем более важно. Поскольку многоплатформенная реализация системных путей стандарта видит также документацию wxStandardPaths в wxWidgets. На магистре социального обеспечения это использует различные константы CSIDL_XXX.

1
ответ дан 6 December 2019 в 10:03
поделиться

Принятие Вас может выполнить вызовы WinAPI от Delphi (какой ISTR Вы можете), Вы раньше могли сделать это с вызовом API (что-то как GetSystemFolder или GetUserDataFolder). Это было некоторое время, так как я должен был сделать это, но я думаю, что можно теперь сделать это с SHGetFolderPath путем передачи в CSIDL_LOCAL_APPDATA.

0
ответ дан 6 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: