<jupyter_start><jupyter_text>0. Dataset Dataset yang digunakan dalam Notebook ini adalah dataset Iris (https://archive.ics.uci.edu/ml/datasets/iris) yang disediakan dalam pustaka Sklearn. Dataset dapat di-import dengan potongan kode di bawah:<jupyter_code>from sklearn import datasets
iris = datasets.load_iris()
X = iris.data  # we only take the first two features.
y = iris.target<jupyter_output><empty_output><jupyter_text>Dataset Iris terdiri dari 3 kelas (Iris Setosa, Iris Versicolour, Iris Virginica) dengan banyak data sejumlah 150. Atribut / Fitur dari dataset terdiri dari sepal length dalam cm, sepal width dalam cm, petal length dalam cm, dan petal width dalam cm.<jupyter_code>print("Banyak data: ", len(X))
print("10 data pertama: ")
print(X[:10])
print("10 label pertama: ")
print(y[:10])<jupyter_output>10 label pertama: 
[0 0 0 0 0 0 0 0 0 0]<jupyter_text>1. Pembagian Data  1.1 Train-Validation Split Train-Validation split dapat dilakukan dengan menjalankan potongan kode di bawah. Persentase pembagian data training dan data validasi dapat ditentukan dengan mengubah nilai parameter train_size.<jupyter_code>from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.7)
print("Banyak data latih setelah dilakukan Train-Validation Split: ", len(X_train))
print("Banyak data uji setelah dilakukan Train-Validation Split: ", len(X_test))<jupyter_output>Banyak data latih setelah dilakukan Train-Validation Split:  105
Banyak data uji setelah dilakukan Train-Validation Split:  45<jupyter_text>1.2	K-Fold Cross Validation Pustaka Scikit-learn menyediakan wrapper untuk melakukan K-Fold Cross Validation, yaitu dengan meng-import cross_val_score. cross_val_score menerima input berupa model machine learning, data training, label training, dan nilai K. Output yang dikeluarkan akan berupa list berisi akurasi setiap fold, sehingga untuk mendapatkan nilai rata-rata akurasi dari setiap foldnya, dapat menggunakan built-in function mean().<jupyter_code>from sklearn.model_selection import cross_val_score
from sklearn.svm import SVC

model = SVC(kernel = 'linear', C = 1)
scores = cross_val_score(model, X, y, cv = 5)
print("Akurasi model SVM untuk tiap fold: ", scores)
print("Akurasi model SVM dengan 5-Fold Cross Validation: ", scores.mean())<jupyter_output>Akurasi model SVM untuk tiap fold:  [0.96666667 1.         0.96666667 0.96666667 1.        ]
Akurasi model SVM dengan 5-Fold Cross Validation:  0.9800000000000001<jupyter_text>2. Metode Klasifikasi Untuk potongan-potongan kode Metode Klasifikasi, data yang akan digunakan adalah data yang telah terbagi oleh proses Train-Validation split. Model akan dilatih dengan X_train dan y_train. Model yang telah terlatih kemudian diuji performa akurasinya menggunakan X_test dan y_test.  2.1 Logistic Regression Penjelasan lebih lengkap mengenai penggunaan Logistic Regression dapat dilihat pada https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html<jupyter_code>from sklearn.linear_model import LogisticRegression
from sklearn import metrics

lr = LogisticRegression()

lr.fit(X_train, y_train)
y_pred = lr.predict(X_test)
score = metrics.accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan Logistic Regression: ", score)<jupyter_output>Akurasi dengan menggunakan Logistic Regression:  1.0<jupyter_text>2.2 Support Vector Machine Penjelasan lebih lengkap mengenai penggunaan Support Vector Machine dapat dilihat pada https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html<jupyter_code>from sklearn.svm import SVC
from sklearn import metrics

svm = SVC(
  kernel = 'rbf',
  C = 1,
  gamma = 0.01
)

svm.fit(X_train, y_train)
y_pred = svm.predict(X_test)
score = metrics.accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan Support Vector Machine: ", score)<jupyter_output>Akurasi dengan menggunakan Support Vector Machine:  0.9777777777777777<jupyter_text>Hyperparameter SVM Saat menggunakan model SVM, beberapa parameter dapat diubah sesuai dengan kebutuhan, antara lain kernel (linear, polynomial, rbf), nilai C, dan nilai Gamma.<jupyter_code># SVM dengan kernel Linear, nilai parameter C dapat diubah juga.
svmLinear = SVC(
  kernel = 'linear',
  C = 1
)

