我在Python 2.7中有以下代码,其目的是使用numpy,pylab和sklearn创建SVM结果图:
import numpy, pylab
from sklearn.svm import SVC
DataTable = numpy.genfromtxt('path/data.csv',delimiter=',',dtype=None)[1:]
DataPoints,TruthValues = (DataTable[:,[1,2] ]).astype(numpy,float), (DataTable[:,0]=='1')
TrainedSVC = SVC(C = 100, kernel = 'linear').fit(DataPoints,TruthValues)
x_max,y_max,x_min,y_min = DataPoints[:, 0].max(),DataPoints[:, 1].max(),DataPoints[:, 0].min(),DataPoints[:, 1].min()
xx, yy = numpy.meshgrid(numpy.arange(x_min, x_max, (int(x_max)-int(x_min)/200.0), numpy.arange(y_min, y_max, (int(y_max)-int(y_min)/200.0))
GridEvaluation = TrainedSVC.predict(numpy.c_[xx.ravel(),yy.ravel()]).reshape(xx.shape)
pylab.pcolormesh(xx, yy, GridEvaluation, alpha=0.1)
pylab.scatter(DataPoints[:, 0], DataPoints[:, 1], c=TruthValues)
pylab.xlabel('crp');pylab.ylabel('income');pylab.show()
该代码最初发布在this blog上,它可以很好地解释代码的每个部分。我保留了与示例代码中基本相同的所有内容,但我仍然在行GridEvaluation = TrainedSVC.predict(numpy.c_[xx.ravel(),yy.ravel()]).reshape(xx.shape)
让我感到困惑的是,这个错误并没有出现在上面的博文中,尽管它发生的行是从帖子中逐字复制的。如果它有助于我使用Spyder IDE的Anaconda Python发行版。
更新:考虑到下面的答案,我现在得到答复:
TypeError: unsupported operand type(s) for -: 'str' and 'str'
就行:
xx, yy = numpy.meshgrid(numpy.arange(int(x_min), int(x_max), (int(x_max)-int(x_min)/200.0)), numpy.arange(y_min, y_max, (int(y_max)-int(y_min)/200.0)))
答案 0 :(得分:0)
我认为你在上面的行中转换为int时错过了一些括号。
xx, yy = numpy.meshgrid(numpy.arange(x_min, x_max, (int(x_max)-int(x_min)/200.0)), numpy.arange(y_min, y_max, (int(y_max)-int(y_min)/200.0)))