braintumorcodewithnpz
braintumorcodewithnpz
import numpy as np
from PIL import Image
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
import matplotlib.pyplot as plt
images = np.array(images)
labels = np.array(labels)
le = LabelEncoder()
labels_encoded = le.fit_transform(labels)
np.savez_compressed(save_path, images=images, labels=labels_encoded,
classes=le.classes_)
print(f"Saved {len(images)} images and labels to {save_path}")
def load_data(npz_path):
data = np.load(npz_path)
return data['images'], data['labels'], data['classes']
def prepare_ml_data(X):
return X.reshape(X.shape[0], -1)
svm = SVC(kernel='rbf')
svm.fit(X_train, y_train)
svm_preds = svm.predict(X_test)
results['SVM'] = accuracy_score(y_test, svm_preds)
print(f"SVM accuracy: {results['SVM']:.4f}")
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, y_train)
rf_preds = rf.predict(X_test)
results['Random Forest'] = accuracy_score(y_test, rf_preds)
print(f"Random Forest accuracy: {results['Random Forest']:.4f}")
def plot_results(results):
plt.figure(figsize=(8,5))
plt.bar(results.keys(), results.values(),
color=['blue','green','red','purple'])
plt.ylim(0,1)
plt.title('Model Accuracy Comparison')
plt.ylabel('Accuracy')
for i, v in enumerate(results.values()):
plt.text(i, v + 0.01, f"{v:.2f}", ha='center')
plt.show()
if __name__ == '__main__':
dataset_path = 'lung_dataset' # Change this to your lung dataset path
npz_file = 'lung_data.npz'
image_size = (64, 64)
print("Loading dataset...")
X, y, classes = load_data(npz_file)
X_train_flat = prepare_ml_data(X_train)
X_test_flat = prepare_ml_data(X_test)