Raisin Python
Raisin Python
ANGGOTA KELOMPOK
SITI RABIAH TULADAWIAH IVAN FEBRIANTO LALO
101012300304 101012330380
INSTRUCTION
RAFHAN MAZAYA F RYAN FATTUROHMAN B.M
101012300238 10101230039
DIMAS SUSANTO
101012330288
LATAR BELAKANG
Kismis merupakan produk hasil dari pertanian yang mempunyai macam jenis dan
kualitas, sehingga pengklasifikasian jenisnya merupakan hal yang penting dalam sektor
industri pangan dan pertanian. Analisis data menggunakan bahasa pemrogramman
python menggunakan Visual Studio Code dan Machine Learning dapat membantu untuk
mempercepat dan meningkatkan akurasi dari proses pengklasifikasian kismis
berdasarkan bentuk fisiknya
RUMUSAN MASALAH
le = LabelEncoder()
data['Class'] = le.fit_transform(data['Class']) # 'Kecimen' -> 0, 'Besni' -> 1
sns.countplot(data=data,hue="Class", legend=False, x='Class', palette='viridis')
plt.title('Class Distribution After Encoding')
plt.xlabel('Class')
plt.ylabel('Count')
plt.xticks([0, 1], ['Kecimen', 'Besni'])
plt.show()
FEATURE SCALING
Langkah ini bertujuan untuk:
·Menstandarisasi fitur numerik (Area, MajorAxisLength, Extent, dll.) menggunakan StandardScaler.
·Standarisasi dilakukan agar semua fitur memiliki skala yang sama (rata-rata 0 dan standar deviasi 1).
Mengapa penting?
·Model machine learning bekerja lebih baik jika fitur memiliki skala yang seragam.
·Histogram hasil scaling divisualisasikan untuk memverifikasi transformasi.
X = data.drop('Class', axis=1)# Features
y = data['Class'] # Target
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
train_class_dist = pd.Series(y_train).value_counts().sort_index()
test_class_dist = pd.Series(y_test).value_counts().sort_index()
for ax in axes:
ax.set_xlabel('Class')
ax.set_ylabel('Count')
ax.set_xticks([0, 1])
ax.set_xticklabels(['Kecimen', 'Besni'])
plt.tight_layout()
plt.show()
LOGISTIC REGRESSION
MODEL
Model Logistic Regression dilatih pada data latih. Setelah model dilatih:
·Koefisien setiap fitur divisualisasikan untuk memahami dampaknya terhadap prediksi model.
·Fitur dengan koefisien besar memiliki pengaruh lebih signifikan pada hasil prediksi.
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
Menampilkan lima baris pertama dari dataset menggunakan fungsi head() untuk memahami struktur data dan
jenis-jenis kolom. Langkah ini penting untuk memastikan dataset dimuat dengan benar.
data.head()
AreaMajorAxisLengthMinorAxisLength Eccentricity ConvexArea\
0 87524 442.246011 253.291155 0.819738 90546
1 75166 406.690687 243.032436 0.801805 78789
2 90856 442.267048 266.328318 0.798354 93717
3 45928 286.540559 208.760042 0.684989 47336
4 79408 352.190770 290.827533 0.564011 81463
Extent PerimeterClass
0 0.758651 1184.040Kecimen
1 0.684130 1121.786Kecimen
2 0.637613 1208.575Kecimen
3 0.699599 844.162Kecimen
4 0.792772 1073.251Kecimen
INFORMASI DATASET
Visualisasi:
·Bar chart untuk jumlah missing values di setiap kolom.
Makna Visual:
·Grafik ini menunjukkan jumlah nilai yang hilang pada setiap kolom, sehingga memudahkan identifikasi kolom
mana yang membutuhkan penanganan.
missing = data.isnull().sum()
plt.bar(missing.index, missing.values, color='skyblue')
plt.title("Jumlah Missing Value per Kolom")
plt.xlabel("Kolom")
plt.ylabel("Jumlah Missing")
plt.show()
DISTRIBUSI KOLOM
NUMERIK
Visualisasi:
·Histogram untuk setiap kolom numerik.
Makna Visual:
·Membantu memahami pola distribusi setiap fitur numerik.
·Distribusi dapat berbentuk normal, skewed, atau multimodal.
data.hist(figsize=(10, 8), bins=10, color='lightblue')
plt.suptitle("Distribusi Kolom Numerik", fontsize=16)
plt.show()
PENCILAN PADA KOLOM
NUMERIK
Visualisasi:
·Boxplot untuk setiap kolom numerik.
Makna Visual:
·Boxplot digunakan untuk mengidentifikasi pencilan (outliers) dalam data numerik.
·Membantu memahami sebaran data dan mendeteksi nilai ekstrem.
plt.figure(figsize=(12, 6))
sns.boxplot(data=data.drop('Class', axis=1))
plt.title("Pencilan di Kolom Numerik")
plt.show()
DISTRIBUSI KELAS
Visualisasi:
·Bar chart untuk kolom Class.
Makna Visual:
·Grafik ini menunjukkan distribusi jumlah observasi dalam setiap kelas.
·Membantu memeriksa apakah dataset memiliki distribusi yang seimbang atau tidak.
sns.countplot(x='Class', data=data, hue='Class', legend=False, palette='coolwarm')
plt.title("Distribusi Kelas")
plt.show()
KORELASI ANTAR FITUR
Visualisasi:
·Heatmap korelasi antara kolom numerik.
Makna Visual:
·Menunjukkan hubungan antar fitur numerik.
·Korelasi positif atau negatif yang kuat dapat membantu dalam seleksi fitur atau interpretasi.
plt.figure(figsize=(10, 6))
sns.heatmap(data.drop('Class', axis=1).corr(), annot=True, cmap='coolwarm')
plt.title("Korelasi Antar Fitur")
plt.show()
RELASI ANTAR FITUR
BERDASARKAN KELAS
Visualisasi:
·Pairplot untuk semua fitur numerik, dengan warna berdasarkan kelas.
Makna Visual:
·Pairplot membantu memahami hubungan antar fitur.
·Membantu melihat bagaimana pola data bervariasi berdasarkan kelas.
sns.pairplot(data, hue='Class', palette='Set2')
plt.suptitle("Relasi Antar Fitur Berdasarkan Kelas")
plt.show()
DISTRIBUSI KOLOM AREA
Visualisasi:
·Histogram dan KDE plot untuk kolom Area.
Makna Visual:
·Distribusi Area menunjukkan ukuran objek dalam dataset.
·Membantu mengidentifikasi pola ukuran area seperti skewness.
sns.histplot(data['Area'], kde=True, color='green')
plt.title("Distribusi Area")
plt.xlabel("Area")
plt.show()
RELASI AREA DAN
PERIMETER
Visualisasi:
·Scatterplot antara kolom Area dan Perimeter, dengan warna berdasarkan kelas.
Makna Visual:
·Scatterplot menunjukkan hubungan antara Area dan Perimeter.
·Membantu mengidentifikasi apakah hubungan ini bervariasi berdasarkan kelas.
sns.scatterplot(x='Area', y='Perimeter', hue='Class', data=data, palette='cool')
plt.title("Scatterplot Area vs Perimeter")
plt.show()
MAJOR AXIS
BERDASARKAN KELAS
Visualisasi:
·Barplot untuk panjang MajorAxisLength berdasarkan kelas.
Makna Visual:
·Menunjukkan perbedaan panjang sumbu utama (major axis) antar kelas.
·Membantu memahami apakah panjang sumbu utama relevan untuk membedakan kelas.
sns.barplot(x='Class', y='MajorAxisLength', hue="Class", legend=False, data=data, palette='Blues')
plt.title("Panjang Major Axis Berdasarkan Kelas")
plt.show()
DISTRIBUSI MINOR AXIS
LENGTH
Visualisasi:
·KDE Plot untuk kolom MinorAxisLength.
Makna Visual:
·Distribusi panjang sumbu minor (minor axis).
·Membantu memeriksa variasi ukuran objek.
sns.kdeplot(data['MinorAxisLength'], fill=True, color='orange')
plt.title("Distribusi Minor Axis Length")
plt.xlabel("Minor Axis Length")
plt.show()
ECCENTRICITY
BERDASARKAN KELAS
Visualisasi:
·Boxplot untuk kolom Eccentricity berdasarkan kelas.
Makna Visual:
·Menunjukkan sebaran nilai eccentricity (keberaturan bentuk) antar kelas.
·Membantu memahami apakah bentuk objek mempengaruhi klasifikasi.
sns.boxplot(x='Class', y='Eccentricity',hue="Class", legend=False, data=data, palette='Set3')
plt.title("Eccentricity Berdasarkan Kelas")
plt.show()
DISTRIBUSI EXTENT
Visualisasi:
·Histogram dan KDE Plot untuk kolom Extent.
Makna Visual:
·Extent adalah rasio antara area objek dengan bounding box-nya.
·Distribusi ini membantu memahami variasi bentuk objek.
sns.histplot(data['Extent'], kde=True, bins=10, color='purple')
plt.title("Distribusi Extent")
plt.xlabel("Extent")
plt.show()
DISTRIBUSI CONVEX AREA
Visualisasi:
·Boxplot untuk kolom ConvexArea.
Makna Visual:
·Menunjukkan distribusi area convex (area luar) dari objek.
·Membantu mengidentifikasi pencilan.
sns.boxplot(data=data['ConvexArea'], color='red')
plt.title("Distribusi Convex Area")
plt.show()
LOG TRANSFORM UNTUK AREA
Visualisasi:
·Histogram dan KDE Plot untuk kolom Area setelah transformasi log.
Makna Visual:
·Transformasi log membantu mengatasi skewness pada distribusi Area.
·Distribusi yang lebih merata dapat meningkatkan performa model.
import numpy as np
data['LogArea'] = np.log1p(data['Area'])
sns.histplot(data['LogArea'], kde=True, color='teal')
plt.title("Distribusi Area (Log Transform)")
RATA-RATA FITUR
BERDASARKAN KELAS
Visualisasi:
·Bar chart untuk rata-rata nilai fitur berdasarkan kelas.
Makna Visual:
·Membandingkan rata-rata fitur numerik antar kelas.
·Membantu menemukan fitur yang signifikan dalam membedakan kelas.
class_means = data.groupby('Class').mean()
class_means.plot(kind='bar', figsize=(12, 6))
plt.title("Rata-Rata Fitur Berdasarkan Kelas")
plt.ylabel("Nilai Rata-Rata")
plt.show()
PAIRPLOT FITUR YANG
DITRANSFORMASI
Visualisasi:
·Pairplot untuk fitur-fitur yang telah ditransformasi, seperti LogArea, Perimeter, dan Extent.
Makna Visual:
·Menunjukkan hubungan antar fitur yang telah ditransformasi.
·Membantu memahami pola yang lebih jelas dalam data.
transformed_features = data[['LogArea', 'Perimeter', 'Extent', 'Class']]
sns.pairplot(transformed_features, hue='Class', palette='husl')
plt.suptitle("Relasi Antar Fitur yang Ditransformasi")
plt.show()
DETEKSI OUTLIER
Visualisasi:
·Bar chart untuk jumlah outlier pada setiap fitur.
Makna Visual:
·Outlier dihitung menggunakan Z-score.
·Grafik ini membantu mengidentifikasi fitur mana yang memiliki banyak outlier dan memerlukan
penanganan khusus.
from scipy.stats import zscore
z_scores = np.abs(zscore(data.drop(['Class', 'LogArea'], axis=1)))
outliers = (z_scores > 3).sum()
outliers.plot(kind='bar', color='orange')
plt.title("Jumlah Outlier per Fitur")
plt.ylabel("Jumlah Outlier")
plt.xlabel("Fitur")
plt.show()
KESIMPULAN
BERDASARKAN PENELITIAN YANG DILAKUKAN, PENERAPAN ALGORITMA KLASIFIKASI DATA MINING UNTUK
MEMBEDAKAN JENIS KISMIS KECIMEN DAN BESNI MENUNJUKKAN HASIL YANG BAIK. DENGAN PEMBAGIAN
DATA TRAINING SEBESAR 80% DAN DATA TESTING 20%, DIPEROLEH AKURASI SEBAGAI BERIKUT:
DARI HASIL TERSEBUT, ALGORITMA NEURAL NETWORK MEMBERIKAN AKURASI TERTINGGI, YAITU 86,81%,
SEHINGGA DAPAT DIANGGAP SEBAGAI MODEL TERBAIK DALAM KLASIFIKASI JENIS KISMIS PADA PENELITIAN
INI.
SARAN
UNTUK MENINGKATKAN AKURASI DAN KEANDALAN MODEL KLASIFIKASI DI MASA MENDATANG, BEBERAPA LANGKAH YANG DAPAT
DIPERTIMBANGKAN ANTARA LAIN:
1. PENAMBAHAN DATASET: MEMPERLUAS JUMLAH DATA DENGAN MENAMBAHKAN LEBIH BANYAK SAMPEL KISMIS DARI BERBAGAI
VARIETAS DAPAT MEMBANTU MODEL BELAJAR POLA YANG LEBIH BERAGAM DAN MENINGKATKAN AKURASI.
2. PEMILIHAN FITUR YANG OPTIMAL: MELAKUKAN SELEKSI FITUR MENGGUNAKAN TEKNIK SEPERTI ALGORITMA GENETIKA DAPAT
MEMBANTU MEMILIH ATRIBUT YANG PALING RELEVAN, SEHINGGA MENINGKATKAN KINERJA MODEL.
3. STUDENT JOURNAL
4. EKSPLORASI ALGORITMA LAIN: MENCOBA ALGORITMA LAIN SEPERTI K-NEAREST NEIGHBOR (K-NN) ATAU KOMBINASI
BEBERAPA ALGORITMA (ENSEMBLE METHODS) MUNGKIN MEMBERIKAN HASIL YANG LEBIH BAIK.
5. PENGATURAN PARAMETER YANG LEBIH BAIK: MELAKUKAN TUNING PARAMETER PADA SETIAP ALGORITMA
UNTUK MENEMUKAN KONFIGURASI OPTIMAL YANG DAPAT MENINGKATKAN PERFORMA MODEL.
6. VALIDASI SILANG (CROSS-VALIDATION): MENGGUNAKAN TEKNIK VALIDASI SILANG UNTUK MEMASTIKAN
MODEL TIDAK OVERFITTING DAN MEMILIKI GENERALISASI YANG BAIK TERHADAP DATA BARU.
DENGAN MENERAPKAN SARAN-SARAN DI ATAS, DIHARAPKAN MODEL KLASIFIKASI JENIS KISMIS DAPAT MEMILIKI
AKURASI DAN KEANDALAN YANG LEBIH TINGGI DI MASA MENDATANG.
TABEL KONTRIBUSI
Pengerjaan INSTRUCTION
Pengerjaan Pengerjaan Pengerjaan
Pengerjaan
Laporan program Laporan Laporan
Program
Pembuatan Pengerjaan Pengerjaan Pengerjaan
PPT Laporan PPT PPT