50967


心拍センサで取得したデータをcsvファイルへ保存しread_csvを行いk-means法を用いて２種類（感情別（画像参照；１、落ち着いている
２、イライラしている））にクラスタリングしたいのですが、

[code]

    ValueError; Found array with 0 feature(s) (shape=(30,0)) while a minimum of 1 is required.
    
[/code]

というエラーが発生し、エラーの解決策がわからず困っております。  
取得したデータのcsvファイルへの書き込み方が悪いのでしょうか？

ソースコードです

[code]

    #!/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()
    
[/code]

csvファイルの中身です

[![csvファイルの中身です](https://i.stack.imgur.com/v9Ceo.png)](https://i.stack.imgur.com/v9Ceo.png)


CC BY-SA 4.0
2018-12-06T06:15:06.993
50963
2018-12-06T06:43:37.160
2018-12-06T06:27:46.723
19110
31322
question
python scikit-learn
k-means法sickit-learn　クラスタリング　エラー解決方法

[code]

    data = pd.read_csv('heartRate1.csv', names=('cute','ang'))
    del(data['cute'])
    del(data['ang'])
    
[/code]

この部分で CSV から読み取ったデータを全て消してしまっています。このため、この後 KMeans
をしようとしたところでデータが無いのにクラスタリングしようとして今回のエラー `Found array with 0 feature(s)` が出ています。

おそらく [`del` 文](https://docs.python.jp/3/tutorial/datastructures.html#the-del-
statement)の挙動を勘違いなさっているのではないかと思うので、なぜ `del` しているのかを確認してみてください。

### 補足

一応こちらの手元では、以下のようにしたら良さ気に動きました。

  * `del` はどちらもコメントアウト
  * `matplotlib.pyplot` も `import`
  * `plt.scatter` に渡す `x`, `y` は `labels` ではなく `features`

また以下の警告が出ていたので、将来的には対応しておく方が良いでしょう。

[code]

    FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.
      data_array = data.as_matrix().T
    
[/code]


CC BY-SA 4.0
2018-12-06T06:43:37.160
50967
2018-12-06T06:43:37.160
19110
50963
answer