Я новичок в области Data Science и Python.Поэтому я стараюсь использовать KMeans из sklearn.У меня есть информация о звонках, и я хочу найти центроидов.Таким образом, я могу сделать это для одного телефонного номера, но не могу для 10. Когда я использовал цикл for, я получил ошибку "не удалось преобразовать строку в число с плавающей точкой: 'cd9f3b1a-2eb8-4cdb-86d1-5d4c2740b1dc'".
За один номер телефона.Это работает.
df = pd.read_csv('Datasets/CDR.csv')
df.CallDate = pd.to_datetime(df.CallDate)
df.CallTime = pd.to_timedelta(df.CallTime)
df.Duration = pd.to_timedelta(df.Duration)
in_numbers = df.In.unique().tolist()
in_numbers
user1 = df[(df.In == in_numbers[0])]
user1 = user1[(user1.DOW == 'Sat') | (user1.DOW == 'Sun')]
user1 = user1[(user1.CallTime < "06:00:00") | (user1.CallTime > "22:00:00")]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(user1.TowerLon,user1.TowerLat, c='g', marker='o', alpha=0.2)
ax.set_title('Weekend Calls (<6am or >10p)')
user1 = pd.concat([user1.TowerLon, user1.TowerLat], axis = 1)
model = KMeans(n_clusters = 2)
labels = model.fit_predict(user1)
centroids = model.cluster_centers_
print(centroids)
ax.scatter(centroids[:,0], centroids[:,1], marker='x', c='red', alpha=0.5, linewidths=3, s=169)
plt.show()
Но когда я помещаю это в цикл, я получаю ошибку.
locations = []
for i in range(10):
user = df[(df.In == in_numbers[i])]
user.plot.scatter(x='TowerLon', y='TowerLat', c='purple', alpha=0.1, title='Call Locations', s = 30)
user = user[(user.DOW == 'Sat') | (user.DOW == 'Sun')]
user = user[(user.CallTime < "06:00:00") | (user.CallTime > "22:00:00")]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(user.TowerLon,user.TowerLat, c='g', marker='o', alpha=0.2)
ax.set_title('Weekend Calls (<6am or >10p)')
model = KMeans(n_clusters = 2)
labels = model.fit_predict(user)
centroids = model.cluster_centers_
ax.scatter(centroids[:,0], centroids[:,1], marker='x', c='red', alpha=0.5, linewidths=3, s=169)
locations.append(centroids)
plt.show()
Где моя ошибка?Спасибо
CDR.csv