Add Tugas.Classification/Rizky Noor Fazila-Clas-SVM-cancer
This commit is contained in:
parent
99ed4d4929
commit
1fa34b8213
56
Tugas.Classification/Rizky Noor Fazila-Clas-SVM-cancer
Normal file
56
Tugas.Classification/Rizky Noor Fazila-Clas-SVM-cancer
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import pandas as pd
|
||||||
|
import numpy as np
|
||||||
|
from sklearn import preprocessing
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
from sklearn import svm
|
||||||
|
from sklearn.metrics import classification_report, f1_score
|
||||||
|
|
||||||
|
# Fungsi hitung Jaccard manual (untuk sklearn lama)
|
||||||
|
def jaccard_manual(y_true, y_pred):
|
||||||
|
intersection = np.logical_and(y_true == 1, y_pred == 1).sum()
|
||||||
|
union = np.logical_or(y_true == 1, y_pred == 1).sum()
|
||||||
|
return intersection / union if union != 0 else 0
|
||||||
|
|
||||||
|
# ================================
|
||||||
|
# 1. Load Data
|
||||||
|
# ================================
|
||||||
|
cell_df = pd.read_csv("cell_samples.csv")
|
||||||
|
|
||||||
|
# ================================
|
||||||
|
# 2. Bersihkan Kolom BareNuc
|
||||||
|
# ================================
|
||||||
|
cell_df = cell_df[pd.to_numeric(cell_df['BareNuc'], errors='coerce').notnull()]
|
||||||
|
cell_df['BareNuc'] = cell_df['BareNuc'].astype('int')
|
||||||
|
|
||||||
|
# ================================
|
||||||
|
# 3. Buat Feature dan Label
|
||||||
|
# ================================
|
||||||
|
feature_df = cell_df[['Clump','UnifSize','UnifShape','MargAdh',
|
||||||
|
'SingEpiSize','BareNuc','BlandChrom','NormNucl','Mit']].astype(float)
|
||||||
|
|
||||||
|
X = np.asarray(feature_df)
|
||||||
|
y = np.where(cell_df['Class'] == 2, 0, 1) # 0 = Benign, 1 = Malignant
|
||||||
|
|
||||||
|
# ================================
|
||||||
|
# 4. Split Train/Test
|
||||||
|
# ================================
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=4)
|
||||||
|
|
||||||
|
# ================================
|
||||||
|
# 5. Model SVM Kernel LINEAR
|
||||||
|
# ================================
|
||||||
|
model = svm.SVC(kernel='linear')
|
||||||
|
model.fit(X_train, y_train)
|
||||||
|
|
||||||
|
# ================================
|
||||||
|
# 6. Prediksi
|
||||||
|
# ================================
|
||||||
|
y_pred = model.predict(X_test)
|
||||||
|
|
||||||
|
# ================================
|
||||||
|
# 7. Evaluasi
|
||||||
|
# ================================
|
||||||
|
print("Avg F1-score:", f1_score(y_test, y_pred, average='weighted'))
|
||||||
|
print("Jaccard score:", jaccard_manual(y_test, y_pred))
|
||||||
|
print("\nClassification Report:\n")
|
||||||
|
print(classification_report(y_test, y_pred))
|
||||||
Loading…
x
Reference in New Issue
Block a user