python3.x の詳細な紹介

零下一度
零下一度オリジナル
2017-06-27 09:22:152425ブラウズ

書籍「Machine Learning in Action」は Python 2 の環境で書かれています。学習プロセスの修正部分を簡単に記録してみましょう

1. print 関数の後に括弧を追加する必要があります (print 関数がプログラム内に表示され始めます)。リスト 2-4)

2. 3.x では、Python は input 関数を使用します (プログラム リスト 2-5)

3. reload(KNN)->importlib

python2.7 では、キーに対応する最初の要素を見つけます: firstStr = myTree.keys()[0]。これは、python3.4 で実行するとエラーを報告します: 'dict_keys' オブジェクトはインデックス作成をサポートしていません。これは python3 が原因ですdict .keys を変更すると、反復可能はサポートしますが、インデックス可能はサポートしない dict_keys オブジェクトが返されます。この場合、この関数は次のように python3 で実装する必要があります:

firstSides = list(myTree.keys()) 
firstStr = firstSides[0]#找到输入的第一个元素

5。

pickle データを永続化するときは、バイナリ モードで保存および読み取りが行われるため、ファイルに書き込むときは、

fw=open(filename,'w')---->fw=open(filename, 'wb')

ピクルの書き込みを容易にするためにバイナリ形式でファイルを開きます

ファイルからデータを読み取るときは、バイナリ モードでも読み取り、次の変更を行う必要があります

fr=open(filename)-- -->fr= open(filename,'rb')

6. プログラム リスト 4-5 では、

wordList=textParse(open('ch04/email/ham/%d.txt' % i ).read() )

この文は実行時に必ずコーディングエラーが報告されます。その結果、読み込んだファイルに文字化けがあり、その文字化けを削除すると問題は解決します

エラーコードは次のとおりです:

UnicodeDecodeError: ' gbk' コーデックは位置 199 のバイト 0xae をデコードできません: 不正なマルチバイト シーケンス

trainingSet=range(50);

del(trainingSet[randIndex])

range は List を返すことができず、del 操作をサポートしていないため、実行時エラー:

TypeError: 'range' object doesn't support item deletion

コードを次のように変更できます:

trainingSet = list(range(50));

to be continue...

以上がpython3.x の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。