質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

530閲覧

コードエラーが発生し続けます。

caffrey

総合スコア3

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/21 13:05

# hold error value for elbow method calculation error = [] for i in range(2, 10): kmeans = KMeans(n_clusters = i) %time kmeans.fit(df) error.append(kmeans.inertia_) # find the elbow of the graph using kneed package optimalK = KneeLocator( range(2, 10), error, curve = 'convex', direction = 'decreasing', interp_method = 'interp1d', ) # print number of clusters for dataset print("\nNumber of clusters: " + str(optimalK.elbow)) optimalK.plot_knee_normalized() # create optimal K graph for prediction model kmeans = KMeans(n_clusters = optimalK.elbow)

このコードにエラーになる問題があるか見てください

ValueError: could not convert string to float: 'M'
AttributeError: 'KMeans' object has no attribute 'inertia_'

このようなエラーが発生し続けます。

https://github.com/contejus/AbaloneClustering/blob/master/README.md
ここでご参照ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

私もエラーが再現しました。ただエラーの原因は私の性格にあることが判明しました。
順に解説していきましょう。

質問で示されているコードはimportも含まれておらず,事前に実行すべきコードが必要であることが分かります。
質問に示されているReadme.mdの最初に次のようなコードがありました。

python

1# import data science packages 2import numpy as np 3import pandas as pd 4import math 5from sklearn.preprocessing import MinMaxScaler, LabelEncoder 6 7# import k means methods 8from sklearn.cluster import KMeans, SpectralClustering 9from sklearn.metrics import silhouette_score 10 11#import elbow method algorithm 12from kneed import KneeLocator 13 14df = pd.read_csv("abalone.csv") 15df.head()

abalone.csvは何かのデータセットのようです。ググってダウンロードして実行。

そしておもむろに質問のコードを実行します。→エラーが再現しました。
これで回答はできそうです。

エラーメッセージに ValueError: could not convert string to float: 'M' とあるので,
データに数値でないものが含まれているようです。データセットを確認してみます。

sexlengthdiameterheightwhole_weightshucked_weightviscera_weightshell_weightrings
0M0.4550.3650.0950.51400.22450.10100.15015
1M0.3500.2650.0900.22550.09950.04850.0707
2F0.5300.4200.1350.67700.25650.14150.2109
3M0.4400.3650.1250.51600.21550.11400.15510
4I0.3300.2550.0800.20500.08950.03950.0557
......

sexのカラムが文字列のようで,ここがエラーの原因のようです。

ここで Readme.md を読み返します。データセットのテーブルを示した下のコードの先頭に

python

1lbl = LabelEncoder() 2df['sex'] = lbl.fit_transform(df['sex']) 3...

とあり,データフレームdfを書き換えていることが分かります。

そうです。先頭から質問で示されたコードの間のコードブロックを全て実行すると,このsexカラムは数値に変わっていて
質問のようなエラーは発生しないだろうということが分かります。

つまり,このエラーは私や貴方のうっかりさんで早とちりでなるべく手抜いて答えを得ようという,よこしまな性格によるものだということが分かります。

この辺り気付くか気付かないかは失敗経験の差だろうと思います(人に言えないような失敗を数多く重ねてきました)。ぜひ色々勉強されたらと思います。

投稿2021/07/08 09:50

ujimushi_sradjp

総合スコア2103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問