k-means法sickit-learn クラスタリング エラー解決方法
心拍センサで取得したデータをcsvファイルへ保存しread_csvを行いk-means法を用いて2種類(感情別(画像参照;1、落ち着いている 2、イライラしている))にクラスタリングしたいのですが、
ValueError; Found array with 0 feature(s) (shape=(30,0)) while a minimum of 1 is required.
というエラーが発生し、エラーの解決策がわからず困っております。
取得したデータのcsvファイルへの書き込み方が悪いのでしょうか?
ソースコードです
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from matplotlib.colors import ListedColormap
colors = ['red','blue']
cmap = ListedColormap(colors)
from sklearn import datasets
from sklearn.cluster import KMeans
import pandas as pd
def main():
# クラスタ数
N_CLUSTERS = 2
# Blob データを生成する
##dataset = datasets.make_blobs(centers=N_CLUSTERS)
# 正解ラベルは使わない
# targets = dataset[1]
data = pd.read_csv('heartRate1.csv',names=('cute','ang'))
del(data['cute'])
del(data['ang'])
data_array = data.as_matrix().T
# 特徴データ
features = data_array.T
# クラスタリングする
cls = KMeans(n_clusters=N_CLUSTERS)
pred = cls.fit_predict(features)
# 各要素をラベルごとに色付けして表示する
##for i in range(N_CLUSTERS):
## labels = features[pred == i]
plt.scatter(labels[:, 0], labels[:, 1], c=pred, cmap=cmap)
# クラスタのセントロイド (重心) を描く
centers = cls.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], s=80,
marker='p', edgecolors='k', c=range(N_CLUSTERS), cmap=cmap)
plt.show()
if __name__ == '__main__':
main()
csvファイルの中身です