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

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

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

Q&A

解決済

1回答

1167閲覧

SVMでのデータ分類可視化の際にエラーが出ます

seriko

総合スコア29

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

0グッド

0クリップ

投稿2022/09/25 03:26

編集2022/09/26 11:08

前提

機械学習を用いて領域分類した結果を可視化するプログラムを書いています。

https://qiita.com/Yatsupon/items/ec5d1003a2a108534128

上記のページを参考に少し手を加えて書いているのですが、グラフを出力する段階でエラーが出てしまいます。
何がご教授いただければ幸いです。

実現したいこと

・plot_decision_regionsを使い、データ分類のグラフを出力する

発生している問題・エラーメッセージ

plot_decision_regions( x_combined, y, clf=model)と書いている行で can only concatenate str (not "int") to str というエラーが出ています。

該当のソースコード

python

1import numpy as np 2import pandas as pd 3import seaborn as sns 4sns.set_style("whitegrid") 5import matplotlib.pyplot as plt 6%matplotlib inline 7from sklearn.model_selection import train_test_split, cross_validate 8 9df = pd.read_csv("iris.csv") 10df.head() 11 12X = df.loc[:, ["SepalLength","SepalWidth","PetalLength","PetalWidth"]] 13y = df.loc[:, "Name"] 14 15 16X_train, X_test, y_train, y_test = train_test_split(X, y) 17model = svm.SVC() 18model.fit(X_train,y_train) 19X_train.shape, X_test.shape 20 21#data_train = pd.DataFrame(X_train) 22#data_train["Name"] = y_train 23 24#sns.pairplot(data_train, hue='Name', palette="husl") 25 26#X_train = data_train[["SepalLength","SepalWidth","PetalLength","PetalWidth"]].values 27#y_train = data_train["Name"].values 28 29 30pre = model.predict(X_test) 31 32ac_score = metrics.accuracy_score(y_test,pre) 33print("正解率=", ac_score) 34 35 36 37#ここからデータ可視化 38import matplotlib.pyplot as plt 39from mlxtend.plotting import plot_decision_regions 40%matplotlib inline 41 42x_combined = X_train.iloc[:, [0,1]].values 43y_combined = y_train.values 44 45 46d = {'Iris-setosa':0, 'Iris-versicolor':1, 'Iris-virginica':2} 47y = np.array(list(map(lambda i : d[i], y_combined))) 48 49model.fit(x_combined, y) 50 51print(np.unique(np.array(y))) 52 53fig = plt.figure(figsize=(13,8)) 54plot_decision_regions( x_combined, y, clf=model) 55plt.show()

試したこと

他のサイトにあるグラフを出力するプログラムも同じエラーが出ました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

meg_

2022/09/25 04:15 編集

> plot_decision_regions( x_combined, x_combined, clf=model) 「x_combined」が2つですか?記入ミスではないですか?
seriko

2022/09/25 04:33

すみません、記入ミスでした。 plot_decision_regions( x_combined, y_combined, clf=model)が正しいです。 エラーは修正しても同様に出ています。
meg_

2022/09/25 05:35

プログラムの動作には影響ないかもしれませんが、コードの先頭部分が重複しているようなのでご確認ください。
meg_

2022/09/25 05:42

clfの定義も追記いただけますか?
jbpb0

2022/09/25 10:35

> y_combined = y_test.values のすぐ下に下記を追加して実行したら、何て表示されますでしょうか? print(np.unique(np.array(y_combined)))
seriko

2022/09/25 11:33

>プログラムの動作には影響ないかもしれませんが、コードの先頭部分が重複しているようなのでご確認ください。 修正しました、ご指摘ありがとうございます。 >clfの定義も追記いただけますか? 質問の意味があまりわかっておりませんが、作成してモデルを入れてます https://3pysci.com/python-sklearn-4/ 可視化部分のプログラムは上記ページを参考にしました
seriko

2022/09/25 11:34

>y_combined = y_test.values のすぐ下に下記を追加して実行したら、何て表示されますでしょうか? ['Iris-setosa' 'Iris-versicolor' 'Iris-virginica'] と表示されます。
meg_

2022/09/25 11:47

> 質問の意味があまりわかっておりませんが、作成してモデルを入れてます clf = .... というコードを作成されているはずですが、質問のコード中に見当たらないのでどんなモデルかを質問しました。
jbpb0

2022/09/25 14:02 編集

> y must be an integer array. 「y_combined」は整数(integer)じゃないといけないようですが、 > ['Iris-setosa' 'Iris-versicolor' 'Iris-virginica'] そうなってないですね 参考 https://stackoverflow.com/questions/66314673/valueerror-y-must-be-an-integer-array-found-object-try-passing-the-array-as-y 【追記】 https://3pysci.com/python-sklearn-4/ の「前回のSVM機械学習のまとめて可視化の準備」にも、 「可視化するmlxtendではこのターゲットの値に文字は使えない」 と書かれてます
seriko

2022/09/25 15:16

>clf = .... というコードを作成されているはずですが、質問のコード中に見当たらないのでどんなモデルかを質問しました。 clf = ....というのは書いておらず、plot_decision_regionsの引数のテンプレート?です https://3pysci.com/python-sklearn-4/ 上記のサイトには、 >plot_decision_regionの基本的な使い方は、plot_decision_region(X値のデータ、Y値のデータ、clf=モデル)です。 とあります。
seriko

2022/09/25 15:22

> ['Iris-setosa' 'Iris-versicolor' 'Iris-virginica'] そうなってないですね 載せていただいた参考サイトの通りに d = {'Iris-setosa':0, 'Iris-versicolor':1, 'Iris-virginica':2} y = list(map(lambda i : d[i], y_combined)) を追加してyを整数にしましたが、以下のエラーが出てしまいます。 y must be a NumPy array. Found <class 'list'> print(np.unique(np.array(y)))では、 [0 1 2]と表示されているのですが、、、
meg_

2022/09/25 15:30 編集

> clf = ....というのは書いておらず、plot_decision_regionsの引数のテンプレート?です 質問のコード中の「pre = clf.predict(X_test)」にある「clf」について聞きました。 質問のコードを実行すると”NameError: name 'clf' is not defined”が発生したためです。 今回のエラーとは直接は関係ないので返信不要ですが一応補足しておきます。
seriko

2022/09/25 15:43

すみません、ずっとplot_decision_regionsのclfと勘違いしておりました。 大変申し訳ありません。 ご指摘の通りそこではclfではなく、 pre = model.predict(X_test) が正しいです。
jbpb0

2022/09/25 21:20

> y must be a NumPy array. Found <class 'list'> y = np.array(list(map(lambda i : d[i], y_combined))) で、どうでしょうか?
seriko

2022/09/26 02:06

修正したところ、グラフが出力されました! 本当に助かりました。 何度もありがとうございました。
guest

回答1

0

自己解決

該当のソースコードに書いた通り、
y = np.array(list(map(lambda i : d[i], y_combined)))
に修正したところ、グラフが出力されました。

投稿2022/09/26 02:08

seriko

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問