0% menganggap dokumen ini bermanfaat (0 suara)
16 tayangan

Raisin Python

Diunggah oleh

Dimas Susanto
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
16 tayangan

Raisin Python

Diunggah oleh

Dimas Susanto
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 63

RAISIN

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

Python adalah bahasa pemrograman interpretatif multiguna yang digunakan untuk


pemecahan masalah pada sistem komputer modern. Python juga merupakan bahasa
pemrograman yang freeware yang artinya tidak ada batasan dalam penggunaan
pemrograman. Dan bahasa pemrograman python, umum digunakan semua kalangan
programmer dan bila ditinjau berdasarkan TIOBE dimana pada tahun 2023, bahasa
pemrograman python menjadi terpopuler digunakan dengan rating 13,45%. jadi dengan
menggunakan python, kita dapat memproses dataset raisin dan mengolahnya dengan
fitur yang berkesinambungan dengan machine learning.

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

1. BAGAIMANA HASIL KLARIFIKASI PEMBEDAAN VARIETES


KISMIS (KECIMEN DAN BESNI) MENGGUNAKAN MODEL
MINING YANG TERSEDIA DALAM RAISIN DATASET?
2. ALGORITMA MACHINE LEARNING APA YANG PALING
EFEKTIF UNTUK MENYELESAIKAN KLARIFIKASI INI?
3.
TUJUAN

Untuk mendukung penelitian dan pengembangan klasifikasi secara otomatis


supaya dapat membedakan jenis kismis berdasarkan oleh fisiknya. dan
dengan adanya dataset ini, diharapkan supaya dapat menghasilkan
algoritma yang cepat dan akurat.
MANFAAT

1. Untuk otomatisasi sistem klasifikasi produk di industri pertanian


2. Dapat membantu mengklasifikasikan dua varietas kismis, yaitu Kecimen
dan Besni, secara cepat dan akurat tanpa memerlukan analisis manua
MACHINE LEARNING
DATASET OVERVIEW

Pada langkah ini, dataset divisualisasikan menggunakan pairplot untuk:


Melihat hubungan antar fitur numerik seperti Area, MajorAxisLength, dll.
Mengamati bagaimana distribusi fitur ini berbeda berdasarkan kelas
(Kecimen atau Besni).
1. sns.pairplot(data, hue='Class', diag_kind='kde', palette='Set1')
2. plt.suptitle("Dataset Overview", size=16)
3. plt.show()
LABEL ENCODING

Pada langkah ini:


·Kolom Class (kategori Kecimen dan Besni) diubah menjadi angka menggunakan LabelEncoder.
·Encoding penting karena algoritma machine learning hanya bekerja dengan data numerik.
·Distribusi kelas setelah encoding divisualisasikan untuk memastikan data tidak berat sebelah
(balanced).

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)

scaled_df = pd.DataFrame(X_scaled, columns=X.columns)

scaled_df.hist(figsize=(12, 10), color='skyblue', bins=15)


plt.suptitle('Histograms of Scaled Features', size=16)
plt.show()
TRAIN-TEST SPLIT
Dataset dibagi menjadi:
·Data Latih (70%) untuk melatih model.
·Data Uji (30%) untuk mengevaluasi performa model.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)

train_class_dist = pd.Series(y_train).value_counts().sort_index()
test_class_dist = pd.Series(y_test).value_counts().sort_index()

fig, axes = plt.subplots(1, 2, figsize=(10, 4), sharey=True)


train_class_dist.plot(kind='bar', color='lightgreen', ax=axes[0])
test_class_dist.plot(kind='bar', color='orange', ax=axes[1])

axes[0].set_title('Training Set Class Distribution')


axes[1].set_title('Testing Set Class Distribution')

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)

coefficients = pd.DataFrame({'Feature': X.columns, 'Coefficient': model.coef_[0]})


coefficients = coefficients.sort_values(by='Coefficient', ascending=False)

sns.barplot(data=coefficients, x='Coefficient',hue="Feature", legend=False, y='Feature', palette='coolwarm')


plt.title('Logistic Regression Coefficients')
plt.show()
CONFUSION MATRIX

Matriks kebingungan dibuat untuk:


