Я работаю над заданием, которое требует базовой реализации алгоритма кластеризации 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+'