zoukankan      html  css  js  c++  java
  • scikit Flow ,tensor flow 做ml模型

     

     【https://github.com/ilblackdragon/tf_examples/blob/master/titanic.py】

     【keras 高层tensorflow】 https://keras.io/getting-started/sequential-model-guide/

    Scikit Flow封装了很多的TensorFlow的最新的API,并且将它们封装成了很类似于Scikit Learn API的样式。TensorFlow的核心即是基于构建与执行某个图,这是一个非常棒,但也是非常难以直接上手的概念。如果我们看Scikit Flow的底层封装,我们可以看到整个模型被分为了以下几个部分:

    • TensorFlowTrainer — 用于寻找所有优化器的类(使用梯度进行了部分的图构建,进行了一些梯度裁剪并且添加一些优化器)

    • logistic_regression —用于构造Logistic回归图的函数

    • linear_regression — 用于构造线性回归图的函数

    • DataFeeder — 用于将训练数据填充到模型中 (由于TensorFlow使用了数据集合中的随机的一些部分作为随机梯度下降的数据,因此需要这样的Mini数据批处理)。

    • TensorFlowLinearClassifier — 用LogisticRegression 模型实现了 Scikit Learn提供的某个接口。它提供了一个模型和一个训练器,并且根据给定的数据集合利用fit()方法进行数据训练,并且通过predict()方法进行预测。

    • TensorFlowLinearRegressor — 类似于 TensorFlowClassifier, 但是使用LinearRegression 作为模型。

     

     1 import random
     2 import pandas
     3 from sklearn.linear_model import LogisticRegression
     4 from sklearn.metrics import accuracy_score
     5 from sklearn.utils import check_array
     6 from sklearn.cross_validation import train_test_split
     7 
     8 import tensorflow as tf
     9 from tensorflow.contrib import layers
    10 from tensorflow.contrib import learn
    11 
    12 
    13 train = pandas.read_csv('data/titanic_train.csv')
    14 y, X = train['Survived'], train[['Age', 'SibSp', 'Fare']].fillna(0)
    15 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    16 
    17 lr = LogisticRegression()
    18 lr.fit(X_train, y_train)
    19 print(accuracy_score(lr.predict(X_test), y_test))
    20 
    21 
    22 # Linear classifier. 内部是logistics模型
    23 
    24 random.seed(42)
    25 tflr = learn.LinearClassifier(n_classes=2,
    26     feature_columns=learn.infer_real_valued_columns_from_input(X_train),
    27     optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.05))
    28 tflr.fit(X_train, y_train, batch_size=128, steps=500)
    29 print(accuracy_score(tflr.predict(X_test), y_test))
    30 
    31 # 3 layer neural network with rectified linear activation.
    32 
    33 random.seed(42)
    34 classifier = learn.DNNClassifier(hidden_units=[10, 20, 10],
    35     n_classes=2,
    36     feature_columns=learn.infer_real_valued_columns_from_input(X_train),
    37     optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.05))
    38 classifier.fit(X_train, y_train, batch_size=128, steps=500)
    39 print(accuracy_score(classifier.predict(X_test), y_test))
    40 
    41 # 3 layer neural network with hyperbolic tangent activation.
    42 
    43 def dnn_tanh(features, target):
    44     target = tf.one_hot(target, 2, 1.0, 0.0)
    45     logits = layers.stack(features, layers.fully_connected, [10, 20, 10],
    46         activation_fn=tf.tanh)
    47     prediction, loss = learn.models.logistic_regression(logits, target)
    48     train_op = layers.optimize_loss(loss,
    49         tf.contrib.framework.get_global_step(), optimizer='SGD', learning_rate=0.05)
    50     return tf.argmax(prediction, dimension=1), loss, train_op
    51 
    52 random.seed(42)
    53 classifier = learn.Estimator(model_fn=dnn_tanh)
    54 classifier.fit(X_train, y_train, batch_size=128, steps=100)
    55 print(accuracy_score(classifier.predict(X_test), y_test))

     

     

     

    TensorFlow实战之Scikit Flow系列指导:Part 1  http://www.liuhaihua.cn/archives/186209.html

    scikit Flow 是 TensorFlow 的简化接口,模仿 Scikit 学习,让用户可以在预测分析和数据挖掘中使用。

    为什么使用 TensorFlow?

    • TensorFlow 提供构建各种不同类型机器学习应用的核心

    • 会继续在分布式方向和常规管道机器中进行创新


    为什么使用 Scikit Flow?

    • 可以平滑的从单向机器学习 Scikit Learn 过渡到更开放的,可以构建不同类型的 ML 模型。用户可以通过 fit/predict 和切换到 TensorFlow APIs。

    • 提供一系列的参考模型,方便与现有的代码集成。


    Linear Classifier

     

    import skflow
    from sklearn import datasets, metrics
    iris = datasets.load_iris()
    classifier = skflow.TensorFlowLinearClassifier(n_classes=3)
    classifier.fit(iris.data, iris.target)
    score = metrics.accuracy_score(classifier.predict(iris.data), iris.target)
    print("Accuracy: %f" % score)  

     


    Linear Regressor

    import skflow
    from sklearn import datasets, metrics, preprocessing

    boston = datasets.load_boston()
    X = preprocessing.StandardScaler().fit_transform(boston.data)
    regressor = skflow.TensorFlowLinearRegressor()
    regressor.fit(X, boston.target)
    score = metrics.mean_squared_error(regressor.predict(X), boston.target)
    print ("MSE: %f" % score)


    Deep Neural Network

    import skflow
    from sklearn import datasets, metrics

    iris = datasets.load_iris()
    classifier = skflow.TensorFlowDNNClassifier(hidden_units=[10, 20, 10], n_classes=3)
    classifier.fit(iris.data, iris.target)
    score = metrics.accuracy_score(classifier.predict(iris.data), iris.target)
    print("Accuracy: %f" % score)


    Custom model

    import skflow
    from sklearn import datasets, metrics

    iris = datasets.load_iris()

    def my_model(X, y):
    """This is DNN with 10, 20, 10 hidden layers, and dropout of 0.5 probability."""
    layers = skflow.ops.dnn(X, [10, 20, 10], keep_prob=0.5)
    return skflow.models.logistic_regression(layers, y)

    classifier = skflow.TensorFlowEstimator(model_fn=my_model, n_classes=3)
    classifier.fit(iris.data, iris.target)
    score = metrics.accuracy_score(classifier.predict(iris.data), iris.target)
    print("Accuracy: %f" % score)

  • 相关阅读:
    命令拷屏之网络工具
    PHP 设计模式 笔记与总结(1)命名空间 与 类的自动载入
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 LeetCode 143 重排链表
    Java实现 LeetCode 143 重排链表
  • 原文地址:https://www.cnblogs.com/zhangbojiangfeng/p/6281800.html
Copyright © 2011-2022 走看看