import pandas as pd
import numpy as np
from sklearn import svm, datasets
from sklearn.preprocessing import scale
from sklearn.model_selection import train_test_split
from sklearn import svm
from mpl_toolkits.mplot3d import axes3d, Axes3D

df = pd.read_csv('evasao.csv')
df.head()

df2 = df[['periodo','repetiu','desempenho']][df.abandonou == 1]

df2.head()

fig = plt.figure()
#ax = fig.add_subplot(111, projection='3d')
ax = Axes3D(fig) # Para Matplotlib  0.99
ax.scatter(xs=df2['periodo'],ys=df2['repetiu'],zs=df2['desempenho'], c='r',s=8)
ax.set_xlabel('periodo')
ax.set_ylabel('repetiu')
ax.set_zlabel('desempenho')

model_cp = KMeans(n_clusters=4)


"""
Explanation: KMeans com dados escolares
End of explanation
"""


model_cp = model.fit(df2)
cluster_df = df2.assign(cluster = model_cp.labels_)
print(model_cp.labels_)
cluster1 = cluster_df[cluster_df.cluster==0]
cluster2 = cluster_df[cluster_df.cluster==1]
cluster3 = cluster_df[cluster_df.cluster==2]
cluster4 = cluster_df[cluster_df.cluster==3]
fig=plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(xs=cluster1['periodo'],ys=cluster1['repetiu'],zs=cluster1['desempenho'], c='b', marker='d', s=18)
ax.scatter(xs=cluster2['periodo'],ys=cluster2['repetiu'],zs=cluster2['desempenho'], c='r', marker='*', s=18)
ax.scatter(xs=cluster3['periodo'],ys=cluster3['repetiu'],zs=cluster3['desempenho'], c='g', marker='o', s=18)
ax.scatter(xs=cluster4['periodo'],ys=cluster4['repetiu'],zs=cluster4['desempenho'], c='m', marker='+', s=38)
ax.set_xlabel('periodo')
ax.set_ylabel('repetiu')
ax.set_zlabel('desempenho')
ax.scatter(xs=model_cp.cluster_centers_[0,0],ys=model_cp.cluster_centers_[0,1],zs=model_cp.cluster_centers_[0,2], c='k', marker='s', s=100)
ax.scatter(xs=model_cp.cluster_centers_[1,0],ys=model_cp.cluster_centers_[1,1],zs=model_cp.cluster_centers_[1,2], c='k', marker='s', s=100)
ax.scatter(xs=model_cp.cluster_centers_[2,0],ys=model_cp.cluster_centers_[2,1],zs=model_cp.cluster_centers_[2,2], c='k', marker='s', s=100)
ax.scatter(xs=model_cp.cluster_centers_[3,0],ys=model_cp.cluster_centers_[3,1],zs=model_cp.cluster_centers_[3,2], c='k', marker='s', s=100)


"""
Explanation: Antes de reduzir a escala das variáveis, verifique se já não estão na mesma escala! 
É recomendado sempre colocarmos as variáveis na mesma escala, embora nem sempre isso gere o melhor resultado. Vamos começar usando escala e depois sem usarmos escala.
Finalmente, vamos rodar sem fazer escala das variáveis.
End of explanation
"""


