Code of kmeans model for virms fire data!
Given a latitude and a longitude, it returns a map of fire spot clusters along the area.
Useful to determine the areas in which there are ongoing fire-related developments.
https://github.com/jmaidana18/spaceapp
importpandasaspd | |
fromsklearn.model_selectionimporttrain_test_split | |
fromsklearn.clusterimportKMeans | |
importnumpyasnp | |
importmatplotlib.pyplotasplt | |
# Lectura del dataset en crudo | |
data=pd.read_csv("fire_archive_V1_81287.csv") | |
# Es posible hacer analisis exploratorio en este punto. | |
# Data Wrangling. | |
# Discrimina focos de fuego por parametro de Confianza, alta y nominal. | |
is_high=data['confidence'] =='h' | |
data_high=data[is_high] | |
is_nom=data['confidence'] =='n' | |
data_nom=data[is_nom] | |
data_proc= [data_high, data_nom] | |
result=pd.concat(data_proc) | |
# Visualización de Datos Crudos: Focos por Confidencia. | |
N=len(result) | |
colors=np.random.rand(N) | |
area= (30*np.random.rand(N))**2 | |
# plt.scatter(data_proc['latitude'], data_proc['longitude'],s=area, c=colors, alpha=0.5) | |
plt.scatter(result['longitude'],result['latitude']) | |
plt.title('Paraguay, Focos de Calor, Satelite VIRS') | |
plt.xlabel('Longitud') | |
plt.ylabel('Latitud') | |
plt.show() | |
plt.savefig('focos_map.png') | |
# Visualizar datos con focos procesados. | |
# Division de Dataset en partes. | |
latTrain, latTest, longTrain, longTest=train_test_split(result['latitude'], result['longitude'], test_size=0.30, random_state=0) | |
# 30% del dataset es usado para el entrenamiento. | |
# Entrenamiento de machine learning | |
train_x=np.zeros((len(latTrain), 2)) | |
train_x[:,0] =latTrain | |
train_x[:,1] =longTrain | |
kmeans=KMeans(n_clusters=100, random_state=0).fit(train_x) | |
# Prediccion de Zonas de R | |
y_kmeans=kmeans.predict(train_x) | |
# Tests de Rendimiento del Algoritmo. | |
plt.title('Paraguay, Focos de Calor, Satelite VIRS') | |
plt.xlabel('Longitud') | |
plt.ylabel('Latitud') | |
plt.scatter(train_x[:, 1],train_x[:, 0], c=y_kmeans, s=50, cmap='viridis') | |
plt.savefig('heat_map.png') | |
plt.title('Paraguay, Focos de Calor, Satelite VIRS') | |
plt.xlabel('Longitud') | |
plt.ylabel('Latitud') | |
plt.scatter(train_x[:, 1], train_x[:, 0], c=y_kmeans, s=50, cmap='viridis') | |
centers=kmeans.cluster_centers_ | |
plt.scatter(centers[:, 1], centers[:, 0], c='black', s=200, alpha=0.5); | |
plt.savefig('heat_map_clusters.png') |
Is hot out there!