Berikut contoh menggunakan TensorFlow dengan menggunakan data real. Data yang digunakan adalah pima-indians-diabetes.csv. Dapat didownload disini
Data pima_indians_diabetes pada artikel ini sudah dimodifikasi sedikit dengan menambahkan Column Group, sebenarnya tidak bermakna, digunakan untuk kebutuhan tutorial ini (menunjukan cara menggunakan vocabulary_list)
Langkah-langkah yang dilakukan program secara garis besar adalah sebaga berikut:
- Load data menggunakan pandas
- Normalisasi data feature column
- Definisikan feature column untuk model, untuk feature column age akan diubah menjadi categorical data, dengan range grouping (20-30, 30-40... dst)
- Untuk feature column group akan dibuat menjadi categorical dengan menggunakan vocab_list
- Spliting train test data menggunakan library dari sklearn train_test_split
- Definisikan input function untuk model, buat model lalu lakukan training
- Definisikan evaluate function, lalu lakukan evaluate model (evaluate = testing)
- Definisikan prediction function, lalu gunakan model untuk prediksi
from sklearn.model_selection import train_test_split
import pandas as pd
import tensorflow as tf
import matplotlib.pyplot as plt
%matplotlib inline
#load data menggunakan pandas
diabetes = pd.read_csv('pima-indians-diabetes.csv')
#init variable column yang akan di normalize
cols_to_norm = ['Number_pregnant', 'Glucose_concentration', 'Blood_pressure', 'Triceps',
'Insulin', 'BMI', 'Pedigree']
#normalize data
diabetes[cols_to_norm] = diabetes[cols_to_norm].apply(lambda x: (x - x.min())/(x.max()-x.min()))
#feature column (continous numeric)
n_pregnant = tf.feature_column.numeric_column('Number_pregnant')
g_concentration = tf.feature_column.numeric_column('Glucose_concentration')
b_pressure = tf.feature_column.numeric_column('Blood_pressure')
triceps = tf.feature_column.numeric_column('Triceps')
insulin = tf.feature_column.numeric_column('Insulin')
bmi = tf.feature_column.numeric_column('BMI')
pedigree = tf.feature_column.numeric_column('Pedigree')
age = tf.feature_column.numeric_column('Age')
#set age menjadi categorical data, menggunakan variable yang sudah diubah menjadi numeric_column
cat_age = tf.feature_column.bucketized_column(age, boundaries=[20,30,40,50,60,70,80])
#feature column (categorical)
#using vocablist
assigned_group = tf.feature_column.categorical_column_with_vocabulary_list('Group', ['A','B','C','D'])
feat_cols = [n_pregnant, g_concentration, b_pressure, triceps, insulin, bmi, pedigree, cat_age, assigned_group]
#train test split
x_data = diabetes.drop('Class', axis=1)
labels = diabetes['Class']
X_train, X_test, y_train, y_test = train_test_split(x_data, labels, test_size=0.3, random_state=101)
#definisikan input function untuk tf.estimator
input_func = tf.estimator.inputs.pandas_input_fn(x=X_train, y=y_train, batch_size=10, num_epochs=1000, shuffle=True)
#membuat model
model = tf.estimator.LinearClassifier(feature_columns=feat_cols, n_classes=2)
#training model
model.train(input_fn=input_func, steps=1000)
#definisikan evaluasi (testing) function
eval_input_func = tf.estimator.inputs.pandas_input_fn(x=X_test, y=y_test, batch_size=10, num_epochs=1, shuffle=False)
#lakukan evaluasi
result = model.evaluate(eval_input_func)
#definisikan prediction function
pred_input_func = tf.estimator.inputs.pandas_input_fn(x=X_test, batch_size=10, num_epochs=1, shuffle=False)
#lakukan prediksi
predictions = model.predict(pred_input_func)
#hasil dari prediksi
my_pred = list(predictions)
TensorFlow Linear Regression menggunakan Real Data
Reviewed by noname needed
on
May 21, 2018
Rating:
No comments: