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

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

新規登録して質問してみよう
ただいま回答率
85.37%
scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

712閲覧

scikit-learnのclassification_reportメソッドでmicro avgが表示されない。

Mitsuki

総合スコア4

scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2023/09/06 14:09

編集2023/09/06 15:32

実現したいこと

以下のようにmicro avgの項目を表示させたいです。

PowerShell

1score:1.0 2 presition recall f1score support 3 4 setosea 1.00 1.00 1.00 11 5 versicolor 1.00 1.00 1.00 11 6 virginica 1.00 1.00 1.00 16 7 8 micro avg 1.00 1.00 1.00 38 9 macro avg 1.00 1.00 1.00 38 10 weighted avg 1.00 1.00 1.00 38

前提

pythonで「scikit-learn」ライブラリのirisデータを用いてSVMモデルで学習を行いレポート表示を行いました。

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

micro avgが表示されず、代わりに該当する部分にaccuracyが表示されました。
エラーメッセージはありません。実行結果は以下の通りです。

PowerShell

1SVC(C=100.0) 2score:1.0 3 presition recall f1score support 4 5 setosea 1.00 1.00 1.00 15 6 versicolor 1.00 1.00 1.00 11 7 virginica 1.00 1.00 1.00 12 8 9 accuracy 1.00 38 10 macro avg 1.00 1.00 1.00 38 11 weighted avg 1.00 1.00 1.00 38 12 13[[15 0 0] 14 [ 0 11 0] 15 [ 0 0 12]]

該当のソースコード

python

1ソースコード 2from sklearn.datasets import load_iris 3from sklearn.model_selection import train_test_split 4from sklearn.svm import SVC 5from sklearn.metrics import accuracy_score, confusion_matrix, classification_report 6 7# データ読み込み 8iris = load_iris() 9X_train, X_test, Y_train, Y_test = train_test_split(iris.data, iris.target, test_size=0.25) 10 11model = SVC(C=100., gamma='scale') 12print(model) 13model.fit(X_train, iris.target_names[Y_train]) 14 15pred = model.predict(X_test) 16score = accuracy_score(iris.target_names[Y_test], pred) 17print('score:%s' % score) 18print(classification_report(iris.target_names[Y_test], pred)) 19print(confusion_matrix(iris.target_names[Y_test], pred))

試したこと

 chatgpt3.5に質問したが、修正されたコードを実行しても同様の結果になり、修正したコードを提供し質問した後、指示された通りにコードを修正し実行したが、エラーが表示され、以降質問を繰り返してもエラーが続発してしまう。
scikit-learning,pip,powershell,windowsのアップデートを行ったが結果は変わらなかった。
test-size(予測用のデータ)の値を変えても結果は変わらなかった。
powershell、コマンドプロンプトで同じコードを実行したが同じような結果になった。

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

使用したpythonバージョンは3.11.4、scikit-learnバージョンは1.3.0です。PowerShellのバージョンは5.1.22621.1778です。
「teratail」での質問は初めてです。回答よろしくお願いします。

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

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

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

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

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

Mitsuki

2023/09/07 00:54

ありがとうございます! おかげで解決できました。 参考書と、結果が違っていたのでバグが発生していたのではないかと不安でしたが安心しました。
guest

回答1

0

自己解決

以下を参照

https://gotutiyan.hatenablog.com/entry/2020/09/09/111840#micro-avg%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E6%9D%A1%E4%BB%B6

micro avgは引数にオプションとしてlabels=を指定し、教師用データのラベルと、予測用データのラベルが不一致の場合に表示されるため
例えば以下のようにclassification_reportメソッド内で該当するラベルをlabels=で指定することで解決できました。
classification_report(iris.target_names[Y_test], pred, labels = ["versicolor", "virginica"])

ソースコード

python

1from sklearn.datasets import load_iris 2from sklearn.model_selection import train_test_split 3from sklearn.svm import SVC 4from sklearn.metrics import accuracy_score, confusion_matrix, classification_report 5 6# データ読み込み 7iris = load_iris() 8X_train, X_test, Y_train, Y_test = train_test_split(iris.data, iris.target, test_size=0.25) 9 10model = SVC(C=100., gamma='scale') 11print(model) 12model.fit(X_train, iris.target_names[Y_train]) 13 14pred = model.predict(X_test) 15score = accuracy_score(iris.target_names[Y_test], pred) 16print('score:%s' % score) 17# 修正した部分 18print(classification_report(iris.target_names[Y_test], pred, labels = ["versicolor", "virginica"])) 19print(confusion_matrix(iris.target_names[Y_test], pred))

投稿2023/09/07 01:03

編集2023/09/07 06:48
Mitsuki

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問