Desafio: Classificando Dados Inseparáveis
Você utilizará o seguinte conjunto de dados com duas variáveis:
1234import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') print(df.head())
Se você executar o código abaixo e observar o gráfico de dispersão resultante, verá que o conjunto de dados não é linearmente separável:
123456import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') plt.scatter(df['X1'], df['X2'], c=df['y']) plt.show()
Vamos utilizar a validação cruzada para avaliar uma regressão logística simples nesses dados:
123456789101112131415161718import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') X = df[['X1', 'X2']] y = df['y'] X = StandardScaler().fit_transform(X) lr = LogisticRegression().fit(X, y) y_pred = lr.predict(X) plt.scatter(df['X1'], df['X2'], c=y_pred) plt.show() print(f'Cross-validation accuracy: {cross_val_score(lr, X, y).mean():.2f}')
Como pode ser observado, a Regressão Logística tradicional não é adequada para esta tarefa. Utilizar regressão polinomial pode ajudar a melhorar o desempenho do modelo. Além disso, empregar o GridSearchCV permite encontrar o parâmetro C ideal para obter maior precisão.
Construtor:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— objeto do modelo;param_grid— dicionário com os valores dos parâmetros a serem testados;scoring— métrica utilizada para avaliação na validação cruzada;cv— número de divisões (5 por padrão);
Métodos:
fit(X, y)— treina os modelos utilizando X, y;predict(X)— prediz a classe para X;score(X, y)— retorna a acurácia para o conjunto X, y;
Atributos:
best_estimator_— objeto do modelo com a maior pontuação;best_score_— pontuação dobest_estimator_.
Esta tarefa também utiliza a classe Pipeline. Pode-se considerá-la como uma sequência de etapas de pré-processamento. O método .fit_transform() aplica sequencialmente o .fit_transform() a cada etapa do pipeline.
Swipe to start coding
Você recebe um conjunto de dados descrito como um DataFrame na variável df.
- Crie um pipeline que contenha as características polinomiais de grau 2 de
X, faça a padronização e armazene o pipeline resultante na variávelpipe. - Crie um dicionário
param_gridcom os valores[0.01, 0.1, 1, 10, 100]para o hiperparâmetroC. - Inicialize e treine um objeto
GridSearchCVe armazene o objeto treinado na variávelgrid_cv.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Incrível!
Completion taxa melhorada para 3.33
Desafio: Classificando Dados Inseparáveis
Deslize para mostrar o menu
Você utilizará o seguinte conjunto de dados com duas variáveis:
1234import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') print(df.head())
Se você executar o código abaixo e observar o gráfico de dispersão resultante, verá que o conjunto de dados não é linearmente separável:
123456import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') plt.scatter(df['X1'], df['X2'], c=df['y']) plt.show()
Vamos utilizar a validação cruzada para avaliar uma regressão logística simples nesses dados:
123456789101112131415161718import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/circles.csv') X = df[['X1', 'X2']] y = df['y'] X = StandardScaler().fit_transform(X) lr = LogisticRegression().fit(X, y) y_pred = lr.predict(X) plt.scatter(df['X1'], df['X2'], c=y_pred) plt.show() print(f'Cross-validation accuracy: {cross_val_score(lr, X, y).mean():.2f}')
Como pode ser observado, a Regressão Logística tradicional não é adequada para esta tarefa. Utilizar regressão polinomial pode ajudar a melhorar o desempenho do modelo. Além disso, empregar o GridSearchCV permite encontrar o parâmetro C ideal para obter maior precisão.
Construtor:
GridSearchCV(estimator, param_grid, scoring, cv = 5)estimator— objeto do modelo;param_grid— dicionário com os valores dos parâmetros a serem testados;scoring— métrica utilizada para avaliação na validação cruzada;cv— número de divisões (5 por padrão);
Métodos:
fit(X, y)— treina os modelos utilizando X, y;predict(X)— prediz a classe para X;score(X, y)— retorna a acurácia para o conjunto X, y;
Atributos:
best_estimator_— objeto do modelo com a maior pontuação;best_score_— pontuação dobest_estimator_.
Esta tarefa também utiliza a classe Pipeline. Pode-se considerá-la como uma sequência de etapas de pré-processamento. O método .fit_transform() aplica sequencialmente o .fit_transform() a cada etapa do pipeline.
Swipe to start coding
Você recebe um conjunto de dados descrito como um DataFrame na variável df.
- Crie um pipeline que contenha as características polinomiais de grau 2 de
X, faça a padronização e armazene o pipeline resultante na variávelpipe. - Crie um dicionário
param_gridcom os valores[0.01, 0.1, 1, 10, 100]para o hiperparâmetroC. - Inicialize e treine um objeto
GridSearchCVe armazene o objeto treinado na variávelgrid_cv.
Solução
Obrigado pelo seu feedback!
single