Со светлым праздником Пасхи!
Apr. 5th, 2026 03:00 amМира и счастья вашему дому!



A new version of unifiedml is out; available on CRAN. unifiedml is an effort to offer a unified interface to R’s machine learning models.
The main change in this version 0.2.1 is the removal of type (of prediction) from predict, and the use of... instead, which is more generic and flexible.
This post contains advanced examples of use of unifiedml for classification, with ranger and xgboost. More examples have been added to the package vignettes too.
install.packages("unifiedml")
install.packages(c("ranger"))
library("unifiedml")
Loading required package: doParallel
Loading required package: foreach
Loading required package: iterators
Loading required package: parallel
Loading required package: R6
ranger examplelibrary(ranger)
# 2 - 'ranger' classification ---------------------------
# -------------------------------
# S3 wrapper for ranger
# -------------------------------
# Fit function remains the same
my_ranger <- function(x, y, ...) {
if (!is.data.frame(x)) x <- as.data.frame(x)
y <- as.factor(y)
colnames(x) <- paste0("X", seq_len(ncol(x)))
df <- data.frame(y = y, x)
fit <- ranger::ranger(y ~ ., data = df, probability = TRUE, ...)
structure(list(fit = fit), class = "my_ranger")
}
# Predict only with newdata
predict.my_ranger <- function(object, newdata = NULL, newx = NULL, ...) {
if (!is.null(newx)) newdata <- newx
if (is.null(newdata)) stop("No data provided for prediction")
# misc::debug_print(newx)
# misc::debug_print(newdata)
if (is.matrix(newdata)) newdata <- as.data.frame(newdata)
# misc::debug_print(newdata)
# Unconditionally rename to match training
colnames(newdata) <- paste0("X", seq_len(ncol(newdata)))
# misc::debug_print(newdata)
preds <- predict(object$fit, data = newdata)$predictions
# misc::debug_print(newdata)
if (is.matrix(preds) && ncol(preds) == 2) {
lvls <- colnames(preds)
return(ifelse(preds[, 2] > 0.5, lvls[2], lvls[1]))
}
preds
}
# Print method
print.my_ranger <- function(x, ...) {
cat("my_ranger model\n")
print(x$fit)
}
# -------------------------------
# Example: Iris binary classification
# -------------------------------
set.seed(123)
iris_binary <- iris[iris$Species %in% c("setosa", "versicolor"), ]
X_binary <- iris_binary[, 1:4]
y_binary <- as.factor(as.character(iris_binary$Species))
# Train/test split
train_idx <- sample(seq_len(nrow(X_binary)), size = 0.7 * nrow(X_binary))
X_train <- X_binary[train_idx, ]
y_train <- y_binary[train_idx]
X_test <- X_binary[-train_idx, ]
y_test <- y_binary[-train_idx]
# Initialize and fit model
# Initialize model
mod <- Model$new(my_ranger)
# Fit on training data only
mod$fit(X_train, y_train, num.trees = 150L)
# Predict on test set
preds <- mod$predict(X_test)
# Evaluate
table(Predicted = preds, True =y_test)
mean(preds == y_test) # Accuracy
# 5-fold cross-validation on training set
cv_scores <- cross_val_score(
mod,
X_train,
y_train,
num.trees = 150L,
cv = 5L
)
cv_scores
mean(cv_scores) # average CV accuracy
True
Predicted setosa versicolor
setosa 15 0
versicolor 0 15
1
|======================================================================| 100%
1
xgboost examplelibrary(xgboost)
my_xgboost <- function(x, y, ...) {
# Convert to matrix safely
if (!is.matrix(x)) {
x <- as.matrix(x)
}
# Handle factors
if (is.factor(y)) {
y <- as.numeric(y) - 1
}
fit <- xgboost::xgboost(
data = x,
label = y,
...
)
structure(list(fit = fit), class = "my_xgboost")
}
predict.my_xgboost <- function(object, newdata, ...) {
# Ensure matrix
newdata <- as.matrix(newdata)
preds <- predict(object$fit, newdata)
# If binary classification → convert probs to class
if (!is.null(object$fit$params$objective) &&
grepl("binary", object$fit$params$objective)) {
return(ifelse(preds > 0.5, 1, 0))
}
preds
}
predict.my_xgboost <- function(object, newdata = NULL, newx = NULL, ...) {
# Accept both conventions
if (!is.null(newx)) {
newdata <- newx
}
newdata <- as.matrix(newdata)
preds <- predict(object$fit, newdata)
# Binary classification → class labels
if (!is.null(object$fit$params$objective) &&
grepl("binary", object$fit$params$objective)) {
return(ifelse(preds > 0.5, 1, 0))
}
preds
}
print.my_xgboost <- function(x, ...) {
cat("my_xgboost model\n")
print(x$fit)
}
set.seed(123) # for reproducibility
# Binary subset
iris_binary <- iris[iris$Species %in% c("setosa", "versicolor"), ]
X_binary <- as.matrix(iris_binary[, 1:4])
y_binary <- as.factor(as.character(iris_binary$Species))
# Split indices: 70% train, 30% test
train_idx <- sample(seq_len(nrow(X_binary)), size = 0.7 * nrow(X_binary))
X_train <- X_binary[train_idx, ]
y_train <- y_binary[train_idx]
X_test <- X_binary[-train_idx, ]
y_test <- y_binary[-train_idx]
# Initialize model
mod <- Model$new(my_xgboost)
# Fit on training data only
mod$fit(X_train, y_train, nrounds = 50, objective = "binary:logistic")
# Predict on test set
preds <- mod$predict(X_test)
# Evaluate
table(Predicted = preds, True =y_test)
mean(preds == y_test) # Accuracy
# 5-fold cross-validation on training set
cv_scores <- cross_val_score(
mod,
X_train,
y_train,
nrounds = 50,
objective = "binary:logistic",
cv = 5L
)
cv_scores
mean(cv_scores) # average CV accuracy

