【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 作为模型。

 

 import random
import pandas
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.utils import check_array
from sklearn.cross_validation import train_test_split import tensorflow as tf
from tensorflow.contrib import layers
from tensorflow.contrib import learn train = pandas.read_csv('data/titanic_train.csv')
y, X = train['Survived'], train[['Age', 'SibSp', 'Fare']].fillna(0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) lr = LogisticRegression()
lr.fit(X_train, y_train)
print(accuracy_score(lr.predict(X_test), y_test)) # Linear classifier. 内部是logistics模型 random.seed(42)
tflr = learn.LinearClassifier(n_classes=2,
feature_columns=learn.infer_real_valued_columns_from_input(X_train),
optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.05))
tflr.fit(X_train, y_train, batch_size=128, steps=500)
print(accuracy_score(tflr.predict(X_test), y_test)) # 3 layer neural network with rectified linear activation. random.seed(42)
classifier = learn.DNNClassifier(hidden_units=[10, 20, 10],
n_classes=2,
feature_columns=learn.infer_real_valued_columns_from_input(X_train),
optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.05))
classifier.fit(X_train, y_train, batch_size=128, steps=500)
print(accuracy_score(classifier.predict(X_test), y_test)) # 3 layer neural network with hyperbolic tangent activation. def dnn_tanh(features, target):
target = tf.one_hot(target, 2, 1.0, 0.0)
logits = layers.stack(features, layers.fully_connected, [10, 20, 10],
activation_fn=tf.tanh)
prediction, loss = learn.models.logistic_regression(logits, target)
train_op = layers.optimize_loss(loss,
tf.contrib.framework.get_global_step(), optimizer='SGD', learning_rate=0.05)
return tf.argmax(prediction, dimension=1), loss, train_op random.seed(42)
classifier = learn.Estimator(model_fn=dnn_tanh)
classifier.fit(X_train, y_train, batch_size=128, steps=100)
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)

scikit Flow ,tensor flow 做ml模型的更多相关文章

  1. 机器学习: Tensor Flow +CNN 做笑脸识别

    Tensor Flow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库.节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数 ...

  2. tensor flow 线性回归

    # -*- coding: utf-8 -*-"""Spyder Editor This is a temporary script file.tensor flow 之 ...

  3. **手把手教你安装 Anaconda + Tensor flow+Pycharm**

    手把手教你安装 Anaconda + Tensor flow+Pycharm 这篇博文主要讲一下自己安装Anaconda + Tensor flow + Pycharm 的一个过程. 1. ANACO ...

  4. GitHub Flow & Git Flow 基于Git 的两种协作开发模式

    介绍基于Git 两种协作开发模式,GitHub Flow & Git Flow 对于Github 一些好用的特殊操作技巧 ,可以见GitHub 特殊操作技巧 和Git的基本操作 一 GitHu ...

  5. gensim做主题模型

    作为Python的一个库,gensim给了文本主题模型足够的方便,像他自己的介绍一样,topic modelling for humans 具体的tutorial可以参看他的官方网页,当然是全英文的, ...

  6. [GIT] Git 工作流程(Git flow, Github flow flow, Git lab flow)

    reference : http://www.ruanyifeng.com/blog/2015/12/git-workflow.html Git 作为一个源码管理系统,不可避免涉及到多人协作. 协作必 ...

  7. 机器学习: Tensor Flow with CNN 做表情识别

    我们利用 TensorFlow 构造 CNN 做表情识别,我们用的是FER-2013 这个数据库, 这个数据库一共有 35887 张人脸图像,这里只是做一个简单到仿真实验,为了计算方便,我们用其中到 ...

  8. 时事新闻之 谷歌 google 发布Tensor Flow 源代码

    TensorFlow: TensorFlow is an open source software library for numerical computation using data flow ...

  9. Tensor Flow基础(2.0)

    写在前面:此篇纯属自我记录,参考意义不大. 数据类型 数值型 标量Scalar:1.0,2.3等,shape为0->[] a = 1.2 向量Vector:[1.0],[2.3,5.4]等,sh ...

随机推荐

  1. 【Reporting Services 报表开发】— 如何根据明细的行数实现分页(比如每隔5行分页)

    一.新建报表:对于初学者可以参考我前面的文章[Reporting Services 报表开发]— 总结 如图1: 图 1 二.选择 new_name文本框—>添加组—>选择行组中的父组.具 ...

  2. VS2015 C#项目工程配置emgucv依赖的方法

    1.VS2015新建一个C# console工程 2.Tools->NuGet package management->manage NuGet package for solution- ...

  3. java.net.SocketTimeoutException: Read timed out 错误解决

    这两天项目在测试环境下通过URLConnection 做数据传递时,出现了如下错误 java.net.SocketTimeoutException: Read timed out 经过查找研究,原因是 ...

  4. Java中对话框的弹出

    最近在做学校的课程设计,java编程需要用到对话框弹出,第一反应是js中的alert和confirm,java的话瞬间懵,查阅学习总结如下,用以以后的学习 1.显示一个错误对话框,该对话框显示的 me ...

  5. Linux内存管理和应用

    [作者:byeyear.首发于cnblogs,转载请注明.联系:east3@163.com] 本文对Linux内存管理使用到的一些数据结构和函数作了简要描述,而不深入到它们的内部.对这些数据结构和函数 ...

  6. 杂项-自动化测试工具:Selenium(浏览器自动化测试框架)

    ylbtech-杂项-自动化测试工具:Selenium(浏览器自动化测试框架) Selenium 是一个用于Web 应用程序测试的工具.Selenium 测试直接运行在浏览器中,就像真正的用户在操作一 ...

  7. PyCharm里的五个地方utf-8有什么关系和联系?

    IDE Encoding:ide 的编码Project Encoding:项目的编码File or Director Encoding:各个文件或者目录的编码Property File Encodin ...

  8. IT职业发展攻略(技术仅是工具而已)

    时光飞逝,我事业中第一个十年就快结束了.在这十年里,让我收获了很多,今天想与大家分享一下,我在 IT 职场方面的一些个人经验,不一定对每个人都实用,请大家仅作参考吧. 大家既然都是做技术的,那我们不妨 ...

  9. java设计模式—工厂模式

    一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...

  10. Linux命令详解-文件系统管理

    1. 外部设备简介 (1.)硬盘的分类: IDE硬盘 ./dev/hda   hdb,hdc…  分区后:/dev/hda1  /dev/hda2 scsi硬盘: /dev/sda   sdb,sdc ...