使用 make_blobs 函数创建两个大小不等的簇时键入错误

我正在尝试为具有不平衡类的分类问题执行以下代码。该代码来自支持向量机的 sci-kit 学习教程页面,但是当我尝试运行它时出现“类型错误”。

print(__doc__)


import numpy as np

import matplotlib.pyplot as plt

from sklearn import svm

from sklearn.datasets import make_blobs


# we create two clusters of random points

n_samples_1 = 1000

n_samples_2 = 100

centers = [[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 hyperplane

clf = svm.SVC(kernel='linear', C=1.0)

clf.fit(X, y)


# fit the model and get the separating hyperplane using weighted classes

wclf = svm.SVC(kernel='linear', class_weight={1: 10})

wclf.fit(X, y)


# plot the samples

plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired, edgecolors='k')


# plot the decision functions for both classifiers

ax = plt.gca()

xlim = ax.get_xlim()

ylim = ax.get_ylim()


# create grid to evaluate model

xx = 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 hyperplane

Z = clf.decision_function(xy).reshape(XX.shape)


# plot decision boundary and margins

a = ax.contour(XX, YY, Z, colors='k', levels=[0], alpha=0.5, linestyles=['-'])


# get the separating hyperplane for weighted classes

Z = wclf.decision_function(xy).reshape(XX.shape)


# plot decision boundary and margins for weighted classes

b = 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()


慕村225694
浏览 206回答 1
1回答

慕虎7371278

你在运行什么版本的 scikit-learn?import sklearnsklearn.__version__当我在 0.19.1 上时,我遇到了同样的错误,但这在 0.20.1 上就消失了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python