Pythonのjupyter notebookで、あるcsvデータを読み込み、クラスタリングしたいと考えております。
以下の様なコードで試みたところ、以下の様なエラーが出てしまいます。
当該csvデータの'階級'という列は、データでは整数値が入っております。エラーをみますと、数字であるにも関わらず、なぜか数値の型?でないのかと思いますが、なぜそうなるのか、またどのように対処して良いかわからず、こちらに記載させて頂きました。
どなかたご教示頂けますと幸いです.
【環境】Windows10, 64bit chrome
【コード】
import numpy as np
import pandas as pd
csv_in = 'data.csv'
df = pd.read_csv(csv_in, delimiter=',', encoding='shift-jis')
df2 = df[['生年月日','階級']]
df2.head()
df3=np.array(df2)
print(df3)
from sklearn.cluster import KMeans
kmeans=KMeans(n_clusters=3)
kmeans.fit(df3)
【エラー】
ValueError Traceback (most recent call last)
<ipython-input-10-623bc5f5d3ff> in <module>()
16 #X, y = make_blobs(random_state=1)
17 kmeans=KMeans(n_clusters=3)
---> 18 kmeans.fit(df3)
~\Miniconda3\envs\stats\lib\site-packages\sklearn\cluster\k_means_.py in fit(self, X, y)
885 """
886 random_state = check_random_state(self.random_state)
--> 887 X = self.check_fit_data(X)
888
889 self.cluster_centers, self.labels_, self.inertia_, self.n_iter_ = \
~\Miniconda3\envs\stats\lib\site-packages\sklearn\cluster\k_means_.py in _check_fit_data(self, X)
856 def _check_fit_data(self, X):
857 """Verify that the number of samples given is larger than k"""
--> 858 X = check_array(X, accept_sparse='csr', dtype=[np.float64, np.float32])
859 if X.shape[0] < self.n_clusters:
860 raise ValueError("n_samples=%d should be >= n_clusters=%d" % (
~\Miniconda3\envs\stats\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
431 force_all_finite)
432 else:
--> 433 array = np.array(array, dtype=dtype, order=order, copy=copy)
434
435 if ensure_2d:
ValueError: could not convert string to float: '7S'
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/10 08:07