svmLinear.fit(X_train, y_train)
y_pred = svmLinear.predict(X_test)
score = metrics.accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan Support Vector Machine Linear Kernel: ", score)
# SVM dengan kernel polynomial, nilai parameter C, degree, dan gamma dapat diubah juga.
svmPoly = SVC(
  kernel = 'poly',
  C = 1,
  gamma = 0.01,
  degree = 2
)

svmPoly.fit(X_train, y_train)
y_pred = svmPoly.predict(X_test)
score = metrics.accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan Support Vector Machine Polynomial Kernel: ", score)
# SVM dengan kernel RBF, nilai parameter C dan gamma dapat diubah juga.
svmRBF = SVC(
  kernel = 'rbf',
  C = 1,
  gamma = 0.01,
)

svmRBF.fit(X_train, y_train)
y_pred = svmRBF.predict(X_test)
score = metrics.accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan Support Vector Machine RBF Kernel: ", score)<jupyter_output>Akurasi dengan menggunakan Support Vector Machine RBF Kernel:  0.9777777777777777<jupyter_text>2.3 Decision Tree Penjelasan lebih lengkap mengenai penggunaan Decision Tree dapat dilihat pada https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.htmlsklearn.tree.DecisionTreeClassifier<jupyter_code>from sklearn.tree import DecisionTreeClassifier
from sklearn import metrics

dt = DecisionTreeClassifier(
  max_depth = None,
  min_samples_split = 2
)

dt.fit(X_train, y_train)
y_pred = dt.predict(X_test)
score = metrics.accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan Decision Tree: ", score)<jupyter_output>Akurasi dengan menggunakan Decision Tree:  0.9777777777777777<jupyter_text>Hyperparameter Decision Tree Saat menggunakan model Decision Tree, beberapa parameter dapat diubah sesuai dengan kebutuhan, antara max_depth dan min_samples_split.<jupyter_code># Decision Tree dengan maximal kedalaman adalah 1 dan minimal jumlah sampel untuk dibentuk leaf baru adalah 2
dt = DecisionTreeClassifier(
  max_depth = 1,
  min_samples_split = 2
)

dt.fit(X_train, y_train)
y_pred = dt.predict(X_test)
score = metrics.accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan Decision Tree: ", score)<jupyter_output>Akurasi dengan menggunakan Decision Tree:  0.6<jupyter_text>2.4 Naive Bayes Penjelasan lebih lengkap mengenai penggunaan Naive Bayes dapat dilihat pada https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.BernoulliNB.htmlsklearn.naive_bayes.BernoulliNB<jupyter_code>from sklearn import naive_bayes
from sklearn import metrics

nb = naive_bayes.BernoulliNB()

nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
score = metrics.accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan Naive Bayes: ", score)<jupyter_output>Akurasi dengan menggunakan Naive Bayes:  0.24444444444444444<jupyter_text>2.5 K-Nearest Neighbors Penjelasan lebih lengkap mengenai penggunaan K-Nearest Neighbors dapat dilihat pada https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.htmlsklearn.neighbors.KNeighborsClassifier<jupyter_code>from sklearn.neighbors import KNeighborsClassifier
from sklearn import metrics

knn = KNeighborsClassifier()

knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
score = metrics.accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan Nearest Neighbor: ", score)
# Import AdaBoost Classifier dari sklearn
from sklearn.ensemble import AdaBoostClassifier

# Import metric untuk memeriksa akurasi
from sklearn import metrics

ab = AdaBoostClassifier(
    n_estimators = 50,  #menentukan banyaknya weak learner sebanyak 50
    learning_rate = 1
)

ab.fit(X_train, y_train)
y_pred = ab.predict(X_test)
score = metrics.balanced_accuracy_score(y_test, y_pred)
print("Akurasi dengan menggunakan AdaBoost Classifier: ", score)<jupyter_output>Akurasi dengan menggunakan AdaBoost Classifier:  1.0
{'fraction_non_alphanumeric': 0.07716049382716049, 'fraction_numerical': 0.02432098765432099, 'mean_word_length': 6.188110026619343, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 35, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 5, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '11', 'dir': 'jupyter-structured-clean-dedup', 'id': '320793', 'license': 'CC0-1.0', 'n_tokens_mistral': 3213, 'n_tokens_neox': 2911, 'n_words': 772, 'path': 'BuildModeling.ipynb', 'repo_name': 'anagdesa/Basic-of-Python', 'size': '8100'}