TensorFlow Linear Regression menggunakan Real Data



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 TensorFlow Linear Regression menggunakan Real Data Reviewed by noname needed on May 21, 2018 Rating: 5

No comments:

Powered by Blogger.