Os métodos de ensemble combinam as previsões de vários modelos para melhorar a performance, enquanto redes neurais artificiais são modelos inspirados no cérebro humano, capazes de capturar relações complexas nos dados.
Exemplo: Random Forest e Redes Neurais com Scikit-learn e Keras
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from keras.models import Sequential
from keras.layers import Dense
# Criar um DataFrame de exemplo
data = {
'idade' : [25, 30, 45, 40, 50],
'renda' : [20000, 30000, 50000, 40000, 60000],
'compra' : [0, 0, 1, 0, 1]
}
df = pd.DataFrame(data)
# Dividir os dados em variáveis independentes e dependentes
X = df[['idade', 'renda']]
y = df['compra']
# Dividir os dados em conjuntos de treinamento e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Random Forest
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)
rf_pred = rf_model.predict(X_test)
rf_accuracy = accuracy_score(y_test, rf_pred)
print(f'Random Forest Accuracy: {rf_accuracy}')
# Rede Neural com Keras
nn_model = Sequential()
nn_model.add(Dense(12, input_dim=2, activation='relu'))
nn_model.add(Dense(8, activation='relu'))
nn_model.add(Dense(1, activation='sigmoid'))
nn_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
nn_model.fit(X_train, y_train, epochs=150, batch_size=10, verbose=0)
_, nn_accuracy = nn_model.evaluate(X_test, y_test)
print(f'Rede Neural Accuracy: {nn_accuracy}')