Всё последнее время (последние годы, а то уж и десятилетия) слышу апокалиптические пророчества про удушение Интернета в России - «вот теперь уж точно, вот теперь уж тотально, вот теперь уж навсегда».
Что ж, разумеется, глупо отрицать, что банда, захватившая в России власть и называющая себя «государством», с самого начала порывалась ограничивать свободу слова везде, где только могла её увидеть.
Но всё-таки, думается, люди, пугающие «тотальным закручиванием гаек», имеют несколько превратное видение того, что представляет собой эта банда и её прихлебатели (то есть, российские госслужащие).
Говоря кратко и просто, это — не совсем то же, что было в Швейцарии при установлении там власти господина Кальвина. И даже — не совсем то же, что установилось в Иране с их Исламской Революцией.
То есть, истинно идейных, «правоверных» маньяков — там мало.
Приспособленцев, циников, стяжателей, оппортунистов — это сколько угодно, уверенное большинство, гарантированно способное утопить и потушить в своём болотище все действительно «пламенные», буйные натуры, буде они даже каким-то чудом приобщаться к новейшей российской «державности».
Но, собственно, в России так было практически всегда, поскольку любой мало-мальски разумный человек всегда презирал это всегда дрянное государство, но когда бывал вооружён философией оппортунизма — норовил урвать от него клок, изображая «верноподданничество».
Пожалуй, единственный период, когда властный режим в России мог располагать действительно убеждёнными пассионариями-энтузиастами — так это в первые годы после Октябрьской революции. Да и там, честно, под большим вопросом искренность многих «верных ленинцев», и не так уж долго длилась их подлинно революционная власть, быстро сменившись более привычным форматом самокорыстного холуйства.
Что же до нынешних «государственников» - так я в глубине души не уверен даже в каком-нибудь Дугине: то ли он истинный буйный, истинный маньяк «ымперства», то ли просто очередной обиженный мажорчик, урождённый в номенклатурно-генеральском семействе и помешанный на чисто эгоистическом раздувании собственной значимости любой ценой. Впрочем, с Дугиным я никогда не водил личного знакомства — да и не нахожу нужным, ибо в действительности, как ни тужится, он слишком мало влияет на реальные дела, чтобы возникала надобность посещать его кому-то из наших.
Но в тех российских госслужащих, с которыми мне доводилось общаться лично и иметь с ними дела — в тех я уверен совершенно: отпетые, сертифицированные «проходимцы», корчащие из себя «державников» единственно ради личного обогащения и свободы собственных рук.
И это на самом деле не осуждение. Не в моих устах, не в моих глазах.
В моих «коррупционер» - это лучшее, чем может быть чиновник в России, и оборони Господь быть ему чем-то иным.
Собственно, с давних пор вся структура государственного управления здесь и строилась на практически неприкрытом, узаконенном мздоимстве, которое могло в одно время называться «местничеством», а в иное — как-то по-другому, но суть — неизменна.
И суть сводится к тому, что каждому сторожевому псу государеву, взятому на охранную службу (в широком смысле), предлагается самому урвать кусок вкусного мяса — сообразно специфике своей деятельности.
Что в целом выражено в формуле «Что охраняем — то и имеем» (конечно, это не специфически российская формула, но в России — она наиболее универсальна и «основательна»).
Таким образом полиция, призванная бороться, скажем, с проституцией, во все времена крышевала проституцию; наркополиция — крышевала наркотрафик; ну а когда появились новые специализированные службы, призванные будто бы контролировать Интернет — естественно, они кормятся на торговле свободой Интернета.
То есть, разумеется, если бы я имел достоверные данные о том, как связаны Роскомнадзор и Минцифры с «контрабандистскими» сервисами ВПН — я бы не стал «палить контору».
Поэтому, конечно, можно считать, что гипотеза такой связи — это мой вымысел.
Но что всё же не вымысел — так это убеждённость, что любой даже самый вредный сотрудник «цензурного» ведомства — в биологической и психологической своей основе всё же человек. И как правило — не столь уж старый человек, который вырос уже в эпоху Интернета и не мыслит существования без него ни для себя, ни для своих близких.
Поэтому, насколько искренне мотивирован он на то, чтобы душить Интернет действительно всерьёз, действительно тотально? (не говоря уж о технологических подобных возможностях, но допустим, что они есть, что действительно можно разом обрубить все кабеля).
Полагаю, очевидно, что этот калиброванный циник-оппортунист-стяжатель, усреднённый сотрудник «цензурно-надзорного» ведомства, конечно же, будет яростно имитировать потуги на борьбу с «преступным цифровым вольнодумством».
Ещё того яростнее — будет требовать всё новых и новых ресурсов для обуздания злокозненного Интернета, всё новых и новых закупок соответствующего оборудования — на каковой почве заведёт весьма приятные знакомства с иными китайскими производителями.
Но вот мечтать, чтобы его деятельность на самом деле оказалась успешной и принесла зримые плоды?
Да такого ему в кошмаре не приснится!
Поэтому любые меры контроля над Инетом, рискующие оказаться действительно эффективными, он будет саботировать уже не только ради мзды, но просто — ради своего личного комфорта, кое он с детства не мыслит без Интернета.
И что бы он ни говорил на публике, какие бы бумажки ни сочинял и ни подписывал — всё это не имеет никакого значения.
И это ровно та мысль, которую я пытаюсь втолковать своим юным друзьям, склонным ожесточаться после всякой новой «пришибеевской» и «держимордовской» инициативы от РКН и Минцифры.
Юные друзья раздувают ноздри и бьют копытами: «Всё, пора переходить к делу. Для начала — взорвать к чёртовой матери головные их офисы со всей требухой, а потом — вообще мочить всех, кто служит этому кремлёвскому упырю. Вот как увидишь путинского сатрапа — так и вали его нахер. «Сколько раз увидишь его — столько раз его и убей».
Тешу себя надеждой, что «симоновский» пафос в этих юношеских филиппиках несколько преувеличен, и в действительности они всё же не склонны пока врываться в любые присутственные места и устраивать там «браконьерство в крольчатнике», но за судьбу РКНовцев и минцифровцев — не поручился бы, доведись им повстречаться с нашими ребятишками на узкой тропинке вдали от взрослых глаз.
Поэтому приходится давить на рационализм: «Блин, ну что плохого, если они спустят ещё сколько-то сотен ярдов на закупку этих «думателей, то бишь анализаторов DPI”? Они кому-то жить мешают? Вот по-серьёзному — мешают? Зато — стоят реально дофигища. И каждый ярд, потраченный на эту бесполезную херню — это, считай, минус сотня баллистических ракет у путинской военщины. Которая — всё-таки не всегда «фигня», к сожалению».
По хорошему же счёту, вся эта борьба за контроль над Интернетом в России — выливается просто в ещё один налог, в виде платы за ВПН.
Это же можно считать и своего рода скрытым повышением абонентской платы — раз уж провайдерам, фактически, запрещают повышать её официально (во всяком случае, не в таких пределах, чтобы поколебать официальную версию о курсе рубля).
И, опять же, если я скажу, что в бизнесе с ВПН участвуют как служащие надзорных ведомств, так и ведущие провайдеры интернет-услуг — это будет очередное досужее предположение, которое я никак и никому не намерен доказывать.
Но что более «рабочее» предположение — так это что в случае действительного обрубания Инета, вот прямо чтоб совсем-совсем не просочиться в забугорные сети, все эти ребята лишатся очень значительной части своей значимости и дохода.
Ибо рано или поздно, тот же Маск разрешит использовать Старлинк на территории России (как разрешил в Иране, начхав на мнение тамошнего недобитого «правительства»), а тогда и «придворные» провайдеры, и служивые люди — утратят свою монополию в этом бизнесе (а он огромен).
Поэтому, даже если Путин окончательно озвереет, униженный своим бессилием, в общем-то, во всех своих делах, и топнет ножкой, и прикажет ввести жесточайший режим белых списков — естественно, челядь возьмёт под козырёк, но на деле — тут же понапихает в те белые списки всех своих дружественных провайдеров впн-услуг и будет торговать лазейками (пользуясь, конечно, и тем, что сам Путин дремуч, Инетом не пользуется, а кто пользуется — не горит желанием раскрывать ему глаза на истинное положение дел).
Помнится, лет пятнадцать назад я высказал ту мысль, что «Коррупция — это лучшее что есть в России после окушков и морошки».
Тогда многие люди сочли высказывание «эпатажным» и «легковесным».
Сейчас, полагаю, с ним мало кто будет спорить.
Но поскольку «коррупция», конечно, слывёт «плохим» словом — уместнее, наверное, будет употреблять слова вроде «договороспособность», «комплайентность», «взаимопонимание», и т. п.
И эти-то свойства — ровно то, что спасает людям жизни. Во всяком случае — российским госслужащим.
Без всяких сирен. Над Хайфским заливом сейчас так грохнуло, что все стаканы у меня на столе стали танцевать фрейлехс.
Громко и красиво, но меня не очень вдохновляет. Видимо, недостаточное количество истинного еврейства.
Жертв и повреждений нет. Очередной раз отбились.
Инцидент завершен.

