如何修复 matplotlib 和 seaborn 热图图?

How to fix matplotlib and seaborn heatmap plot?

我使用 Seaborn 和 Matplotlib 绘制了一个热图。

在Matplotlib中,刻度的名字还可以,但我不喜欢出现的白线。 我怎样才能让白线消失?

seaborn里ticks的名字写错了,不过剧情我喜欢。 如何将刻度线移动到每个方块的中心? 如何修复刻度线的名称?最佳得分为 0.857,参数为:'clf__C': 100000.0, 'clf__gamma': 1e-05

但是seaborn使用:'clf__C': 1e-05, 'clf__gamma': 1e-05

Ranking of best parameters
RandomizedSearchCV took 5.58 seconds for 25 candidates parameter  settings.
Model with rank: 1
Mean validation score: 0.857 (std: 0.036)
Parameters: {'clf__C': 100000.0, 'clf__gamma': 1.0000000000000001e-05}

Model with rank: 2
Mean validation score: 0.821 (std: 0.048)
Parameters: {'clf__C': 10000000000.0, 'clf__gamma': 1.0000000000000001e-05}

Model with rank: 3
Mean validation score: 0.720 (std: 0.065)
Parameters: {'clf__C': 100000.0, 'clf__gamma': 1.0}

Model with rank: 3
Mean validation score: 0.720 (std: 0.065)
Parameters: {'clf__C': 10000000000.0, 'clf__gamma': 1.0}


MY CODE FOR SEABORN
# You can use this to generate a (5,5) array:
# scores = np.random.rand(5,5)


plt.figure(figsize=(8, 6))
scores = inner_rs.cv_results_['mean_test_score'].reshape(len(C_range),len(gamma_range))
ax = sns.heatmap(scores, annot=True)

plt.xlabel('gamma')
plt.ylabel('C')

plt.xticks(np.arange(len(gamma_range)), gamma_range, rotation=45)
plt.yticks(np.arange(len(C_range)), C_range)
plt.title('Validation accuracy')
plt.show()


MY CODE FOR MATPLOTLIB

from matplotlib.colors import Normalize

class MidpointNormalize(Normalize):
    def __init__(self, vmin=None, vmax=None, midpoint=None, clip=False):
        self.midpoint = midpoint
        Normalize.__init__(self, vmin, vmax, clip)

    def __call__(self, value, clip=None):
        x, y = [self.vmin, self.midpoint, self.vmax], [0, 0.5, 1]
        return np.ma.masked_array(np.interp(value, x, y))


 plt.figure(figsize=(8, 6))
scores = inner_rs.cv_results_['mean_test_score'].reshape(len(C_range),len(gamma_range))
plt.imshow(scores, interpolation='nearest', cmap=plt.cm.hot,

       norm=MidpointNormalize(vmin=0.2, midpoint=0.92))
plt.xlabel('gamma')
plt.ylabel('C')
plt.colorbar()
plt.xticks(np.arange(len(gamma_range)), gamma_range, rotation=45)
plt.yticks(np.arange(len(C_range)), C_range)
plt.title('Validation accuracy')
plt.grid(False)
plt.show()

MATPLOTLIB

海生

很遗憾,您没有显示 matplotlib 图的任何代码。但是摆脱网格的解决方案是使用 plt.grid(False).