<jupyter_start><jupyter_text>**Quantas instâncias e atributos possuem o dataset?**<jupyter_code>instancias,atributos = df_vinhos.shape
print("O dataset possue {} instâncias e {} atributos".format(instancias,atributos))<jupyter_output>O dataset possue 1599 instâncias e 12 atributos<jupyter_text>**Existem valores nulos?**<jupyter_code>df_vinhos.info()
#contando os valores
df_vinhos.isnull().sum() 
print("Existem {} atributos do tipo {} e {} atributos do tipo {}.".format(df_vinhos.dtypes.value_counts()[0],df_vinhos.dtypes.value_counts().index[0],df_vinhos.dtypes.value_counts()[1], df_vinhos.dtypes.value_counts().index[1]))
#aplicando as "estatísticas" para o dataset
df_vinhos.describe()
#encontrando a mediana
df_vinhos.median()<jupyter_output><empty_output><jupyter_text>**Aplicando a matriz de correlação**<jupyter_code>#matriz de correlação não gráfica
df_vinhos.corr()
#matriz de correlação plotada
plt.figure(figsize=(12,9))
matriz_correlacao=df_vinhos.corr()
sn.heatmap(matriz_correlacao, annot=True)
plt.show()
#dividindo o dataset entre entrada e saída
entradas=df_vinhos.iloc[:,:-1] #seleciona todas as colunas menor a última
saida=df_vinhos.iloc[:,-1] #seleciona apenas a coluna de qualidade do vinho 
entradas.head(5)
saida.head(5)<jupyter_output><empty_output><jupyter_text>**Quantas instâncias existem para a qualidade do vinho igual a 5?**<jupyter_code>#identificando as instâncias existentes para os dados
df_vinhos['quality'].value_counts()
df_vinhos['quality'].unique()
#importando o preprocessamento com o MinMax
from sklearn.preprocessing import MinMaxScaler
#aplicando para as entradas
scaler = MinMaxScaler()
entradas_scaler=scaler.fit(entradas)
#mostrando os dados máximos existentes em cada uma das variáveis (mesmos valores encontrados com a função describe)
entradas_scaler.data_max_
#mostrando os dados após aplicar a normalização
entradas_normalizadas=scaler.transform(entradas)
print(entradas_normalizadas)
#encontrando o menor valor para a coluna 0 = 'fixed acidity'
entradas_normalizadas[:,0].min()
#aplicando o divisão do dataset entre dados de treinamento e teste
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(entradas_normalizadas, saida, test_size=0.30, random_state=1)
#contruindo o modelo para cliassificação com KNN com K=5
from sklearn.neighbors import KNeighborsClassifier
clf_KNN = KNeighborsClassifier(n_neighbors=5) #utiliza a construção por meio de 5 vizinhos
#treinando o modelo
clf_KNN.fit(X_train, y_train) # aplica a classificação
#realiza a previsão para o KNN
y_pred_KNN = clf_KNN.predict(X_test)
#acurácia do modelo via KNN
from sklearn.metrics import accuracy_score
print("Acurácia para a classificação utilizando o KNN:  ",accuracy_score(y_pred_KNN,y_test))
#realiza o plot da matriz de confusão
from sklearn.metrics import plot_confusion_matrix
plt.rcParams["figure.figsize"]=(10, 10)
plot_confusion_matrix(clf_KNN, X_test, y_test)
plt.show()
#árvore de decisão
from sklearn.tree import DecisionTreeClassifier # importa o classificador árvore de decisão
# Cria o objeto de classificação através do 
clf_arvore = DecisionTreeClassifier()

# Realiza o treinamento do classificador
clf_arvore = clf_arvore.fit(X_train,y_train)