[ АВТОПЕРЕВОД ]
Мужчина, стрелявший в патрульных в Одессе, погиб во время задержания
Он не шел на контакт с переговорщиком и во время спецоперации применил оружие против бойцов подразделения КОРД. Применение силы было вынужденным для прекращения угрозы жизни правоохранителей.
Напомним, что 45-летний одессит находился в розыске за нарушение правил воинского учета. Во время проверки документов он начал стрелять из автомата в полицейских и скрылся на авто.
Для задержания стрелка в области была введена специальная полицейская операция. В течение нескольких часов полицейские установили местонахождение фигуранта: он скрывался в недострое. Во время переговоров мужчина с третьего этажа начал стрелять по полицейским, в ответ бойцы КОРД также открыли огонь. Фигурант погиб.
Сейчас на месте работает следственно-оперативная группа, о происшествии сообщено ГБР и прокуратуру.

Прекрасная Юля Немировская правда болгарка. но это где-то близко.

Андрей Михайлюк — айтишник, хакер, руководитель издательских проектов, а на досуге — великолепный переводчик комиксов Нейтана Пайла «Странная планета» strangeplanetrus.

О том, какое пекло здесь будет летом, говорят эти разноцветные ленточки...

Местный Кипрский «антифашизм дави сионизм.

Намоленное место.

