環境
Python 3.7
scikit-learn 0.19.1
pandas 0.20.3
numpy 1.13.3
質問
下記コードの「# 予測データと正解データの比較」に関して、model.fit()などで予測を行った後、予測データとtest用の正解データ(下記コードでいうところのy_test)の比較をしたいのです。
しかしながら、fit()により返されたデータはおそらくその時点でインデックスが再度発行させており、元のtest用の正解データy_testのインデックスとデータの相関関係がことなるため、例えば下記のようにpandasのDataFrameをconcatすることで比較するといったことができません。
要は「test用の正解データのインデックスをfit()の前後で保持する」など、どのような方法でも構いませんが、データの相関関係を保った状態で比較する方法はありますでしょうか。
ソースコード
import urllib.request as req import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn.metrics import accuracy_score # irisデータ読み込み iris = load_iris() X = pd.DataFrame(iris.data, columns=iris.feature_names) y = pd.DataFrame(iris.target) # データ確認 display(X) display(y) # hold-out データ分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.4,shuffle = True, random_state=1) # モデル宣言 clf = SVC() clf.fit(X_train, y_train) # データ予測 y_pred = clf.predict(X_test) print("正解率 = " , accuracy_score(y_test, y_pred)) # 予測データと正解データの比較 y_pred = pd.Series(y_pred) result = pd.concat([y_test, y_pred], axis=1) pd.set_option('display.max_rows', 500) display(result)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/15 04:19
2018/10/15 04:25 編集
2018/10/15 05:33