teratail header banner
teratail header banner
質問するログイン新規登録
Python

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

Q&A

解決済

2回答

976閲覧

Python accuracy計算時の配列メモリエラーを改善したい

kun_monimoni

総合スコア26

Python

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

0グッド

0クリップ

投稿2022/08/15 01:13

編集2022/08/15 01:17

0

0

実現したいこと

Google colablatoryを使用。
ground truth labelとpred labelのaccuracyの計算を行うために、以下のようなコードを書きました。しかし、1ファイル140000行あるため、配列のメモリエラーが起こってしまいます。
他に方法が思いつかないため、メモリエラーを起こさずにaccuracyの計算を行う方法がありましたら教えていただけると幸いです。
よろしくお願いいたします。

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

IOPub data rate exceeded. The notebook server will temporarily stop sending output to the client in order to avoid crashing it. To change this limit, set the config variable `--NotebookApp.iopub_data_rate_limit`. Current values: NotebookApp.iopub_data_rate_limit=1000000.0 (bytes/sec) NotebookApp.rate_limit_window=3.0 (secs)

該当のソースコード

Python

1from sklearn.metrics import accuracy_score 2 3groud_truth_file = 'a.txt' 4pred_file = 'b.txt' 5 6with open(groud_truth_file) as f: 7 a = f.readlines() 8groud_truth_label = [line.rstrip('\n') for line in a] 9 10with open(pred_file) as f: 11 b = f.readlines() 12pred_label = [line.rstrip('\n') for line in b] 13 14print('groud_truth_label', groud_truth_label) 15print('pred_label', pred_label) 16 17print('Accuracy : ', accuracy_score(groud_truth_label, pred_label)) 18del groud_truth_label, pred_label

補足情報

a.txtおよびb.txtには一行に一つ0か1が書かれている状態で、各ファイル140000行あります。

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

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

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

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

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

bsdfan

2022/08/15 04:09

メモリエラーではなく、140000要素のリストをprintしようとしている部分が原因ではないですか?
guest

回答2

0

ベストアンサー

google colabで実行してみましたが、エラーは出ませんでした

 

a.txtおよびb.txtには一行に一つ0か1が書かれている状態で、各ファイル140000行あります。

を、下記コードを実行して乱数で作成

python

1import numpy as np 2 3groud_truth_label_org = np.random.randint(2, size=(140000, 1)) 4pred_label_org = np.random.randint(2, size=(140000, 1)) 5 6groud_truth_file = 'a.txt' 7pred_file = 'b.txt' 8 9np.savetxt(groud_truth_file, groud_truth_label_org, fmt='%d') 10np.savetxt(pred_file, pred_label_org, fmt='%d') 11 12# 作成したファイルの行数を確認 13!wc -l a.txt 14!wc -l b.txt

 
引き続き、質問に記載のコードをそのまま実行しましたが、エラーは出ず結果が表示されました

投稿2022/08/15 07:13

編集2022/08/17 14:53
jbpb0

総合スコア7658

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

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

jbpb0

2022/08/15 08:42 編集

質問者さんが私と全く同じことをgoogle colabで実行したら、エラーになるのでしょうか?
kun_monimoni

2022/08/25 16:29

正しく実行できました、ありがとうございます!
guest

0

一気に全部読み込んで処理しようとせず、一部を読み込んで処理、をファイルが尽きるまで繰り返し、ってのではどうでしょう

投稿2022/08/15 01:18

y_waiwai

総合スコア88178

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問