Python 3 Cosine Ближайший формат соседей - PullRequest
0 голосов
/ 21 сентября 2018

Я работаю над самообучением в области интеллектуального анализа данных на бесплатном онлайн-ресурсе, который нашел.По сути, я получил CSV-файл с кучей имен, названий фильмов и тем, что каждый человек оценил.Я пытаюсь получить K-Nearest Neighbor от него с помощью косинусной метрики, но я не могу получить результат, чтобы выглядеть не ужасно.Вот что у меня есть для кода:

from pandas import DataFrame
import pandas as pd
import numpy as np
from sklearn.neighbors import NearestNeighbors as nn

df =  pd.read_csv("https://docs.google.com/spreadsheets/d/1MSBm3M6YmaLf0aiJCvkvrPsIJB2pPuBwse5ylnzEHRI/pub?gid=639849687&single=true&output=csv",index_col='Unnamed: 0')

df = df.fillna(0)

nn([df], metric = 'cosine')

Довольно просто сделать!За исключением того, что мой вывод выглядит так:

NearestNeighbors(algorithm='auto', leaf_size=30, metric='cosine',
     metric_params=None, n_jobs=1,
     n_neighbors=[                      Patrick C  Heather  Bryan  
Patrick T  Thomas  aaron  \
Alien                       NaN      NaN    2.0        NaN     5.0    
4.0
Avatar                      4.0      5.0    5.0        4.0     2.0    NaN
Blade Runner                5.0      NaN    NaN        N...
You Got Mail           NaN  2.0      2.0   1.0      2.0      NaN   2.0

[25 rows x 25 columns]],
     p=2, radius=1.0)

Это грязно и даже не показывает все данные.Я попытался преобразовать его в массив, но у меня появляется сообщение об ошибке «Объект ABCMeta не поддерживает индексирование»

Я довольно новичок в Python, я могу сделать несколько основных вещей, но я не эксперт.Я надеялся, что кто-то может помочь подтолкнуть меня в направлении, чтобы помочь очистить это.

Спасибо.

1 Ответ

0 голосов
/ 21 сентября 2018

Мне неясно, как выглядит ваш желаемый результат.Однако вы должны сначала создать экземпляр класса, а затем использовать метод fit().

from pandas import DataFrame
import pandas as pd
import numpy as np
from sklearn.neighbors import NearestNeighbors as nn

df =  pd.read_csv("https://docs.google.com/spreadsheets/d/1MSBm3M6YmaLf0aiJCvkvrPsIJB2pPuBwse5ylnzEHRI/pub?gid=639849687&single=true&output=csv",index_col='Unnamed: 0')
df = df.fillna(0)
model = nn(metric = 'cosine')
model.fit(df.values)

Теперь model - это подобранный объект, который вы можете использовать, чтобы найти K-соседей любой новой точки, котораяэто, вероятно, ваша цель.Смотри документацию здесь .

...