Осмотр пальм

Знаменитый Павел Мунтян, мультипликатор, автор мультиков Mr.Freeman. Мультики созданы иноагентом, разумеется.

Миша, сто лет не виделись, работали вместе на O2TV — Миша там вел свои передачи, иногда заходил в гости: https://lleo.me/o2/#2007-12-06

Писатель Кнарри (Алексей Герасимович).

Говорят, где-то в Барселоне есть отель под названием «Lleo», я там не был, но всегда себе его представлял примерно так. Но на самом деле так выглядят настоящие пафосные квартирники. Было супер, отличные люди, вместо полутора часов веселились чуть ли не два с половиной.

Я вообще люблю мимозу и сирень. Но такой мимозу, что как раз сейчас цвете на Кипре, вообще никогда не видел. У нее шарики размером с вишню!

Старинный друг Влад Платонов, ну надо же, и он тоже на Кипре. Вы все туда переехали что ли? Что случилось?

На Кипре огромное количество кошек. Никто не знает, сколько — кошки живут своей жизнью и посещают по очереди все дружественные дома, где их кормят и гладят.

Алексей Шуньков, носитель мудростей и двух чипов.

Бич Кипра — гусеницы походного шелкопряда. Это такие огромные твари, которые живут коммунной в коконе и ходят цепочкой обгладывать елки. Приближаться к ним нельзя — токсичны, вызывают дикую аллергию.

