一般的な問題(エラーが頻繁に発生しました)
1.例外TypeError:非ハッシュの種類:「リスト
」 のソリューションリファレンス:TypeError例外:タイプの非ハッシュ:「リストのソリューション。
2.モジュールの競合
機能を使用する場合、モジュール名と相まって。
次のように紛争解決モジュールでの経験は、次のとおりです。
import os
import numpy
os.listdir()
np.tile()
第3章ディシジョン・ツリー
- 「dict_keys」オブジェクトは、添字化ではありません
- firstStr = myTree.keys()[0] # 根结点 + firstStr = list(myTree.keys())[0] # 根结点
- UnicodeDecodeError:「UTF-8」CODEC CANないデコードバイトは0x80の位置0で:スタートバイトが無効
P50「マシンは本物を学びます」
読みます:# 决策树的存储 def storeTree(inputTree,filename): import pickle fw = open(filename,'w') pickle.dump(inputTree,fw) fw.close() def grabTree(filename): import pickle fr = open(filename) return pickle.load(fr)
# 决策树的存储 def storeTree(inputTree,filename): import pickle fw = open(filename,'wb') pickle.dump(inputTree,fw) fw.close() def grabTree(filename): import pickle fr = open(filename,'rb') return pickle.load(fr)
第9章回帰木
- 9.2すべてのデータのバイナリデータ分割機能binSplitDataSetは()ではなく除算よりも小さなミス、最初の返されたデータを、表示されます
読みます:def binSplitDataSet(dataSet,featIndex,value): mat0 = dataSet[np.nonzero(dataSet[:,featIndex]>value)[0],:][0] # 返回大于value的下标 mat1 = dataSet[np.nonzero(dataSet[:,featIndex]<=value)[0],:][0] return mat0,mat1;
/ 2:サポートされていないオペランドタイプ(S)はTypeError:「マップ」と「INT」def binSplitDataSet(dataSet,featIndex,value): mat0 = dataSet[np.nonzero(dataSet[:,featIndex]>value)[0],:] # 返回大于value的下标 mat1 = dataSet[np.nonzero(dataSet[:,featIndex]<=value)[0],:] return mat0,mat1;
マップ法とINT内部P161のloadDataSet()関数修飾対応する互換性がありません。
3.TypeError:非ハッシュタイプ:「マトリックス」溶液にdef loadDataSet(fileName): dataMat = [] fr = open(fileName) for line in fr.readlines(): curLine = line.strip().split('\t') floatLine = [] for num in curLine: floatLine.append(float(num)) #floatLine = map(float,curLine) # map() 会根据提供的函数对指定序列做映射。 dataMat.append(floatLine) return np.mat(dataMat)
コードの行を有するP164回帰ツリー分割機能は、for splitVal in set(dataSet[:,featIndex]):
非ハッシュ型エラーが報告されるであろう。
:に修飾された
for splitVal in set(dataSet[:,featIndex].T.A.tolist()[0]):
説明:のdataSet Aは[:、featIndex]は列ベクトルであり、それは行ベクトルの転置になり、その後、アレイにそれを回す、アレイはこの時間がなり、この時間が与えられるTypeError: unhashable type: 'numpy.ndarray'
誤差を、次いでToListメソッド()メソッドは、リストにそれを回す、その後、自身まだあるインデックス[0]を追加する必要があります。