Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/36: Рейтинг темы: голосов - 36, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 14.12.2022
Сообщений: 2

Расстояния в многомерном пространстве

21.12.2022, 18:15. Показов 7769. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Клиенту понравилась квартира с индексом 12. Найдите к ней ближайшую по евклидовому расстоянию.
Создайте список с расстояниями всех векторов до вектора с номером 12. Вычислите индекс наиболее похожего объекта и сохраните в переменной best_index. Напечатайте результат на экране (уже в прекоде).
Python
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
32
33
34
35
36
37
38
39
40
41
import numpy as np
import pandas as pd
from scipy.spatial import distance
 
columns = ['комнаты', 'пл. общая', 'кухня', 'пл. жилая', 'этаж', 'всего этажей']
realty = [
    [1, 38.5, 6.9, 18.9, 3, 5],
    [1, 38.0, 8.5, 19.2, 9, 17],
    [1, 34.7, 10.3, 19.8, 1, 9],
    [1, 45.9, 11.1, 17.5, 11, 23],
    [1, 42.4, 10.0, 19.9, 6, 14],
    [1, 46.0, 10.2, 20.5, 3, 12],
    [2, 77.7, 13.2, 39.3, 3, 17],
    [2, 69.8, 11.1, 31.4, 12, 23],
    [2, 78.2, 19.4, 33.2, 4, 9],
    [2, 55.5, 7.8, 29.6, 1, 25],
    [2, 74.3, 16.0, 34.2, 14, 17],
    [2, 78.3, 12.3, 42.6, 23, 23],
    [2, 74.0, 18.1, 49.0, 8, 9],
    [2, 91.4, 20.1, 60.4, 2, 10],
    [3, 85.0, 17.8, 56.1, 14, 14],
    [3, 79.8, 9.8, 44.8, 9, 10],
    [3, 72.0, 10.2, 37.3, 7, 9],
    [3, 95.3, 11.0, 51.5, 15, 23],
    [3, 69.3, 8.5, 39.3, 4, 9],
    [3, 89.8, 11.2, 58.2, 24, 25],
]
 
df_realty = pd.DataFrame(realty, columns=columns)
 
# англ. индекс понравившегося объекта
preference_index = 12
preference_vector = df_realty.loc[preference_index].values
 
distances = # < напишите код здесь >
 
# < напишите код здесь >
 
best_index = # < напишите код здесь >
 
print("Индекс наиболее похожей квартиры:", best_index)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.12.2022, 18:15
Ответы с готовыми решениями:

Решение задачи с нахождением расстояния между двумя точками в 3D пространстве
Здравствуйте! У меня возникла проблема с задачей. По условию задачи даны две точки p1, p2 с координатами xyz, нужно найти расстояние между...

Вектор в многомерном пространстве»
Данные класса: размерность вектора, указатель на динамически размещаемый массив координат вектора. Функции класса: сложение, вычитание...

Запутался в многомерном пространстве
Приветствую. Есть у меня четырехмерное пространство которое формирую согласно приложенному рисунку. Далее смотрю два числа из него D...

13
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
21.12.2022, 20:42
Marinaa999, Это?:
Python
1
2
3
4
5
6
…
preference_index = 12
preference_vector = np.repeat([df_realty.loc[preference_index].values], len(df_realty), axis=0)
distances = distance.cdist(df_realty.values, preference_vector, 'euclidean')
print(df_realty.iloc[distances[:,0].argsort()[1],:])
2
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
21.12.2022, 21:04
Gdez, с репитом слегка перемудрили

Python
1
2
preference_vector = df_realty.loc[preference_index].values.reshape(1,-1)
distances = distance.cdist(df_realty.values, preference_vector, 'euclidean')
1
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
21.12.2022, 21:14
Red white socks, скорее всего. Со SciPy не работал - ругнулся на не соответствие размеров.

Добавлено через 4 минуты
Верно. Проблема не в несоответствии размеров, а в размерности вектора
Можно было просто в скобки взять без решепа По времени думаю некритично…
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
21.12.2022, 21:25
Цитата Сообщение от Gdez Посмотреть сообщение
ругнулся на не соответствие размеров
Ну да, он ожидает матрицы (i,n), (j,n), где i, j - количество векторов R_n в соответствующих множествах.
Евклидовская метрика по умолчанию, именной аргумент можно здесь опустить.
1
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
21.12.2022, 22:09
Небольшая вариация, argmin лучше, чем argsort...:
Python
1
2
3
4
5
6
7
preference_index = 12
preference_vector = df_realty.loc[preference_index].values.reshape(1,-1)
distances = distance.cdist(np.array(df_realty.values), preference_vector)
distances[preference_index]=np.inf
best_index=np.argmin(distances)
print(df_realty.iloc[best_index])
print("Индекс наиболее похожей квартиры:", best_index)
2
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 3
08.01.2023, 19:54
Всем привет! Расшарю этот тредик сюда тоже

Учебная задача, вектора

Я делал вот так:

Python
1
2
3
4
5
6
7
8
9
distances = []
 
for i in range(len(df_realty)):
value = distance.euclidean(np.array(i), np.array(preference_vector))
distances.append(value)
 
best_index = np.array(distances).argsort()[1]
 
print("Индекс наиболее похожей квартиры:", best_index)
Но решение не сработало. В задании требуется решать именно через distance.euclidean(), но у меня чот не выходит

Добавлено через 8 минут
Решил задачу:

Python
1
2
3
for i in range(len(df_realty)):
    vector = df_realty.loc[i].values
    distances.append(distance.euclidean(preference_vector, vector))
0
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
08.01.2023, 20:12
Brodeur,
Python
1
2
3
4
5
…
distances = [distance.euclidean(df_realty.iloc[i,:].values, np.array(preference_vector)) 
                for i in range(len(df_realty))]
 
best_index = np.array(distances).argsort()[1]
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
09.01.2023, 12:23
Что дает решение таких задач? Знание библиотеки? Тренировка памяти? Для последнего, по-моему, лучше учить стихи хороших поэтов. Больше будет пользы.

А для того, кто знает математику, задача тривиальна:

Python
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
32
33
34
35
36
37
38
39
40
41
realty = [
    [1, 38.5, 6.9, 18.9, 3, 5],
    [1, 38.0, 8.5, 19.2, 9, 17],
    [1, 34.7, 10.3, 19.8, 1, 9],
    [1, 45.9, 11.1, 17.5, 11, 23],
    [1, 42.4, 10.0, 19.9, 6, 14],
    [1, 46.0, 10.2, 20.5, 3, 12],
    [2, 77.7, 13.2, 39.3, 3, 17],
    [2, 69.8, 11.1, 31.4, 12, 23],
    [2, 78.2, 19.4, 33.2, 4, 9],
    [2, 55.5, 7.8, 29.6, 1, 25],
    [2, 74.3, 16.0, 34.2, 14, 17],
    [2, 78.3, 12.3, 42.6, 23, 23],
    [2, 74.0, 18.1, 49.0, 8, 9],
    [2, 91.4, 20.1, 60.4, 2, 10],
    [3, 85.0, 17.8, 56.1, 14, 14],
    [3, 79.8, 9.8, 44.8, 9, 10],
    [3, 72.0, 10.2, 37.3, 7, 9],
    [3, 95.3, 11.0, 51.5, 15, 23],
    [3, 69.3, 8.5, 39.3, 4, 9],
    [3, 89.8, 11.2, 58.2, 24, 25],
]
 
 
def dist2(v1,v2):
    return sum(map(lambda pair: (pair[0]-pair[1])**2,zip(v1,v2)))
 
twelve=realty[12]
 
for i in range(len(realty)):
    imin=-1
    mindist=None
    if i != 12:
        d=dist2(realty[12],realty[i])
        if mindist is None:
            mindist=d
            imin=i
        elif d < mindist:
            mindist=d
            imin=i
print(imin,mindist**0.5)
Квартира с индексом 19.
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
09.01.2023, 12:25
Catstail, помимо знания библиотек, нужны навыки работы с ними
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
09.01.2023, 12:27
Red white socks, это "знание 2-го порядка".
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
09.01.2023, 12:31
Catstail, без разницы, 2-го, 4-го или 10-го.
Выпускать деток в открытое море боязно, вот и плавают с бревнышком в лягушатнике
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
09.01.2023, 14:35
Catstail, знание библиотек и, вообще, вдумчивое чтение документации - очень хороший навык. Позволяет писать короткий и достаточно высокопроизводительный код, делать меньше ошибок. Питон, как язык, тем и хорош что у него есть библиотеки почти на все случаи жизни. Не было бы Numpy, SciPy, Scikit-learn, OpenCV, Keras и т.д. популярность Питона, я уверен, сейчас была бы гораздо ниже.
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
09.01.2023, 15:05
Верно. Все верно. Но знание алгоритмов и математики все равно "первичнее".
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.01.2023, 15:05
Помогаю со студенческими работами здесь

Разреженный вектор в многомерном пространстве
Есть задачка: «Разреженный вектор в многомерном пространстве». Необходимо включить в нее: Данные класса: размерность вектора,...

Формула равномерно распределенных векторов в многомерном пространстве
Это название я придумал сам просто чтобы хоть как-то сформулировать вопрос. План-минимум — как раз и выяснить, как это называется и в...

Идея задачи в многомерном пространстве - аналитическое решение неизвестно
Добрый день! Возможно, вопрос относится к другому подразделу. В общем, есть у меня матрица близостей (proximity matrix) для N...

Вычисление расстояния от точки до прямой в пространстве
Вычисление расстояния от точки до прямой в пространстве

Измерение минимального расстояния между отрезками в пространстве
Подскажите пожалуйста, как измерить коротчайшее расстояние между двумя отрезками в пространстве в AutoCAD? Даны четыре точки с такими...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru