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)

  • 相关阅读:
    [转载]VC补遗之Profile篇
    [原创]百度之星2009初赛第二场第四题解答
    [总结]QT在CODE:BLOCKS中的配置
    [原创]自己写的一个简单的程序日志记录类
    [原创]QT动态加载UI文件注意事项
    window版本信息资源格式
    [原创]滚动条滚动范围的问题总结
    ofstream奇怪问题解决方法
    [转载]最小矩形(rec1)的解题报告
    oracle数据库用户之间授权
  • 原文地址:https://www.cnblogs.com/zhangbojiangfeng/p/6281800.html
Copyright © 2011-2022 走看看