```python!
import numpy as np
import pandas as pd
from sklearn.ensemble import IsolationForest
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, classification_report, confusion_matrix
from scipy.io import loadmat
# Load data
prefix = 'yelp_data/'
data_file = loadmat(prefix + 'YelpChi.mat')
labels = data_file['label'].flatten()
feat_data = data_file['features'].todense().A
# Create and fit the Isolation Forest model
iso_forest = IsolationForest(contamination=0.5, random_state=42)
predictions = iso_forest.fit_predict(feat_data)
predictions = np.where(predictions == -1, 1, 0)
# Create a DataFrame with predictions and labels
data = {'predictions': predictions, 'labels': labels}
df = pd.DataFrame(data)
# Calculate confusion matrix
conf_matrix = confusion_matrix(labels, predictions)
TP, FP, TN, FN = conf_matrix[1, 1], conf_matrix[0, 1], conf_matrix[0, 0], conf_matrix[1, 0]
# Calculate evaluation metrics
accuracy = accuracy_score(labels, predictions)
precision = precision_score(labels, predictions)
recall = recall_score(labels, predictions)
f1 = f1_score(labels, predictions)
# Generate classification report
class_report = classification_report(labels, predictions)
# Print the results
print("True Positives (TP):", TP)
print("False Positives (FP):", FP)
print("True Negatives (TN):", TN)
print("False Negatives (FN):", FN)
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)
print("Classification Report:")
print(class_report)
```