·Mengevaluasi performa model dalam memprediksi kelas pada data uji.
·Menampilkan jumlah prediksi benar (True Positive dan True Negative) serta kesalahan (False Positive dan False
Negative).
from sklearn.metrics import confusion_matrix

y_pred = model.predict(X_test)

cm = confusion_matrix(y_test, y_pred)

sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', cbar=False, xticklabels=['Kecimen', 'Besni'], yticklabels=


['Kecimen', 'Besni'])
plt.title('Confusion Matrix')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()
MODEL EVALUATION

Evaluasi model dilakukan menggunakan:


·Classification Report:
oPrecision: Seberapa tepat model dalam memprediksi kelas tertentu.
oRecall: Kemampuan model dalam mendeteksi semua contoh dari kelas tertentu.
oF1-score: Kombinasi precision dan recall dalam satu metrik.
·Akurasi: Persentase total prediksi yang benar.
from sklearn.metrics import classification_report, accuracy_score
report = classification_report(y_test, y_pred, target_names=['Kecimen', 'Besni'], output_dict=True)
report_df = pd.DataFrame(report).transpose()

sns.heatmap(report_df.iloc[:-1, :-1], annot=True, cmap='viridis', fmt='.2f')


plt.title('Classification Report')
plt.show()

accuracy = accuracy_score(y_test, y_pred)


print(f"Accuracy: {accuracy * 100:.2f}%")
ACCURACY: 85.19%
EXPLORATION
MELIHAT DATA AWAL

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

MMenggunakan fungsi info() untuk:


·Mengetahui tipe data dari setiap kolom.
·Melihat jumlah nilai yang tidak null di setiap kolom.
·Memeriksa apakah ada kolom yang membutuhkan penanganan khusus (seperti nilai hilang).
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 900 entries, 0 to 899
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Area 900 non-null int64
1 MajorAxisLength 900 non-null float64
2 MinorAxisLength 900 non-null float64
3 Eccentricity 900 non-null float64
4 ConvexArea 900 non-null int64
5 Extent 900 non-null float64
6 Perimeter 900 non-null float64
7 Class 900 non-null object
dtypes: float64(5), int64(2), object(1)
memory usage: 56.4+ KB
STATISTIK DESKRIPTIF

Menggunakan fungsi describe() untuk menghitung:


·Statistik seperti rata-rata, median, minimum, maksimum, dan standar deviasi untuk kolom numerik.
·Langkah ini membantu memahami skala data dan mendeteksi nilai ekstrem.
data.describe()
Area MajorAxisLength MinorAxisLength Eccentricity\
count900.000000 900.000000 900.000000 900.000000
mean87804.127778 430.929950 254.488133 0.781542
std39002.111390 116.035121 49.988902 0.090318
min25387.000000 225.629541 143.710872 0.348730
25%59348.000000 345.442898 219.111126 0.741766
50%78902.000000 407.803951 247.848409 0.798846
75% 105028.250000 494.187014 279.888575 0.842571
max235047.000000997.291941 492.275279 0.962124

ConvexArea Extent Perimeter


count900.000000 900.000000 900.000000
mean91186.090000 0.699508 1165.906636
std40769.290132 0.053468 273.764315
min26139.000000 0.379856 619.074000
25%61513.250000 0.670869 966.410750
50%81651.000000 0.707367 1119.509000
75%108375.750000 0.734991 1308.389750
max278217.000000 0.835455 2697.753000
MISSING VALUES

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:

NAÏVE BAYES: 83,61%


DECISION TREE: 86,25%
RANDOM FOREST: 83,33%
NEURAL NETWORK: 86,81%
SUPPORT VECTOR MACHINE (SVM): 86,39%

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

Siti Rabiah Rafhan Mazaya Ivan Febrianto Ryan


Dimas Susanto
Tuladawiah Fathurahman Lalo Fathurrahman

Pengerjaan INSTRUCTION
Pengerjaan Pengerjaan Pengerjaan
Pengerjaan
Laporan program Laporan Laporan
Program
Pembuatan Pengerjaan Pengerjaan Pengerjaan
PPT Laporan PPT PPT

20% 20% 20% 20% 20%


SEKIAN DAN
TERIMAKASIH
END

Anda mungkin juga menyukai