#Realiza a previsão de classificaçao 
y_pred_arvore = clf_arvore.predict(X_test)
#importando o f1-score
from sklearn.metrics import classification_report
print("O valor de f1-score para a árvore de decisão é:\n ",classification_report(y_test,y_pred_arvore))
#realiza o plot da matriz de confusão
plt.rcParams["figure.figsize"]=(10, 10)
plot_confusion_matrix(clf_arvore, X_test, y_test)
plt.show()
#implementando a floresta randômica
from sklearn.ensemble import RandomForestClassifier
#define a floresta randomica
clf_floresta = RandomForestClassifier(max_depth=10, random_state=1)
clf_floresta.fit(X_train,y_train)
#Realiza a previsão de classificaçao 
y_pred_floresta = clf_floresta.predict(X_test)
print("O valor de f1-score para a floresta randômica é:\n ",classification_report(y_test,y_pred_floresta))
#realiza o plot da matriz de confusão
plt.rcParams["figure.figsize"]=(10, 10)
plot_confusion_matrix(clf_floresta, X_test, y_test)
plt.show()
#importando o svm como classificador
from sklearn.svm import SVC
#definindo o classificador svm
clf_svm=SVC(gamma='auto',kernel='rbf')


#realizando o treinamento do algoritmo
clf_svm.fit(X_train,y_train)


#realizando a previsão
y_pred_svm = clf_svm.predict(X_test)
print("O valor de f1-score para SVM é:\n ",classification_report(y_test,y_pred_svm))
#realiza o plot da matriz de confusão
plt.rcParams["figure.figsize"]=(10, 10)
plot_confusion_matrix(clf_svm, X_test, y_test)
plt.show()
#MLP como classificador
from sklearn.neural_network import MLPClassifier
#define a configuração da rede
clf_mlp = MLPClassifier( alpha=1e-5, hidden_layer_sizes=(5, 5), random_state=1)

#realiza o fit do modelo
clf_mlp.fit(X_train,y_train)


#realiza a previsão
y_pred_mlp=clf_mlp.predict(X_test)

print("O valor de f1-score para SVM é:\n ",classification_report(y_test,y_pred_mlp))
#modificando o dataset
new_df=df_vinhos.copy()
new_df['nova_qualidade']=new_df['quality'].apply(lambda x: 0 if x<=5 else 1)
new_df.tail()
#drop da coluna quality
new_df.drop(labels=['quality'],axis=1,inplace=True)
new_df.head()
#colocando entradas e saidas
novas_entradas=new_df.iloc[:,:-1]
nova_saida=new_df.iloc[:,-1]
novas_entradas.head()
nova_saida.values
#aplicando o minmaxscaler
novas_entradas_scaler=scaler.fit(novas_entradas)
novas_entradas_minmax=scaler.transform(novas_entradas)
novas_entradas_minmax
a=np.expand_dims(nova_saida, axis=1)
a.shape
#dividindo em treinamento e teste
X_train, X_test, y_train, y_test = train_test_split(novas_entradas_minmax, nova_saida, test_size=0.3, random_state=1)
#define a floresta randomica
clf_floresta_nova = RandomForestClassifier(max_depth=10, random_state=1)
clf_floresta_nova.fit(X_train,y_train)
#Realiza a previsão de classificaçao 
y_pred_floresta_nova = clf_floresta_nova.predict(X_test)
print("O valor de f1-score para a floresta randômica é:\n ",classification_report(y_test,y_pred_floresta_nova))
#realiza o plot da matriz de confusão
plt.rcParams["figure.figsize"]=(10, 10)
plot_confusion_matrix(clf_floresta_nova, X_test, y_test)
plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09644105497299015, 'fraction_numerical': 0.011757229107086114, 'mean_word_length': 8.176384839650146, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 16, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '433851', 'license': 'MIT', 'n_tokens_mistral': 2520, 'n_tokens_neox': 2451, 'n_words': 542, 'path': '.ipynb_checkpoints/desafio_MPT-checkpoint.ipynb', 'repo_name': 'vinicius-mattoso/Wine_classifier', 'size': '6294'}