逻辑回归热图



因此,

我是python的新手,我的代码有点问题

X_train, Y_train, Xtest, ytest = pickle.load(open("data.p", "rb"))
h = 100
x_min, x_max = X_train.min() - 1, X_train.max() + 1
y_min, y_max = X_train.min() - 1, X_train.max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                     np.arange(y_min, y_max, h))
logreg = linear_model.LogisticRegression(C=1.0, penalty='l2', tol=1e-6).fit(X_train, Y_train)
grid_data = np.c_[xx.ravel(), yy.ravel()]
Z = logreg.predict_proba(grid_data)[:,1]
Z = Z.reshape(xx.shape)
yhat = logreg.predict_proba(Xtest)[:,1]
r = scipy.stats.pearsonr(yhat, ytest)[0]
plt.imshow(Z, extent=[xx.min(), xx.max(), yy.max(), yy.min()])
plt.plot(Xtest[ytest==0, 0], Xtest[ytest==0, 1], 'co')
plt.plot(Xtest[ytest==1, 0], Xtest[ytest==1, 1], 'ro')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title('r=' + str(r))
plt.show()

当我用x:2大小的数据文件运行此代码时,它可以完美地运行

但我也有列数超过2的数据。

准确地说是12,对于那个python,它向我发送了这个错误

Z = logreg.predict_proba(grid_data)[:,1]
  File "D:IDEAnacondalibsite-packagessklearnlinear_modellogistic.py", line 128, in predict_proba
    return self._predict_proba_lr(X)
  File "D:IDEAnacondalibsite-packagessklearnlinear_modelbase.py", line 229, in _predict_proba_lr
    prob = self.decision_function(X)
  File "D:IDEAnacondalibsite-packagessklearnlinear_modelbase.py", line 196, in decision_function
    % (X.shape[1], n_features))
ValueError: X has 2 features per sample; expecting 12

不知怎么的,我需要将grid_data设置为具有12列?!但我不知道是怎么回事

编辑:

添加了代码的其余部分

您的模型适用于12维数据(X_train.shape为(N,12((,您正在尝试对二维数据进行预测(看看grid_data的形状(。当模型适合12D特征时,预测2D特征的值是没有意义的。

我猜你的数据是作为该网格中的特征存在的,所以你可以做一些类似于最近邻居的事情,从X_train中检索所有网格点的最近输入点(如果你的数据正好位于网格上,那么查找应该减少到正确索引(,然后将输出预测与网格点相关联。

相关内容

  • 没有找到相关文章

最新更新