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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

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

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

2472閲覧

ロジスティック回帰の実装中にエラーが出てしまいました

svsvi

総合スコア7

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

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

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/01/22 09:05

編集2020/01/23 10:47

でてしまったエラー

ロジスティック回帰の実装中に以下のようなエラーが出てしまいました。

--------------------------------------------------------------------------- ValueError Traceback (most recent call last) in 79 print(y_pred) 80 ---> 81 print('confusion matrix = ', confusion_matrix(y_true=y_test, y_pred=y_pred))#混合行列 82 print('accuracy = ', accuracy_score(y_true=y_test, y_pred=y_pred))#正解率 83 print('precision = ', precision_score(y_true=y_test, y_pred=y_pred))#適合率 ~\Anaconda3\lib\site-packages\sklearn\metrics\_classification.py in confusion_matrix(y_true, y_pred, labels, sample_weight, normalize) 266 267 """ --> 268 y_type, y_true, y_pred = _check_targets(y_true, y_pred) 269 if y_type not in ("binary", "multiclass"): 270 raise ValueError("%s is not supported" % y_type) ~\Anaconda3\lib\site-packages\sklearn\metrics\_classification.py in _check_targets(y_true, y_pred) 88 if len(y_type) > 1: 89 raise ValueError("Classification metrics can't handle a mix of {0} " ---> 90 "and {1} targets".format(type_true, type_pred)) 91 92 # We can't have more than one value on y_type => The set is no more needed ValueError: Classification metrics can't handle a mix of multilabel-indicator and binary targets

該当のソースコード

from __future__ import print_function import pandas as pd from pandas import Series,DataFrame from sklearn import svm from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score import numpy as np import matplotlib.pyplot as plt import keras from keras.datasets import fashion_mnist from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers import Adam from keras.optimizers import SGD csvdataset = pd.read_csv("Train_Random.csv",header=0) #説明変数 #ラベルを消すdrop x = DataFrame(csvdataset.drop("Result",axis=1)) #目的変数 y = DataFrame(csvdataset["Result"]) #説明変数・目的変数をそれぞれ訓練データ・テストデータに分割 x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.08) lr = LogisticRegression() # ロジスティック回帰モデルのインスタンスを作成 lr.fit(x_train, y_train) # ロジスティック回帰モデルの重みを学習 #データの整形 x_train = x_train.astype(np.float) x_test = x_test.astype(np.float) y_train = keras.utils.to_categorical(y_train,10) y_test = keras.utils.to_categorical(y_test,10) #ニューラルネットワークの実装① model = Sequential() model.add(Dense(100, activation='relu', input_shape=(59,))) model.add(Dropout(0.2)) model.add(Dense(100, activation='relu', input_shape=(59,))) model.add(Dropout(0.2)) model.add(Dense(100, activation='relu', input_shape=(59,))) model.add(Dropout(0.2)) model.add(Dense(10, activation='softmax')) model.summary() print("\n") sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) #ニューラルネットワークの実装② model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy']) #ニューラルネットワークの学習 history = model.fit(x_train, y_train,batch_size=11040,epochs=100,verbose=0,validation_data=(x_test, y_test)) #ニューラルネットワークの推論 score = model.evaluate(x_test,y_test,verbose=1) print("\n") print("Test 損失値:",score[0]) print("Test 正解率:",score[1]) print("coefficient = ", lr.coef_) print("intercept = ", lr.intercept_) y_pred = lr.predict(x_test) print(y_pred) print('confusion matrix = ', confusion_matrix(y_true=y_test, y_pred=y_pred))#混合行列 print('accuracy = ', accuracy_score(y_true=y_test, y_pred=y_pred))#正解率 print('precision = ', precision_score(y_true=y_test, y_pred=y_pred))#適合率 print('recall = ', recall_score(y_true=y_test, y_pred=y_pred))#再現率 print('f1 score = ', f1_score(y_true=y_test, y_pred=y_pred))#F1スコア

補足情報

ソースコードにあるとおりに混合行列、正解率、適合率、再現率、F1スコアを表示したいです。よろしくお願いします。
また、初心者なためできるだけ具体的な回答をいただけるととても助かります。

返信遅れてすみません。
print(y_test)の結果

[[0. 1. 0. ... 0. 0. 0.] [1. 0. 0. ... 0. 0. 0.] [1. 0. 0. ... 0. 0. 0.] ... [1. 0. 0. ... 0. 0. 0.] [1. 0. 0. ... 0. 0. 0.] [1. 0. 0. ... 0. 0. 0.]]

print(y_pred)の結果

[0 0 1 ... 1 0 0]

省略されてしまいましたがすべて表示する方法がわからなかったためそのまま張っておきます。
これだけでは0または1しかないようです。
y_predも表示しようとしたのですがエラーが出てしまって表示できませんでした。

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

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

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

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

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

meg_

2020/01/22 10:41

y_testとy_predの値はどうなっていますか? print出力したものを追記してください。
meg_

2020/01/23 10:41

「y_predも表示しようとしたのですがエラーが出てしまって」とのことですが、どんなエラーでしょうか? このエラーが原因のような気もしますが。
svsvi

2020/01/23 10:47

すみません、y_pred表示できてました。修正しました。
meg_

2020/01/23 11:09

confusion_matrix()の引数のy_trueとy_predは下記例のように1次元配列でないと駄目なのではないでしょうか? y_testを1次元配列にしてみたらどうでしょうか? <scikit-learn.orgより> >>> from sklearn.metrics import confusion_matrix >>> y_true = [2, 0, 2, 2, 0, 1] >>> y_pred = [0, 0, 2, 2, 0, 2] >>> confusion_matrix(y_true, y_pred) array([[2, 0, 0], [0, 0, 1], [1, 0, 2]])
svsvi

2020/01/23 13:23

多次元配列から一次元配列への変換がうまくいかないのですがやり方を教えてもらえると助かります
guest

回答2

0

ベストアンサー

confusion_matrix()へ渡すy_testはone-hot表現ではなく、x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.08)で作成されたy_testだと思います。
ここでのy_testを別の変数で保持しておいて、confusion_matrix()へ渡してください。

投稿2020/01/23 13:32

meg_

総合スコア10577

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

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

svsvi

2020/01/23 14:54

その通りにしたら解決しました!ありがとうございました!!
guest

0

keras使ったことないですが、
"Train_Random.csv"のデータを10個のクラスに分類しようとしてるのでしょうか?

ロジスティック回帰でのクラス分類は2クラス分類[0 or 1]しかできないので、
confusion_matrix()が「0, 1」以外の数値がy_testに設定されたと怒ってるんだと思います。

上記で分からなければ、print(y_test)ってした結果を追記していただけませんか?

投稿2020/01/22 11:57

s-uchi

総合スコア101

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問