Olá pessoal!
Neste artigo, veremos outra técnica de Machine Learning chamada Classificação (Logistic Regression). A classificação é usada quando você quer prever uma categoria ou classe para um dado. Ao contrário da regressão, que prevê um valor numérico, a classificação decide a qual grupo ou classe um dado pertence. Logistic Regression (Regressão Logística) é uma técnica de classificação que ajuda a prever a probabilidade de um dado pertencer a uma determinada classe.
Cenário: Imagine que você trabalha em uma instituição financeira e deseja prever se um cliente será um bom ou mau pagador com base em algumas características, como renda, valor do empréstimo solicitado, e histórico de crédito.
Agora que já temos o cenário, vamos ao código! Crie um projeto Console em C# e adicione a biblioteca abaixo pelo NuGet Package.
Install-Package Microsoft.ML
Agora, na classe Program.cs, cole o código abaixo e execute.
using System;
using System.Collections.Generic;
using Microsoft.ML;
using Microsoft.ML.Data;
namespace LogisticRegressionExample
{
// Classe que representa os dados de crédito do cliente
public class CreditData
{
public float Income { get; set; } // Renda anual do cliente
public float LoanAmount { get; set; } // Valor do empréstimo solicitado
public float CreditScore { get; set; } // Pontuação de crédito do cliente
public bool IsGoodCredit { get; set; } // Se o cliente é um bom pagador (true = sim, false = não)
}
// Classe que representa a previsão feita pelo modelo
public class CreditPrediction
{
[ColumnName("PredictedLabel")]
public bool IsGoodCredit { get; set; } // Previsão se o cliente é um bom pagador
public float Probability { get; set; } // Probabilidade da previsão ser verdadeira
}
class Program
{
static void Main(string[] args)
{
var mlContext = new MLContext(); // Inicializa o contexto do ML.NET
// Dados de exemplo para treinar o modelo
var creditData = new List<CreditData>
{
new CreditData { Income = 50000, LoanAmount = 20000, CreditScore = 650, IsGoodCredit = true },
new CreditData { Income = 30000, LoanAmount = 25000, CreditScore = 600, IsGoodCredit = false },
new CreditData { Income = 70000, LoanAmount = 30000, CreditScore = 700, IsGoodCredit = true },
new CreditData { Income = 25000, LoanAmount = 10000, CreditScore = 550, IsGoodCredit = false },
new CreditData { Income = 45000, LoanAmount = 15000, CreditScore = 680, IsGoodCredit = true },
};
// Carrega os dados em um IDataView, que é o formato de dados usado pelo ML.NET
var dataView = mlContext.Data.LoadFromEnumerable(creditData);
// Configura o pipeline de treinamento
var pipeline = mlContext.Transforms.Concatenate("Features", new[] { "Income", "LoanAmount", "CreditScore" }) // Combina as colunas de entrada em uma única coluna de características
.Append(mlContext.Transforms.NormalizeMinMax("Features")) // Normaliza as características para que todas estejam na mesma escala
.Append(mlContext.BinaryClassification.Trainers.LbfgsLogisticRegression(labelColumnName: "IsGoodCredit", featureColumnName: "Features")); // Aplica o modelo de Regressão Logística
// Treina o modelo com os dados de exemplo
var model = pipeline.Fit(dataView);
// Cria um engine de previsão para fazer previsões com novos dados
var predictionEngine = mlContext.Model.CreatePredictionEngine<CreditData, CreditPrediction>(model);
// Novo cliente para prever se é bom pagador
var newClient = new CreditData { Income = 55000, LoanAmount = 20000, CreditScore = 670 };
var prediction = predictionEngine.Predict(newClient); // Faz a previsão com o modelo treinado
// Exibe o resultado da previsão
Console.WriteLine($"O cliente provavelmente é um bom pagador? {prediction.IsGoodCredit} (Probabilidade: {prediction.Probability:P2})");
}
}
}
Explicação Simples do Código:
- CreditData: Define as características de um cliente, como renda, valor do empréstimo solicitado e pontuação de crédito, além de se o cliente é um bom pagador ou não.
- CreditPrediction: Classe que guarda a previsão (se o cliente é um bom pagador ou não) e a probabilidade dessa previsão.
- Logistic Regression: Usada para calcular a probabilidade de um cliente ser um bom pagador com base nas características fornecidas.
O que o Modelo Faz?
Treina um modelo com base em dados anteriores para entender quais características estão associadas ao comportamento de bom pagador. Prevê se novos clientes provavelmente serão bons ou maus pagadores com base em suas características.
Rodando este código, você verá uma previsão indicando se o cliente provavelmente será um bom pagador, junto com a probabilidade dessa previsão.
Não se esqueça de que, para um ambiente real, talvez você tenha que considerar outros fatores ou fazer ajustes no código para ter um modelo mais preciso para o seu negócio.
Código fonte: GitHub
E é isso pessoal! Espero que tenham gostado :)
Abraços!
Top comments (0)