実現したいこと
telearnのKshapeを使って、ある時系列データをクラスタリングした後、ラベルデータを保存しました。
そのデータを用いて新しいデータをクラスタリングしたいです。
前提
データフレームはインデックスに品種番号、横軸に時系列データの値を取り品種毎のクラスタリングを実施しています。また正規化は既に実施しているデータフレーム(df_clustering)です。
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-87-b96b8fa53535> in <module> 12 # 保存したモデルを使用して予測を行う 13 #kshape_loaded.fit(forcast_array) ---> 14 new_labels_ks = kshape_loaded.predict(forcast_array) 15 print(new_labels_ks) AttributeError: 'numpy.ndarray' object has no attribute 'predict'
該当のソースコード
python
1### 実行コード ### 2#K-shapeのインポート 3from tslearn.clustering import KShape 4 5# モデルの呼び出し 6with open('/content/KShape_model.pkl', 'rb') as f: 7 kshape_loaded = pickle.load(f) 8 9print(type(kshape_loaded)) # <class 'numpy.ndarray'> 10forcast_array = np.array(df_clustering.values) 11print(type(forcast_array)) # <class 'numpy.ndarray'> 12 13# 保存したモデルを使用して予測を行う 14#kshape_loaded.fit(forcast_array) 15new_labels_ks = kshape_loaded.predict(forcast_array) 16print(new_labels_ks) 17### 18 19 20### 参考情報(保存時コード) ### 21#K-shapeインストール 22from tslearn.clustering import KShape 23 24# cluster数 25n_clusters = 3 26#model 27ks = KShape(n_clusters=n_clusters, random_state=42) 28labels_ks = ks.fit_predict(df_clustering_ori) 29 30#保存 31with open('KShape_model.pkl', 'wb') as f: 32 pickle.dump(labels_ks, f) 33### 34
試したこと
・df_clusteringをnp.arrayしない
・predictでなくfit_predictを使ってみる
・とりあえずfitさせてから、predictしてみる
の3つを実施してみましたが、特にエラーは変わりませんでした。
ラベルデータがnumpy.ndarray型なので、ラベルデータを保存したことが悪かったのでしょうか。
もしくはラベルデータを保存した際には特殊な処理をかますのでしょうか。
保存時の処理が悪かった場合もご指摘お願いします。
補足情報(FW/ツールのバージョンなど)
Google Colaboratory
コードの方にも書きましたが、保存した際のコードをこちらにも追記します。
python
1 2#K-shapeインストール 3from tslearn.clustering import KShape 4 5# cluster数 6n_clusters = 3 7#model 8ks = KShape(n_clusters=n_clusters, random_state=42) 9labels_ks = ks.fit_predict(df_clustering_ori) 10 11#保存 12with open('KShape_model.pkl', 'wb') as f: 13 pickle.dump(labels_ks, f)
回答1件
あなたの回答
tips
プレビュー