当前位置:   article > 正文

Kmeans 应用_montesinho公园简介

montesinho公园简介

数据来源 :http://archive.ics.uci.edu/ml/index.php 中的一组表格数据(加拿大Montesinho公园)

数据简介:

Montesinho公园地图中的X - x轴空间坐标:1到9
Montesinho公园地图中的 Y轴和y轴空间坐标:2到9

FFMC:细小可燃物含水量,(最大值为101,含水率为0)

DMC:地表可燃物含水率(为0时含水率为100%)

ISI:火灾蔓延潜在等级

DC:干旱码,森林地被物中得含水率

代码:

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. from sklearn.cluster import KMeans #引入sklearn模块里的机器学习算法Kmeans
  5. class FireData():
  6. def detectDate(self,filePath):
  7. '''
  8. 探索数据
  9. :param filePath: 文件路径
  10. :return:
  11. '''
  12. df = pd.read_csv(filePath)
  13. describe = df.describe(include='all')#同合计数据
  14. print(describe.T)
  15. df.to_excel('data/air_data.xls')
  16. pass
  17. def chooseData(self,filePath):
  18. df = pd.read_excel('data/air_data.xls')
  19. df = df[['FFMC','DMC','DC','ISI','temp','RH','wind','area']]
  20. df.to_excel('data/air_coredata.xls')
  21. pass
  22. def standarData(self,filePath):
  23. '''
  24. 一般标准化得方式:(元数据-平均值)/标准差
  25. :param filePath:
  26. :return:
  27. '''
  28. df = pd.read_excel('data/air_coredata.xls')
  29. df = (df - np.mean(df,axis=0))/np.std(df,axis=0)
  30. df[['FFMC','DMC','DC','ISI','temp','RH','wind','area']].to_excel('data/air_stdcoredata.xls')
  31. pass
  32. def classifyData(self,filePath,k=8):
  33. df = pd.read_excel(filePath)
  34. kmeans = KMeans(k)
  35. kmeans.fit(df[['FFMC','DMC','DC','ISI','temp','RH','wind','area']])
  36. df['lable'] = kmeans.labels_
  37. coreData = pd.DataFrame(kmeans.cluster_centers_)
  38. coreData = np.array(kmeans.cluster_centers_)
  39. #绘制雷达图
  40. xdata = np.linspace(0,2*np.pi,k,endpoint=False)
  41. xdata = np.concatenate((xdata,[xdata[0]]))
  42. ydata1 = np.concatenate((coreData[0],[coreData[0][0]]))
  43. ydata2 = np.concatenate((coreData[1], [coreData[1][0]]))
  44. ydata3 = np.concatenate((coreData[2], [coreData[2][0]]))
  45. ydata4 = np.concatenate((coreData[3], [coreData[3][0]]))
  46. print(xdata)
  47. print(ydata1)
  48. fig = plt.figure()
  49. ax = fig.add_subplot(111, polar=True)
  50. ax.plot(xdata, ydata1, 'b--', linewidth=1, label='customer1')
  51. ax.plot(xdata, ydata2, 'r--', linewidth=1, label='customer2')
  52. ax.plot(xdata, ydata3, 'g--', linewidth=1, label='customer3')
  53. ax.plot(xdata, ydata4, 'o--', linewidth=1, label='customer4')
  54. ax.set_thetagrids(xdata * 180 / np.pi, ['FFMC','DMC','DC','ISI','temp','RH','wind','area'], )
  55. ax.set_rlim(-3, 3)
  56. plt.legend(loc='best')
  57. plt.show()
  58. print(xdata)
  59. pass
  60. pass
  61. if __name__ == '__main__':
  62. ad = FireData()
  63. #ad.detectDate('data/forestfires.csv')
  64. #ad.chooseData('data/air_coredata.xls')
  65. #ad.standarData('data/air_stdcoredata.xls')
  66. ad.classifyData('data/air_stdcoredata.xls', k=8)
  67. pass

雷达图:

111

 

customer  可以看作是火灾发生时可能造成的毁坏等级  分为四等

代码中数据整合了 烧毁面积 温度 风速 加拿大森林火险气候指数系统FWI 中的一些数值 通过算法进行模拟计算

FWI详情参考:https://wenku.baidu.com/view/73d92adb6037ee06eff9aef8941ea76e58fa4aa2.html    百度问库文章 。

 

 

有不足请指出 3Q!      0.o

                                                                end

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号