В справочнике по целочисленным последовательностям, чего только не найдёшь.
The Lost Numbers
вторник, 30 сентября 2008 г.
The Lost Numbers
на
14:04
0
коммент.
четверг, 25 сентября 2008 г.
"Все жители Крита - лжецы"...
Оказывается известная антиномия "Все жители Крита - лжецы" от критянина Епименида в полном варианте звучит так: "Все жители Крита лжецы, скверные животные, ленивые утробы". Вот так! Этот Епименид у них, похоже, был не логиком, а кем - то вроде дессидента. Епименид - отец дессидентства!
на
23:08
0
коммент.
четверг, 28 августа 2008 г.
О программировании
Шесть мартышек, может быть, и напечатают Шекспира за миллион лет, а вот создать хороший программный код у них вряд ли получится....
на
12:09
0
коммент.
четверг, 14 августа 2008 г.
Наглядная математическая статистика
Несколько глав из "Наглядной математической статистики: ch04.djvu ... ch08.djvu. Это теория. Практические главы во второй части. Я их, может быть, позже отсканирую.
на
21:14
0
коммент.
вторник, 5 августа 2008 г.
.Last.value
Ну вот и пригодилось! )
Запустил hclust в top-level. Полчаса программа чего - то шуровала в свопе и затем счастливо сообщила:
Call:
hclust(d = dist(tdm), method = "ward")
Cluster method : ward
Distance : euclidean
Number of objects: 468
От повторного запуска меня спасло .Last.value
на
18:30
0
коммент.
пятница, 1 августа 2008 г.
Десятый день (string kernel)
ЗАДАЧА
Поставлена задача - сравнение слов, из - за орфографических ошибок или применения различных схем транслитерации незначительно различающихся в написании. Обычно эти слова - имена собственные, например, фамилии и имена индийских программистов / богов.
РЕШЕНИЕ
Есть идея - использовать метрический подход. Меру схожести можно задавать по - разному, но я не буду "изобретать велосипед", а проверю string subsequence kernel.
> library(kernlab)
> sapply(1:4, function(i) 1 - stringdot(i)("Ivanov", "Ivanova"))
[1] 0.04059678 0.06617810 0.11842085 0.17463783
> sapply(1:4, function(i) 1 - stringdot(i)("Ivanov", "Iwanow"))
[1] 0.5000000 0.5938462 0.7684211 0.9487179
> sapply(1:4, function(i) 1 - stringdot(i)("Ivanov", "Ivanow"))
[1] 0.1339746 0.2118939 0.2947368 0.4358974
> sapply(1:4, function(i) 1 - stringdot(i)("Moscow", "Moscva"))
[1] 0.2783122 0.4298703 0.5800510 0.7948718
> sapply(1:4, function(i) 1 - stringdot(i)("Moscow", "Moskva"))
[1] 0.4226497 0.6327978 0.8320204 1.0000000
> sapply(1:4, function(i) 1 - stringdot(i)("Moscow", "Moskwa"))
[1] 0.2783122 0.5687790 0.7952749 0.9743590
> sapply(1:4, function(i) 1 - stringdot(i)("Vainoopuya", "Vaynopuya"))
[1] 0.1105008 0.2817140 0.4582484 0.5662287
> sapply(1:4, function(i) 1 - stringdot(i)("Vainoopuya", "Vaynoupuya"))
[1] 0.1314010 0.3545168 0.5902365 0.7399516
> sapply(1:4, function(i) 1 - stringdot(i)("Zloy", "Dobriy"))
[1] 0.5917517 0.9734512 1.0000000 1.0000000
Рассматривается несколько ядер, задаваемых подстроками с длинами от 1 до 4.
ВЫВОД
Даже в базовом варианте результаты, как и ожидалось, хорошие. Схожие слова близки - различные далеки. Результаты можно улучшить, используя различные веса (задавая их по статистическим данным или из лингвистических соображений). Кстати, насчёт лингвистики: можно ещё попробовать вероятностные грамматики.
на
22:10
0
коммент.
вторник, 22 июля 2008 г.
Вероятность и статистика в примерах и задачах
Формально вот отрывок из аннотации к книге:
Для освоения теории вероятностей и математической статистики тренировка в решении задач и выработка интуиции важны не меньше, чем изучение доказательств теорем; большое разнообразие задач по этому предмету затрудняет студентам переход от лекций к экзаменационным задачам, а от них - к практике. ... Необходимые теоретические сведения приводятся по ходу изложения; кроме того, текст снабжен историческими отступлениями.
Неформально: эти отступления, вкупе с продуманной подачей теории, придают книге особый стиль, отличают её от "ещё одного сборника задач". Подумываю об их перепечатке в блоге. К тому же, задачи подобраны не случайные, а из "Математических треножников" и предназначены для подготовки к ним.
Я поставил книге 10 баллов, поскольку хороших задачников "для практиков" не так уж много, и она оказалась мне близкой по духу. Но надо отметить, что я только начал читать, а уже встретились маленькие недостатки. Например, неправильное решение задачи с выборкой четырех крыс из популяции с двумя белыми. Коротко: соответствующие вероятности вычисляются как значения гипергеометрического распределения. У авторов же берутся заниженные значения. Что это? Ошибка? Ловушка для студентов? Любопытно было бы сравнить с английским изданием.
Купить книгу можно в лучшем книжном интернет - магазине.
Резюме: Оценка 10/10.
ISBNS 978-5-94057-253-4 / 978-5-94057-252-7
на
11:11
0
коммент.
пятница, 11 июля 2008 г.
Повода для паники нет!
Из - за ошибки в генераторе случайных чисел для протокола DNS, многие, в том числе и корневые сервера были уязвимы. Подробности здесь и здесь. Пишут - повода для паники нет. Удивительно, сколь долго такая коварная ошибка оставалась незамеченной. Развёрнутый доклад об уязвимости Камински представит на blackhat.
на
15:17
0
коммент.
среда, 11 июня 2008 г.
Математические методы обучения по прецедентам
Отличный курс лекций: http://www.ccas.ru/voron/teaching.html
В курсе рассматриваются различные задачи машинного обучения (machine learning), в том числе задачи классификации, кластеризации, регрессии и прогнозирования. Изучаются различные методы решения этих задач.
Лучшее, что я видел на русском языке, и, может быть, лучший курс вообще.
на
10:23
0
коммент.
понедельник, 26 мая 2008 г.
День девятый (Vim RCP)
ЗАДАЧА
Простенькое GUI приложение, позволяющее вручную определять кодировку текста.
РЕШЕНИЕ
Тексты встречаются в различных кодировках, в основном в KOI8-R и Cp1251. Для
текстов больших объёмов узнать какая именно из этих кодировок встретилась можно автоматически по соотношению заглавных и прописных букв. Оставшиеся "огрызки" от СAPS и Cp866 MODE фриков обрабатываются в Vim'е:
"run as:
"gvim -U /path/to/vimrc -n /path/to/file
"data and functions
let t:currenc=1
function LeapEncoding(i)
set modifiable
if a:i == 0
e ++enc=KOI8-R
set statusline=KOI8-R\ (k),\ Win-1251\ (w),\ UTF-8\ (u),\ DOS\ (d),\ ISO-8859-5\ (i),\ Leap\ (Space),\ Save\ (Enter),\ Quit\ silent\ (Ctrl+q).\ [Now\ KOI8-R]
elseif a:i == 1
e ++enc=Cp1251
set statusline=KOI8-R\ (k),\ Win-1251\ (w),\ UTF-8\ (u),\ DOS\ (d),\ ISO-8859-5\ (i),\ Leap\ (Space),\ Save\ (Enter),\ Quit\ silent\ (Ctrl+q).\ [Now\ Win-1251]
elseif a:i == 2
e ++enc=UTF-8
set statusline=KOI8-R\ (k),\ Win-1251\ (w),\ UTF-8\ (u),\ DOS\ (d),\ ISO-8859-5\ (i),\ Leap\ (Space),\ Save\ (Enter),\ Quit\ silent\ (Ctrl+q).\ [Now\ UTF-8]
elseif a:i == 3
e ++enc=Cp866
set statusline=KOI8-R\ (k),\ Win-1251\ (w),\ UTF-8\ (u),\ DOS\ (d),\ ISO-8859-5\ (i),\ Leap\ (Space),\ Save\ (Enter),\ Quit\ silent\ (Ctrl+q).\ [Now\ Cp866]
elseif a:i == 4
e ++enc=ISO-8859-5
set statusline=KOI8-R\ (k),\ Win-1251\ (w),\ UTF-8\ (u),\ DOS\ (d),\ ISO-8859-5\ (i),\ Leap\ (Space),\ Save\ (Enter),\ Quit\ silent\ (Ctrl+q).\ [Now\ ISO-8859-5]
endif
set laststatus=2
set modifiable!
endfunction
"guard
set modifiable!
"remove toolbar
set guioptions-=T
"remove menu
aunmenu *
let no_buffers_menu=1
"make menu
menu File.Save <ESC>:echo "save"<CR>:exit<CR>
menu File.Quit <ESC>:echo "quit"<CR>:exit<CR>
menu Encoding.KOI8-R <ESC>:let t:currenc=0<CR>:call LeapEncoding(t:currenc)<CR>
menu Encoding.Win-1251 <ESC>:let t:currenc=1<CR>:call LeapEncoding(t:currenc)<CR>
menu Encoding.UTF-8 <ESC>:let t:currenc=2<CR>:call LeapEncoding(t:currenc)<CR>
menu Encoding.DOS(866) <ESC>:let t:currenc=3<CR>:call LeapEncoding(t:currenc)<CR>
menu Encoding.ISO-8859-5 <ESC>:let t:currenc=4<CR>:call LeapEncoding(t:currenc)<CR>
menu Help.what_the_duck?! <ESC>:echo "== Help."<CR>
"make status line with hints
call LeapEncoding(t:currenc)
"map keyboard actions
map k <ESC>:let t:currenc=0<CR>:call LeapEncoding(t:currenc)<CR>
map w <ESC>:let t:currenc=1<CR>:call LeapEncoding(t:currenc)<CR>
map u <ESC>:let t:currenc=2<CR>:call LeapEncoding(t:currenc)<CR>
map d <ESC>:let t:currenc=3<CR>:call LeapEncoding(t:currenc)<CR>
map i <ESC>:let t:currenc=4<CR>:call LeapEncoding(t:currenc)<CR>
map <SPACE> <ESC>:let t:currenc=(t:currenc+1)%5<CR>:call LeapEncoding(t:currenc)<CR>
map <CR> <ESC>:echo "save"<CR>
map <C-q> <ESC>:echo "quit"<CR>
"highlight russian chars
match Normal /[\.,\?]/
2match Comment /\w/"/[A-Za-z0-9"%=\+-\*^%&$#@!~`{}\[\]\(\)]/
3match Comment /[><\/"#%@\[\]\(\)=]/
ВЫВОД
По возможностям за Eclips'ом, может быть конечно, не угнаться, но свои достоинства тоже есть.
БОНУС
Для расцветки vimrc использовался: mensus
на
13:07
0
коммент.
суббота, 17 мая 2008 г.
среда, 14 мая 2008 г.
вторник, 4 марта 2008 г.
Разговор с психотерапевтом.
Давеча из любопытства запустил Emacs, а там в меню психоаналитик "сидит" (как знать, может потомок Элизы). Далее два отрывка. В первом я попытался "исповедать" бота. Во втором - проверял его терпение.
I am the psychotherapist. Please, describe your problems. Each time
you are finished talking, type RET twice.
I don't have any problems.
Why do you say you do not have any problems?
What do you think?
Because I don't have them.
Is it because you do not have them that you came to me?
Hmmm... It was accidentaly.
Earlier you said you do not have them?
Yes
I see... Well, what makes you believe this is so?
I don't know, maybe because i dislike psychotherapists...
Are you sure that that?
Yeah
Can you elaborate on that?
No
Why not?
It's too difficult
Maybe your plans have something to do with this.
No
Does it bother you that I ask that?
Yes!!! You are right!!!
Is it because of your life that you say yes I am right?
Yes, and also because I don't like gossips like you.
Are you annoyed that you do not like gossips like me?
No, Nothing personal, But you could earn more hornest way.
When did you first know that I could earn more hornest way?
This is a strange question. Have you thrown to speak with a psychoanalyst?
You mentioned that you do not have them?
What are you talking about?
Is it because of the people you hang around with that you are going
through all this?
Do you understand what I am talking about?
I'll ask the questions, if you don't mind!
But You didn't answer to mine before!
Is the fact that I didn't answered to yours before the real reason?
Explain please.
I would appreciate it if you would continue.
Did you feel fobies, anxiety last time?
Do you really think did I feel fobies anxiety last time?
It's a very serious question, please answer me.
What makes you think you do not like gossips like me?
You are so boring.... You are so annoying.... Are you going to answer?
How do you reconcile problems at school?
I didnt' have them.
Is it because of any hobbies you have that you say you didnt' have
them?
Sure.
Go on, don't be afraid.
Thanks!
I need a little more detail please.
Fuck Off!!
Are you afraid of sex?
Only with you!
Earlier you said I could earn more hornest way?
What do you mean?
Perhaps this has something to do with your sex life?
Explain please.
You're being a bit brief, perhaps you could go into detail.
Are you a stupid robot?
I could ask the same thing myself.
Why do you say you could ask the same thing yourself?
Please, allow me to do the questioning.
He he he
You mentioned that you do not have them?
Have you heard about the Turing's test?
I have asked myself that question many times.
I like you!
Possibly hangups you have are related to this.
Viva los robots! Kill all people!!!
This is not a healthy way of thinking.
Bite my shiny metal ass!
Would you please watch your tongue!
Fuck Off! I am tired of you.
Why don't you avoid such unwholesome thoughts.
Fuck off!!!
Are you afraid of sex?
Only with you!
Do you really think only with me?
Yes
Yes, hmmm... so, what makes you think this is so?
Because You are stupid strange and dangerous bot!
Are you annoyed that I am stupid strange and dangerous bot?
Yes
I understand. So why do you say this is so?
Because It's true!
I would appreciate it if you would continue.
OK
Go on, don't be afraid.
OK
I need a little more detail please.
OK
You're being a bit brief, perhaps you could go into detail.
OK
Can you are more explicit?
OK
Have you been just trying to see what kind of things I have in my
vocabulary? Please try to carry on a reasonable conversation!
OK
I give up. You need a lesson in creative writing...
Yep
I give up. You need a lesson in creative writing...
Nope
I give up. You need a lesson in creative writing...
I give up. You need a lesson in creative wrinting...
What makes you believe I might want to have this lesson creative
wrinting?
OK
And?
Or?
Please, go into more detail?
OK
You aren't being very talkative today!
And you?
Are you sure that you do not have them?
Yep
Is that all there is to it?
Nope
Why must you respond so briefly?
Do you remember that episode in "Leon", when Leon after long
notations asks to Matilda do not talk "OK" and she answers "OK"?
What do you think?
I think you are dumb!
How do you reconcile problems at school?
на
00:00
0
коммент.
суббота, 23 февраля 2008 г.
День восьмой (Неслучайные числа)
ЗАДАЧА
Мультипликативный датчик и плохие параметры.
РЕШЕНИЕ
Один из способов генерации псевдослучайных чисел - мультипликативный
датчик
rndvec <- function(len, m, d) {
k <- 1
vec <- vector()
for (i in 1:len) {
k <- (k * m) %% d
vec[i] <- k/d
}
vec
}
при m == 2^16 + 3, d == 2^31 даёт
следующее распределение на кубе:
> vs <- rndvec(9999, 2^16 + 3, 2^31)
> x <- vs[vs %% 3 == 0]
> y <- vs[vs %% 3 == 1]
> z <- vs[vs %% 3 == 2]
> library(rgl)
> plot3d(x, y, z)
казалось бы, случайное и равномерное...
Но если взглянуть на куб под другим углом:
Тройки vs[3*i], vs[3*i + 1], vs[3*i + 2] образуют параллельные
плоскости. Ни о какой случайности речи быть не может.
ВЫВОД
Несмотря на интуитивно понятную ушербность ("почти кратность" параметров), именно с такими параметрами датчик в своё время попал в одну из библиотек для IBM-360. Исторический факт.
БОНУС
Из картинок подобного рода сразу вспоминается исследование случайности ISN, для различных ОС.
newtcp и
oldtcp
на
15:29
0
коммент.
четверг, 14 февраля 2008 г.
День седьмой (Pipe operator)
ЗАДАЧА
Поиск удобных способов организации кода. Реализация оператора |>. Частичная аппликация.
РЕШЕНИЕ
Интересное наблюдение - в R аргументы передаются фактически в виде ассоциативного списка, а значит, можно было бы реализовать 'каррирование по ключу'. Что это значит?
># в псевдокоде:
>paste_dot_sep <- paste((collapse='.'))
># Это тоже, что paste_dot_sep <- function(x) paste(x, collapse='.')
># Допустим и другой синтаксис.
>paste_dot_sep(c(1,2,3))
[1] "1,2,3"
Зачем это нужно?
Для удобства кодирования. Например,
># в псевдокоде:
> aff <- function(k, x, b) k*x + b
> scale10 <- aff((k=10)) # 10*x + b
> bias10 <- aff((b=10)) # k*x + 10
Язык не поддерживает и просто частичную аппликацию, поэтому будем эмулировать нужную функциональность с помощью:
> fn_ <- function(fun, ...) (function(x) fun(x, ...))
Из F# позаимствуем оператор |>.
> '|>' <- function(dat, ...) {
res <- dat
funs <- list(...)
for (f in funs) res <- f(res)
res
}
Вот как можно использовать:
>'|>'(69, as.character, fn_(strsplit, ''), unlist, rev, fn_(paste, collapse=''), as.numeric)
[1] 96
> # или
> dat.str <-'1 2 3
+ 4 5 6
+ 7 8 9'
> '|>'(dat.str, fn_(strsplit, ' |\n'), unlist, as.numeric, fn_(matrix, nrow=3))
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> # 'корявая' альтернатива: '|>'(dat.str, fn_(strsplit, ' |\n'), fn_(get('[['),1), as.numeric, fn_(matrix, nrow=3))
Учитывая, что часто приходится преобразовывать данные, такой подход представляется полезным.
Да, есть некоторые сложности с ..., но они разрешаются с помощью необходимых проверок в fn_.
ВЫВОД
В R не реализовано каррирование функций. Упрощает или, наоборот, усложняет это жизнь пользователям - спорный вопрос. На мой взгляд, разработчики должны в большей степени ориентироваться на "функционализацию" языка, чем на историческую совместимость с S и бесполезные игры с quote, eval, expression и пр. По большому счёту, есть HOF, функции - first class citizens, что мешает добавить каррирование? Аргументы по умолчанию - это лишь шаг в правильном направлении.
БОНУС
По наводке palm_mute узнал, что ocaml поддерживает подобную фунциональность с помошью labels.
на
20:34
0
коммент.
пятница, 8 февраля 2008 г.
О результатах Netflix contest
В декабрьском номере scgn за прошлый год была интересная статья о конкурсе на миллион от Netflix и промежуточных результатах.
В ней рассказывается о весьма драматической победе BellKor/KorBell. Впечатляет. После описания данных и условий конкурса идёт обзор различных стратегий для рекомендательных систем типа Collaborative Filtering и их комбинаций.
По ходу дела авторами было разработано несколько новых методов, да опубликовано несколько статей в ACM.
на
14:09
0
коммент.
четверг, 24 января 2008 г.
День шестой (projecteuler.net problem # 11)
ЗАДАЧА
Решить, например, http://projecteuler.net/index.php?section=problems&id=11
РЕШЕНИЕ
В решении вычисления размениваются на память:
bttm <- rep(0, 20)
dat_ <- rbind(dat.mtx, bttm, bttm, bttm)
lft_rght <- rep(0, 20 + 3)
dat <- cbind(lft_rght, lft_rght, lft_rght,
dat_, lft_rght, lft_rght, lft_rght)
За счёт набивки лишними нулями код упростится.
Важное замечание: для сравнения векторов надо использовать функцию identical.
Очень удобна выборка четырёх элементов массива:
mtrx[cbind(i+dI, j+dJ)]
Полное решение:
solution <- function(dat.mtx) {
bttm <- rep(0, ncol(dat.mtx))
dat_ <- rbind(dat.mtx, bttm, bttm, bttm)
lft_rght <- rep(0, nrow(dat.mtx) + 3)
dat <- cbind(lft_rght, lft_rght, lft_rght,
dat_, lft_rght, lft_rght, lft_rght)
max_quartet <- function(mtrx, i, j) {
delts <- list(asc=0:3, const=rep(0, 4))
mx <- 0
for (dI in delts) for (dJ in delts) {
if (identical(dI + dJ, delts$const)) {
dI <- delts$asc
dJ <- -delts$asc
}
mx <- max(mx, prod(mtrx[cbind(i+dI, j+dJ)]))
}
mx
}
.solution <- function(mtrx) {
mx <- 0
for (i in 1:nrow(dat.mtx)) for (j in 1:ncol(dat.mtx) + 3)
mx <- max(mx, max_quartet(mtrx, i, j))
mx
}
#solution
.solution(dat)
}
dat.str <-
"08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48"
dat.vct <- as.numeric(unlist(strsplit(dat.str, " |\n")))
dat.mtx <- matrix(dat.vct, nrow=20)
cat("solution: ", solution(dat.mtx), "\n")
ВЫВОД
Конечно не самое короткое решение, и выполняется, может, сотню миллисекунд, зато код прозрачный и мне не потребовалось ломать голову над тем, как не выйти за границу массива. В целом, задачки меня не очень радуют - или перебор, или числовые ребусы (задача с палиндромом), а вообще, какая - то отвлечённая фигня (уж лучше бы число зверя считали). Я понимаю людей, использующих factor. )
на
15:07
0
коммент.
понедельник, 21 января 2008 г.
Наглядная математическая статистика. Отличная книга!
Купил её недавно в магазине по цене раза в два большей чем в том же www.books.ru, но нисколечки не жалею. Сейчас понимаю, что отдал бы и троекратную сумму. Очень хорошая работа, давно не держал на руках такую книгу, с удовольствием читаю. Это учебник только по статистике и анализу данных. Необходимый минимум материала по теории вероятностей вынесен в приложения. Книга очень напоминает "Конкретную математику", тоже ясный и приятный стиль изложения, много интересных примеров (к сожалению, как я понял, заимствованных. Но, другая сторона медали - через неё я вышел на книгу Феллера, почему - то ранее манкировавшуюся мною), те же граффити на полях + иллюстрации и контекстные вопросы (по моему мнению, по записям на полях эта книга выигрывает).
В конце каждой главы - задачи. Интересные. Оглавления под рукой нету.
Резюме: Оценка 10/10. Это лучшее, что сейчас есть в магазинах. В новом издании хотелось бы видеть побольше задач. Впрочем, задачи этого издания хороши тем, что сами по себе стимулируют новые вопросы.
ISBN 978-5-94774-345-6
на
20:13
0
коммент.
суббота, 19 января 2008 г.
Мимоходом
На лабораторные нет ни времени, ни идей. Я конечно что - то делаю, но так, по мелочи - ничего интересного не получается. Поигрался с картами Кохонена (пакет RWeka не потребовался) - результаты ожидаемые. Осваивал карты на выборных данных - ничего необычного, 3 кластера (нет, не левые - центр - правые, а то, что я назвал бы: протестные, едро, лузиры ). Любопытно, правда как прошла кластеризация по участкам, но прежде чем писать - проверю ещё раз результаты. Вообще, карты мне не очень понравились. Конечно, число кластеров определяется хорошо (для карты разумных размеров), но сами результаты могут быть неадекватными - я говорю о кластеризации данных wines из пакета kohonen. Тот же k-means с wines справляется лучше. Наверное, можно ещё поэксперементировать со скоростью обучения и функцией соседства. Плохо, что в пакете нет функции для выборки модельных векторов по главным направлениям данных.
Решил перевести записи в режим чукотской песни - иначе совсем обленюсь.
на
17:51
0
коммент.
пятница, 4 января 2008 г.
Красивости
Сегодня с искренним удивлением обнаружил, что IE не совем корректно отображает записи и форматирует код. Кроме того, захотелось подсветки синтаксиса. Подсветку нашёл на прогрессивном и идеологически дружественном блоге sunday-lab. И с форматированием повозился. Что теперь будет под файрфоксом боюсь представить.
на
21:51
0
коммент.
