# 导入模块
from matplotlib import pyplot as plt
from matplotlib import font_manager
import seaborn
my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\MSYHL.TTC")
(将调用的库写在最上面)
你是否会遇到这样的情况,480个数据点,想画成散点图直观地看到数据,结果······
plt.scatter(y_predict,y_test,label='预测情况')
变成了这样子,几百个数据点变成了不到一百个数据?是隐术还是另有玄机?
哦,是他们重叠在一起了。
我先是加了透明度:
plt.scatter(y_predict,y_test,label='预测情况',alpha = 1/5)
但是感觉还差点意思,然后我······
好吧,我直接换了这个,因为想加抖动,但是用plot好像不是很好使,网上也找不到清楚说明的,然后发现这个很不错,在原来的基础上直接加一个seaborn就可以了,直接代替上面的代码。
下面是加了x轴y轴0.2大小的抖动和0.3的透明度,可以自己调大小。下面是效果。
seaborn.regplot(y_predict,y_test, fit_reg = False,
x_jitter = 0.2, y_jitter = 0.2, scatter_kws = {'alpha' : 1/3})
我还是不太满意,因为它颜色都一样,我做的是9个数字手写识别预测,横坐标是标签,纵坐标是预测值。可是它颜色都一样,我想看哪些值被分错了。所以我写了循环让系统自己分配颜色。
plt.figure(figsize=(10,5),dpi=80)
plt_label = -1
for i in range(1,len(y_test),48):
plt_label += 1
seaborn.regplot(y_predict,y_test, fit_reg = False,
x_jitter = 0.2, y_jitter = 0.2, scatter_kws = {'alpha' : 1/3},label = '数字'+ str(plt_label)) #label = '数字'+ str(plt_label)这个是用作图例
plt.legend(prop=my_font,,loc='upper left')
这个图你可能看的比较奇妙,和我所用的数据集有关,它的准确率比较低,仅有36%,是收集了我们班同学的数据集做的。如果准确率高,应该是一条明显的斜对角线!
但是这个感觉点太大了,就又改了一下:
plt.figure(figsize=(15,8),dpi=80)
plt_label = -1
for i in range(1,len(y_test),48):
plt_label += 1
seaborn.regplot(y_predict,y_test, fit_reg = False,
x_jitter = 0.2, y_jitter = 0.2, scatter_kws = {'alpha' : 1/3,'s':2},label = '数字'+ str(plt_label))
#在透明度后面跟了s=2,这个是点的大小的参数,感觉可以深入研究一下这个scatter_kws。
plt.legend(prop=my_font,,loc='upper left')
就酱紫了~