"Machine Learning in Action" 책은 Python 2 환경에서 작성되었습니다. 학습 과정에서 수정된 부분을 간략하게 기록해 보겠습니다
1. 인쇄 기능 뒤에 괄호를 추가해야 합니다(프로그램에 인쇄 기능이 나타나기 시작합니다). 목록 2-4)
2. Raw_input이 입력 함수로 변경되었습니다. 3.x에서는 입력을 사용합니다. (프로그램 목록 2-5)
3.reload(KNN)->import importlib
python2.7에서 키에 해당하는 첫 번째 요소를 찾습니다: firstStr = myTree.keys()[0]. 이는 python3.4에서 실행할 때 오류를 보고합니다: 'dict_keys' 객체는 인덱싱을 지원하지 않습니다. 이는 python3 때문입니다. dict .keys를 변경하면 iterable은 지원하지만 indexable은 지원하지 않는 dict_keys 객체를 반환합니다. 그런 다음 이 함수를 python3에서 다음과 같이 구현해야 합니다. 프로그램 목록 3-9
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])
범위는 List를 반환할 수 없고 del 작업을 지원하지 않기 때문에, 런타임 오류 중 다음이 나타납니다.
TypeError: 'range' 개체는 항목 삭제를 지원하지 않습니다.
코드를 다음과 같이 수정할 수 있습니다:
trainingSet = list(range(50))
계속하려면...
위 내용은 python3.x에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!