Классы кластеризации букв K-Means - PullRequest
0 голосов
/ 07 ноября 2019

Я работаю над заданием, которое требует базовой реализации алгоритма кластеризации k-средних в python. Данные, с которыми мы работаем, имеют необработанную оценку, которая является числовой, и необработанную буквенную оценку, которая не является числовой. Мы должны редактировать код, указанный в лекции, чтобы выполнить это задание. Я получаю сообщение об ошибке, что строка не может быть преобразована в число с плавающей точкой, и я понимаю это, но не знаю, как поступить. Мы не обсуждали кодирование меток, поэтому я предполагаю, что оно не разрешено для назначения, кроме того, мы не можем использовать k-режимы, потому что оно не было изучено. Спасибо.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn import metrics

grades = pd.read_csv('grades.csv')
raw_grades = pd.DataFrame(grades, columns = ['raw grade', 'raw letter'])
raw_grades
np.random.seed(5)
myKMeans=KMeans(n_clusters=5).fit(raw_grades)
labels = kmeans.labels_
labels[0:20]

raw_grades выглядит следующим образом:

raw grade   raw letter

0 56,1 F 1 60,1 D = 2 60,4 D = 3 63,1 D = 4 64,4 D

Я получаю сообщение об ошибке: ValueError Traceback (most recent call last) <ipython-input-23-f444641587d3> in <module> 1 np.random.seed(5) 2 X = raw_grades[['raw grade','raw letter']] ----> 3 myKMeans=KMeans(n_clusters=5).fit(X) 4 labels = kmeans.labels_ 5 labels[0:20] /usr/local/lib/python3.6/dist-packages/sklearn/cluster/k_means_.py in fit(self, X, y, sample_weight) 970 tol=self.tol, random_state=random_state, copy_x=self.copy_x, 971 n_jobs=self.n_jobs, algorithm=self.algorithm, --> 972 return_n_iter=True) 973 return self 974 /usr/local/lib/python3.6/dist-packages/sklearn/cluster/k_means_.py in k_means(X, n_clusters, sample_weight, init, precompute_distances, n_init, max_iter, verbose, tol, random_state, copy_x, n_jobs, algorithm, return_n_iter) 310 order = "C" if copy_x else None 311 X = check_array(X, accept_sparse='csr', dtype=[np.float64, np.float32], --> 312 order=order, copy=copy_x) 313 # verify that the number of samples given is larger than k 314 if _num_samples(X) < n_clusters: /usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator) 494 try: 495 warnings.simplefilter('error', ComplexWarning) --> 496 array = np.asarray(array, dtype=dtype, order=order) 497 except ComplexWarning: 498 raise ValueError("Complex data not supported\n" /usr/local/lib/python3.6/dist-packages/numpy/core/_asarray.py in asarray(a, dtype, order) 83 84 """ ---> 85 return array(a, dtype, copy=False, order=order) 86 87 ValueError: could not convert string to float: 'A+'

...