Вовка, айтишник и водолаз.

Прикольно, был когда-то просто любимый сын, а теперь вырос большой, и теперь у меня еще есть и лучший друг!

Вид на Средиземное.

Продавцы горшков на трассе с мегафоном.

Местная знаменитая художница Северного Кипра Татьяна Пашагина подарила мне свою картину. Подозреваю портрет.

Главный тусовщик Северного Кипра Виталий НакуринМакурин. Программист, бизнесмен, музыкант, организатор, владелец бара Bar Duck и отеля RIX — офигенный кстати отель, запомните: https://rix.rest

Финалисты прогулки про Северному Кипру.

Санкт Петербург, Набережная Фонтанки, 2026 год, параллельная реальность.

А вот уже долгая пересадка в городе Вена. Перед вами — знаменитый венский шницель.

Гримасы капитализма. Уличный автомат по продаже курительного табака. Курить в Австрии разрешено.

Моя любимая селедка бисмарк херинг — не соленая, а маринованная. Как жаль, что в самолет такую банку не пустят.

Город Вена очень традиционный — в нем даже сохранились телефонные будки с таксофонами. Впрочем, я кажется знаю еще одну страну, в которой скоро тоже будут такие будки...

Еще немного австрийского дизайна. Дизайн в целом не плохой.

Невероятной детализации австрийское графити.

Знаменитый дом великого венского архитектора Фредерика Хундервассера. Вообще-то его фамилия была Стовассер (Stowasser). Но в середине карьеры он узнал, что Sto по-русски означает число 100. А обратно на немецком соответственно Hundert. И поменял себе фамилию. Не шутка. Русским он не был и языка не знал, был немцем и наполовину евреем.

Хендервассер умеет оформить даже туалет.

Внутри там так. Вообще самое правильное, что надо посмотреть в Вене — это конечно музей и дома Хундервассера и собор Штефана.

Великий собор Святого Штефана — реальное чудо света.

Ну а в соборе в книге люди пишут молитвы Богу. Услышит ли?

