powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кластеризация K-means mssql
10 сообщений из 10, страница 1 из 1
Кластеризация K-means mssql
    #40125474
moneyput
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, имеется таблица peoples. Задание звучит так: "Требуется написать хранимую процедуру кластеризации возрастных групп по численности и отношению мужчин к женщинам алгоритмом k-means. Число кластеров задаётся параметром." Пол задается через id_gender, где 1 - М, 2-Ж. Ищу третий день, ничего по делу не смог найти. буду благодарен за любую помощь.

create table peoples
(
id int primary key identity(1,1),
year int,
id_type int,
id_gender int,
id_age_group int,
count_ float
);
...
Рейтинг: 0 / 0
Кластеризация K-means mssql
    #40125481
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Ищу третий день, ничего по делу не смог найти"

Где же вы искали и что же вы искали?

Начало здесь:
https://ru.wikipedia.org/wiki/Метод_k-средних

как освоите - отпишитесь здесь, продолжим
...
Рейтинг: 0 / 0
Кластеризация K-means mssql
    #40125483
moneyput
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин,

благодарю за помощь, но это я видел. Проблема в реализации метода средствами языка SQL.
...
Рейтинг: 0 / 0
Кластеризация K-means mssql
    #40125484
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mssqlserver 2017+ ?
Вызовите внешний скрипт на питоне.
Например, нечто вроде такого: http://datareview.info/article/klasterizatsiya-s-pomoshhyu-metoda-k-srednih-na-python/
...
Рейтинг: 0 / 0
Кластеризация K-means mssql
    #40125487
moneyput
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uaggster, благодарю за помощь. Забыл написать, что реализовать нужно на чистом SQL без python вставок. mssql server 19
...
Рейтинг: 0 / 0
Кластеризация K-means mssql
    #40125492
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moneyput
uaggster, благодарю за помощь. Забыл написать, что реализовать нужно на чистом SQL без python вставок. mssql server 19


На чем остановились в написании скрипта? Покажите ваш вариант
...
Рейтинг: 0 / 0
Кластеризация K-means mssql
    #40125503
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moneyput,

реляционные БД не предназначены для обработки массивов. С чем связаны такие необычные требования?
...
Рейтинг: 0 / 0
Кластеризация K-means mssql
    #40125505
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moneyput
Ищу третий день, ничего по делу не смог найти.


Надо-бы не искать, а брать и писать по шагам алгоритма
если уж есть такая сильная необходимость использовать инструмент не по назначению
(несмотря на то что MS постарался и прикрутил внешние средства для решения таких задач - как уже выше указали
через процедуру sp_execute_external_script с вызовом соответствующих ML библиотек на Python или R )
то в лоб берёте алгоритм и реализуете очень длинным кодом с рекурсиями и сходимостями

А не находится именно потому что sql server для других целей и в здравом уме не много найдётся мазохистов лезть на кактус.
...
Рейтинг: 0 / 0
Кластеризация K-means mssql
    #40125510
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Кластеризация K-means mssql
    #40125949
Alex_Va
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста, перевести этот MySQL в tSQL

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
drop procedure if exists kmeans;


drop table if exists km_data;      -- contains initial data, only 2 dimensions
drop table if exists km_clusters;  -- contains the final clusters centres
drop table if exists km_steps;     -- shows intermediate steps
create table km_data (id int primary key, cluster_id int, x1 float, x2 float);
create table km_clusters (id int auto_increment primary key, x1 float, x2 float);
create table km_steps (id int, x1 float, x2 float);


DELIMITER //
CREATE PROCEDURE kmeans(v_K int)
BEGIN
TRUNCATE km_clusters;
truncate km_steps;

-- initialize cluster centers
INSERT INTO km_clusters (x1, x2) SELECT x1, x2 FROM km_data LIMIT v_K;
REPEAT
    insert into km_steps select * from km_clusters;
    -- assign clusters to data points
    UPDATE km_data d SET cluster_id = (SELECT id FROM km_clusters c 
        ORDER BY POW(d.x1-c.x1,2)+POW(d.x2-c.x2,2) ASC LIMIT 1);
    -- calculate new cluster center
    UPDATE km_clusters C, (SELECT cluster_id, 
        AVG(x1) AS x1, AVG(x2) AS x2 
        FROM km_data GROUP BY cluster_id) D 
  SET C.x1=D.x1, C.x2=D.x2 WHERE C.id=D.cluster_id;
UNTIL ROW_COUNT() = 0 END REPEAT;
END//
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Кластеризация K-means mssql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]