Python. Как импортировать мой собственный набор данных в алгоритм «k означает» - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу импортировать свои собственные данные (предложения, которые находятся в файле .txt) в этот пример алгоритма, который можно найти по адресу: https://scikit -learn.org / stable / auto_examples / cluster / plot_kmeans_silhouette_analysis.html

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

Все, что я предсказываю, это то, что мне нужно заменить этот кусок кода прямо здесь:

X, y = make_blobs(n_samples=500,
          n_features=2,
          centers=4,
          cluster_std=1,
          center_box=(-10.0, 10.0),
          shuffle=True,
          random_state=1)  # For reproducibility

Также я не понимаю этих переменных X, y .Я предполагаю, что X - это массив данных, а что насчет y ?

Должен ли я просто присвоить все X, как это, и этот пример кода будет работать?Но как насчет таких функций make_blobs , как центры, n_features и т. Д.?Нужно ли указывать их как-то иначе?

# open and read from the txt file
path = "C:/Users/user/Desktop/sentences.txt"
file = open(path, 'r')
# assign it to the X
X = file.readlines() 

Любая помощь приветствуется!

1 Ответ

1 голос
/ 01 апреля 2019

Во-первых, вам нужно создать отображение ваших слов на число, которое может использовать ваш алгоритм k-средних.

Например:

I ride a bike and I like it.
1   2  3  4    5  1  6   7  # <- number ids

После этого у вас есть новыйвстраивая для вас набор данных, и вы можете применить K-средства.Если вы хотите получить однородный внешний вид для вашего образца, вы должны преобразовать их в одно горячее представление (то есть, вы создаете массив N-длины для каждого образца, где N - общее количество уникальных слов, которые у вас есть от одного досоответствующая позиция, которая совпадает с индексом выборки).

Пример для вышеупомянутого для N = 7 будет

1 -> 1000000
2 -> 0100000
...

Итак, теперь вы можете иметь Xпеременная, содержащая ваши данные в правильном формате.Вам не нужно y, что соответствует меткам для ваших образцов.

clusterer = KMeans(n_clusters=n_clusters, random_state=10)
cluster_labels = clusterer.fit_predict(X)
silhouette_avg = silhouette_score(X, cluster_labels)
...
...