基于KNN模型的分类算法研究 (4)

这里注意一个问题,横纵坐标是乱码显示,解决这个问题,添加如下代码:

#加入中文显示 import matplotlib.font_manager as fm # 解决中文乱码,本案例使用宋体字 myfont=fm.FontProperties(fname=r"C:\\Windows\\Fonts\\simsun.ttc")

调用可视化数据分析方法如下:

''' 文件数据图形化分析数据 ''' dataset,labels = file_matrix(filename) noredataset = norm_dataset(dataset)[0] # 数据归一化 title = ['约会数据游戏和饮食散列点','玩游戏所耗时间百分比','每周消耗在冰淇淋的公升数'] visualplot.analyze_data_plot(noredataset,labels,title)

游戏占比与冰淇淋公升数关系散点图可视化:

基于KNN模型的分类算法研究

图2-2 游戏占比与冰淇淋公升数关系散点图

折线图代码实现如下:

'''折线图''' def line_chart(xvalues,yvalues): # 绘制折线图,c颜色设置,alpha透明度 plt.plot(xvalues,yvalues,linewidth=0.5,alpha=0.5,c='red') # num_squares数据值,linewidth设置线条粗细 # 设置折线图标题和横纵坐标标题 plt.title("Python绘制折线图",fontsize=30,fontname='宋体',fontproperties=myfont) plt.xlabel('横坐标',fontsize=20,fontname='宋体',fontproperties=myfont) plt.ylabel('纵坐标',fontsize=20,fontname='宋体',fontproperties=myfont) # 设置刻度标记大小,axis='both'参数影响横纵坐标,labelsize刻度大小 plt.tick_params(axis='both',labelsize=14) # 显示图形 plt.show()

游戏占比与冰淇淋公升数关系折线图可视化:(此处折线图明显不合适,只是突出另一种分析方式。)

基于KNN模型的分类算法研究

图2-3 游戏占比与冰淇淋公升数关系折线图

扩展:

更多matplotlib可视化实现效果图参考文章 70个注意的Python小Notes:完整的matplotlib可视化

基于Echart的可视化分析

我们上面采用的matplotlib可视化效果,采用该方式主要是结合python数据分析绑定比较方便。有些时候我们为了取得更加漂亮的可视化效果,可以选择百度echart进行分析,百度Echart使用简单且文档规范容易上手。我们对原数据进行分析并转化为json代码:

'''array数据转化json''' def norm_Json(dataset): noredataset = norm_dataset(dataset)[0] # 数据归一化 number1 = np.around(noredataset[:,1], decimals=4) # 获取数据集第二列 number2 = np.around(noredataset[:,2], decimals=4) # 获取数据集第三列 returnMat=zeros((dataset.shape[0],2)) # 二维矩阵 returnMat[:,0] = number1 returnMat[:,1] = number2 file_path = os.path.abspath(r"./datasource/test.json") json.dump(returnMat.tolist(), codecs.open(file_path, 'w', encoding='utf-8'), separators=(',', ':'), sort_keys=True, indent=4)

生成json数据保存在指定文件中,打开文件查看数据如下:

[ [ 0.3981, 0.5623 ], [ 0.342, 0.9872 ], [ 0.0689, 0.4745 ], [ 0.6285, 0.2525 ] ... [ 0.4367, 0.429 ], [ 0.3768, 0.7857 ] ]

从百度Echart实例中选择一种散点图并绑定json文件,其html代码如下:

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图案例</title> <script src="http://cdn.bootcss.com/jquery/2.2.0/jquery.min.js"></script> <script type="text/javascript" src="http://www.likecs.com/default/index/url/js/echarts.js"></script> </head> <body> <div> </div> <script type="text/javascript"> //初始化echarts实例 var myChart = echarts.init(document.getElementById('chartmain')); $.getJSON('game-food.json', function (data) { var option = { title: { text: '玩游戏时间占比和饮食数据描述', left: 'center', top: 0 }, visualMap: { min: 15202, max: 159980, dimension: 1, orient: 'vertical', right: 10, top: 'center', text: ['优秀', '一般'], calculable: true, inRange: { color: ['#f2c31a', '#24b7f2'] } }, tooltip: { trigger: 'item', axisPointer: { type: 'cross' } }, xAxis: [{ type: 'value' }], yAxis: [{ type: 'value' }], series: [{ name: 'price-area', type: 'scatter', symbolSize: 5, data: data }] }; myChart.setOption(option); }); </script> </body> </html>

json文件读取需要在web运行环境中,单纯的运行效果如下图所示:

 

基于KNN模型的分类算法研究

图2-4 游戏占比与冰淇淋公升数Echarts关系散点图

数据转化工具

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydjwf.html