我正在尝试为具有不平衡类的分类问题执行以下代码。该代码来自支持向量机的 sci-kit 学习教程页面,但是当我尝试运行它时出现“类型错误”。print(__doc__)import numpy as npimport matplotlib.pyplot as pltfrom sklearn import svmfrom sklearn.datasets import make_blobs# we create two clusters of random pointsn_samples_1 = 1000n_samples_2 = 100centers = [[0.0, 0.0], [2.0, 2.0]]clusters_std = [1.5, 0.5]X, y = make_blobs(n_samples=[n_samples_1, n_samples_2], centers=centers, cluster_std=clusters_std, random_state=0, shuffle=False)# fit the model and get the separating hyperplaneclf = svm.SVC(kernel='linear', C=1.0)clf.fit(X, y)# fit the model and get the separating hyperplane using weighted classeswclf = svm.SVC(kernel='linear', class_weight={1: 10})wclf.fit(X, y)# plot the samplesplt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired, edgecolors='k')# plot the decision functions for both classifiersax = plt.gca()xlim = ax.get_xlim()ylim = ax.get_ylim()# create grid to evaluate modelxx = np.linspace(xlim[0], xlim[1], 30)yy = np.linspace(ylim[0], ylim[1], 30)YY, XX = np.meshgrid(yy, xx)xy = np.vstack([XX.ravel(), YY.ravel()]).T# get the separating hyperplaneZ = clf.decision_function(xy).reshape(XX.shape)# plot decision boundary and marginsa = ax.contour(XX, YY, Z, colors='k', levels=[0], alpha=0.5, linestyles=['-'])# get the separating hyperplane for weighted classesZ = wclf.decision_function(xy).reshape(XX.shape)# plot decision boundary and margins for weighted classesb = ax.contour(XX, YY, Z, colors='r', levels=[0], alpha=0.5, linestyles=['-'])plt.legend([a.collections[0], b.collections[0]], ["non weighted", "weighted"], loc="upper right")plt.show()
1 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
你在运行什么版本的 scikit-learn?
import sklearn
sklearn.__version__
当我在 0.19.1 上时,我遇到了同样的错误,但这在 0.20.1 上就消失了。
添加回答
举报
0/150
提交
取消