#!/usr/bin/env python # coding: utf-8 # In[1]: import pandas as pd import numpy as np import skflow as sf import tensorflow as tf from sklearn.cross_validation import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # In[2]: np.random.seed(42) # In[3]: data = pd.read_csv('tf_examples/data/titanic_train.csv') data.head() # In[4]: predictors = ['Age', 'SibSp', 'Fare', 'Parch', 'Pclass', 'Sex'] # In[5]: X_train, X_test, y_train, y_test = train_test_split(data[predictors].replace({'Sex':{'male':0, 'female':1}}).fillna(data.mean()), data.Survived) # In[6]: lr = LogisticRegression() lr.fit(X_train, y_train) lr.score(X_test, y_test) # In[7]: classifier = sf.TensorFlowLinearClassifier(n_classes=2, batch_size=128, steps=500, learning_rate=0.05) # In[8]: classifier.fit(X_train, y_train) # In[9]: classifier.score(X_test, y_test) # In[10]: classifier = sf.TensorFlowDNNClassifier( hidden_units=[10, 20, 20, 10], n_classes=2, batch_size=128, steps=20000, learning_rate=0.05) # In[11]: classifier.fit(X_train, y_train) # In[12]: classifier.score(X_test, y_test) # In[13]: from tensorflow import tanh def dnn_tanh(X, y): layers = sf.ops.dnn(X, [10, 20, 10], tanh) return sf.models.logistic_regression(layers, y) classifier = sf.TensorFlowEstimator( model_fn=dnn_tanh, n_classes=2, batch_size=128, steps=500, learning_rate=0.05) # In[14]: classifier.fit(X_train, y_train) # In[15]: score = accuracy_score(classifier.predict(X_test), y_test) score # ## Digit recognition # In[16]: from sklearn import datasets digits = datasets.load_digits() # In[17]: X = digits.images y = digits.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # This function creates a 2-dimensional convolutional layer with max pooling. # In[18]: def conv_model(X, y): X = tf.expand_dims(X, 3) features = tf.reduce_max(sf.ops.conv2d(X, 12, [3, 3]), [1, 2]) features = tf.reshape(features, [-1, 12]) return sf.models.logistic_regression(features, y) # In[19]: classifier = sf.TensorFlowEstimator(model_fn=conv_model, n_classes=10, steps=5000, learning_rate=0.05, batch_size=128) classifier.fit(X_train, y_train) # In[20]: score = accuracy_score(classifier.predict(X_test), y_test) score