Я давно об этом хотел написать, однако опасался сглазить. Но потом всё-таки решил, что слишком большая гордыня считать, будто какие-то мои слова могут иметь в данном случае даже малейшее значение, и осмелился позволить себе изложить несколько мыслей.
И тут мне иногда вспоминается, как в семьдесят пятом я, будучи курсантом, перед большими межвойсковыми учениями на Алабинском полигоне разговаривал с завкафедрой огневой подготовки полковником Кузнецовым, с которым у нас за годы учебы сложились довольно хорошие отношения. И я осмелился его спросить, а правда ли, что на таких учениях существует официально разрешенная норма потерь, в солдатских кругах даже ходили слухи о конкретной цифре в пять процентов. Полковник только рассмеялся. Ответил, мол, неужели ты думаешь, что если бы такая норма существовала, то её бы обязательно не перевыполнили? Нет, конечно, никаких разрешенных процентов быть не может и каждый случай это чрезвычайное происшествие, за которое летят головы и погоны. Что, естественно, не значит, что боевые, хоть и учебные, действия десятков тысяч человек и огромного количества техники гарантировано обходятся без потерь. Понятно, что статистика больших чисел неизбежно работает и от этого никуда не денешься.
И сейчас что мы видим по поводу авиации многих стран, участвующих в военных действиях. Американцы теряют самолеты. Русские теряют самолеты. Какие-то с экипажами, кто-то из летчиков спасается. Кто-то в результате вражеского огня, кто-то даже из-за дружеского, большинство просто по техническим причинам или из-за "человеческого фактора". Причин множество, но потери постоянны и кажутся неизбежными именно по закону больших чисел, уж очень серьезное количество авиатехники задействовано в этих войнах.
И только ВВС Израиля работают без потерь. Ну, то есть вообще и абсолютно. Ни одного сбитого или хоть подбитого самолета, ни одной ошибки, ни одной технической неполадки, ни одного пострадавшего летчика. Ни в Газе или в Ливане, что хотя и близко и относительно просто, но по упомянутым причинам тоже странновато, учитывая объемы боевых вылетов, ни в Иране и в прошлую "двенадцатидневную войну", ни в нынешнюю, которая идет уже больше месяца и в неизмеримо более тяжелых условиях.
При этом нужно отметить, что хотя большинство любителей евреев и кричат, что жиды прячутся за спины американцев, сами штатники признаются, что именно израильские летчики делают до семидесяти процентов общей работы или по крайней мере в любом случае точно больше половины. И это при том, что у них сильно более сложная логистика, чем у ВВС США. Если, конечно, не считать несколько действительно уникальных и блистательных полетов тяжелых стратегических бомбардировщиков, совершенных непосредственно из Америки, то остальным их самолетам летать сильно ближе и проще.
Но у американцев есть потери, в том числе, повторю, постоянно и небоевые, а у евреев нет никаких.
И вот я в последнее время по этому поводу уже неоднократно слышал следующее. Причем на полном серьезе. Некоторые ультраортодоксы, указывая именно на эту самую практическую и даже теоретическую со статистической невероятность такой безупречной работы израильской авиации начали утверждать, что это исключительно заслуга тех, кто правильно молится за победу еврейского оружия. И по этой причине раввинов и учеников религиозных ешив следует прировнять к участникам боевых действий, а не тупо настаивать на призыве их в армию.
И знаете, я бы, наверное, даже мог с этим согласиться. Если бы не один нюанс. Молятся они, насколько мне известно, об армии целиком. Но при этом все остальные лажают. И танкисты, и саперы, и обычные пехотинцы, а уж артиллеристы в особенности. И ошибки постоянно, и жертвы, и "дружественный огонь" и даже вовсе откровенные глупости по тысяче самых разных причин. Почему на них иудейские молитвы не срабатывают? Или у них какая-то сакральная чисто авиационная направленность?
И, кстати, в данный момент в боях участвуют порядка тридцати женщин-лечиц, пилотов и штурманов истребителей. Не говоря уже о наземном техническом персонале, от которого, между прочим тоже очень многое зависит в функционировании всей этой системы.
От меня бессмысленно ждать даже попыток объяснения этого феномена. Могу лишь сделать совершенно непрофессиональное дилетантское предположение, что тут дело в богатой непрерывной традиции еврейской летной школы и уникальном боевом опыте лётчиков, связанном с нестандартно большом количестве часов пребывания в воздухе в военных и близких к ним условиях.
Ну, или кто-то там втихую отдельно молится за них так, как надо. И, к счастью, пока с большим успехом.


Купель. Да, купаться? А хрен вам. Coupelle, т.е., чашечка, по-французски. Родственное слову cup и т.д.
Или нет. См. цитату из Фассмера