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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

2回答

3534閲覧

python 文字化け

SAMUSAMUN

総合スコア32

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2017/06/30 02:10

###前提・実現したいこと
pythonの機械学習の参考書に書いているプログラムを実行すると,文字化けしてしまいます.
cording: utf-8を最初に書いているんですけど,文字化けします.
解決策がわかりません.
よろしくお願い致します.

###発生している問題・エラーメッセージ
('\xe4\xba\x88\xe6\xb8\xac\xe7\xb5\x90\xe6\x9e\x9c\xef\xbc\x9a', array([0, 1, 1, 0]))
('\xe6\xad\xa3\xe8\xa7\xa3\xe7\x8e\x87\xef\xbc\x9a', 4, '/', 4, '=', 1)

エラーメッセージ

###該当のソースコード
!/usr/bin/env python
-- coding: utf-8 --
import sys
import codecs
from sklearn import svm

sys.stdout = codecs.getwriter('utf_8')(sys.stdout)

xor_data = [
[0,0,0],
[0,1,1],
[1,0,1],
[1,1,0]
]

data = []
label = []
for row in xor_data:
p = row[0]
q = row[1]
r = row[2]
data.append([p,q])
label.append(r)

clf = svm.SVC()
clf.fit(data,label)

pre = clf.predict(data)
print("予測結果:",pre)

ok = 0; total = 0
for idx, answer in enumerate(label):
p = pre[idx]
if p == answer: ok += 1
total += 1
print("正解率:", ok, "/", total, "=" ,ok/total)

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

pashango2

2017/06/30 02:14

OSとPythonのバージョンを記載してください。またコードは```で囲んで下さい
guest

回答2

0

ベストアンサー

推測になりますがPython3用のコードをPython2で実行していませんか?

python

1print("予測結果:",pre) 2print("正解率:", ok, "/", total, "=" ,ok/total)

ではなく、以下のようにしてみて下さい。

python

1print u"予測結果:",pre 2print u"正解率:", ok, "/", total, "=" ,ok/total

別解

ソースの先頭に以下の行を入れると、ソースを変更せずに日本語が表示されます。

python

1from __future__ import division, print_function, absolute_import, unicode_literals

投稿2017/06/30 02:16

編集2017/06/30 02:29
pashango2

総合スコア930

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

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

0

以下のように修正してみてください。

  • (Windows環境であれば)sys.stdout = codecs~行をコメントアウトする。
  • print u'日本語', "abc"のようにprint文の()をなくし、日本語はunicode文字列としてprintに渡す。

Python

1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3import sys 4import codecs 5 6#sys.stdout = codecs.getwriter('utf_8')(sys.stdout) 7print u"予測結果:", "abc"

投稿2017/06/30 02:24

編集2017/06/30 02:42
can110

総合スコア38262

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

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

pashango2

2017/06/30 02:30 編集

たぶん、質問者の環境はPython2ですね、print関数にするとタプルのreprが表示されてしまいます。
can110

2017/06/30 02:39

あ、そうですね。タプル内容がそのまま出力されていますね。 ちょっと回答修正します。 コメント&ご指摘ありがとうございます。
SAMUSAMUN

2017/06/30 07:24

回答していただきありがとうございます. 足りない情報もありわかりにくい質問となっており申し訳ございませんでした. 推測通り参考書の方がPython3に対応したものでしたが, 私はPython2で動かしていました. おかげさまで解決することができました. ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問