Discuss / Python / 求大佬指点如下报错哪里出了问题,搞了一天没搞出来,感恩戴德

求大佬指点如下报错哪里出了问题,搞了一天没搞出来,感恩戴德

落音郁

#1 Created at ... [Delete] [Delete and Lock User]

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.colors import ListedColormap

from sklearn.model_selection import train_test_split

from sklearn.preprocessing import StandardScaler

from sklearn.datasets import make_moons, make_circles, make_classification

from sklearn.neural_network import MLPClassifier

from sklearn.neighbors import KNeighborsClassifier

from sklearn.svm import SVC

from sklearn.gaussian_process import GaussianProcessClassifier

from sklearn.gaussian_process.kernels import RBF

from sklearn.tree import DecisionTreeClassifier

from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier

from sklearn.naive_bayes import GaussianNB

from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis

h = .02  # step size in the mesh

names = ["Nearest Neighbors", "Linear SVM", "RBF SVM", "Decision Tree", "Random Forest", "Neural Net", "AdaBoost"]

classifiers = [

    KNeighborsClassifier(3),

    SVC(kernel="linear", C=0.025),

    SVC(gamma=2, C=1),

    DecisionTreeClassifier(max_depth=5),

    RandomForestClassifier(max_depth=5, n_estimators=10, max_features=1),

    MLPClassifier(alpha=1),

    AdaBoostClassifier()]

datasets=[iris2f]

figure = plt.figure(figsize=(27, 9))

i = 1

# iterate over datasets

for ds_cnt, ds in enumerate(datasets):

    # preprocess dataset, split into training and test part

    X, y = ds

    X = StandardScaler().fit_transform(X)

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random_state=42)

    x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5 # 1st feature

    y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5 #2nd feature

    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))  #https://zhuanlan.zhihu.com/p/33579211

  # just plot the dataset first

    cm = plt.cm.RdBu

    cm_bright = ListedColormap(['#FF0000', '#0000FF'])

    ax = plt.subplot(len(datasets), len(classifiers) + 1, i)

    if ds_cnt == 0:

        ax.set_title("Input data")

    # Plot the training points

    ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright)

    # and testing points

    ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright,alpha=0.6)

    ax.set_xlim(xx.min(), xx.max())

    ax.set_ylim(yy.min(), yy.max())

    ax.set_xticks(())

    ax.set_yticks(())

    i += 1 

    # iterate over classifiers

    for name, clf in zip(names, classifiers): #list(zip(names, classifiers)

        ax = plt.subplot(len(datasets), len(classifiers) + 1, i)

        clf.fit(X_train, y_train)

        score = clf.score(X_test, y_test) #precision

        # Plot the decision boundary. For that, we will assign a color to each

        # point in the mesh [x_min, x_max]x[y_min, y_max].

if hasattr(clf, "decision_function"):

            H = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])

        else:

            H = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])[:, 1]

        print (len(H))

        # Put the result into a color plot

        H = H.reshape(xx.shape)

        ax.contourf(xx, yy, H, cmap=cm, alpha=.8)

        # Plot also the training points

        ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright)

        # and testing points

        ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright,alpha=0.6)

        ax.set_xlim(xx.min(), xx.max())

        ax.set_ylim(yy.min(), yy.max())

        ax.set_xticks(())

        ax.set_yticks(())

        if ds_cnt == 0:

            ax.set_title(name)

        ax.text(xx.max() - .3, yy.min() + .3, ('%.2f' % score).lstrip('0'),size=15, horizontalalignment='right')

        i += 1

plt.tight_layout()

plt.show()

然后run了以后这里出错:

ValueError                                Traceback (most recent call last)
<ipython-input-6-7960cb3075a2> in <module>
     70         print (len(H))
     71         # Put the result into a color plot
---> 72         H = H.reshape(xx.shape)
     73         #ax.contourf(xx, yy, H, cmap=cm, alpha=.8)
     74         # Plot also the training points

ValueError: cannot reshape array of size 263889 into shape (327,269)

可是当我不执行

H = H.reshape(xx.shape)

就打印len(h)明明就7个87963=327*269,完美对应啊。。。不知道到底为啥执行上面的语句跑到第三个H感觉就变成了26388了,成了87963的三倍,太奇怪了,完全不知道为什么。。

87963
87963
87963
87963
87963

D:\anaconda3\lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py:614: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (200) reached and the optimization hasn't converged yet.
  warnings.warn(

87963
87963


  • 1

Reply