Py之skflow:skflow的简介、安装、使用方法、代码实现之详细攻略
Py之skflow:skflow的簡介、安裝、使用方法、代碼實現(xiàn)之詳細攻略
?
目錄
skflow的簡介
skflow的安裝
skflow的使用方法
skflow的代碼實現(xiàn)
?
?
?
skflow的簡介
? ? ? skflow,TF中的Scikit-learn,為了避免Tensorflow中自己一點點搭建學(xué)習(xí)系統(tǒng),對TF進一步封裝的工具包,包含很多經(jīng)典的機器學(xué)習(xí)模型.如線性回歸器、深度全連接的神經(jīng)網(wǎng)絡(luò)。tensorflow的抽象上層API接口,提供了完全類似于sklearn的API接口。使用非常簡單,只要有sklearn的使用經(jīng)驗,構(gòu)建一個模型就是簡單幾個步驟,模型參數(shù)配置,fit,predict等等。其實,skflow以前是單獨一個項目,地址為:https://github.com/tensorflow/skflow
? ? 目前官方已經(jīng)沒有維護這個項目了,因為已經(jīng)完全把它整合到tensorflow中去了,地址為:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/learn/python/learn
- -為了平穩(wěn)地從Scikit單線機器學(xué)習(xí)世界過渡到構(gòu)建不同形狀的ML模型的更開放的世界。您可以從使用fit/predict開始,當您感覺舒服時,再導(dǎo)入TensorFlow api。
- -提供一套易于與現(xiàn)有代碼集成的參考模型。
? ? ?WARNING: We are not maintaining PyPi package anymore. Please install TensorFlow and install Scikit Flow from there. ? This is a simplified interface for TensorFlow, to get people started on ?predictive analytics and data mining. ? Library covers variety of needs from linear models to Deep Learning ?applications like text and image understanding.
?? ?警告:我們不再維護pypi包。請安裝TensorFlow并從中安裝SciKit Flow。這是一個簡化的TensorFlow界面,可以幫助人們開始預(yù)測分析和數(shù)據(jù)挖掘。Library涵蓋了從線性模型到文本和圖像理解等深入學(xué)習(xí)應(yīng)用程序的各種需求。
PS:博主建議不要再使用該庫,很久已經(jīng)沒有更新了!python3+不同TensorFlow版本使用的時候,會出現(xiàn)很多bug。與skflow相匹配的版本是TensorFlow0.8.0 ,所以,對于TensorFlow1.0+的用戶,又想用 skflow 的話,建議安裝 TensorFlow0.8.0。如果非要在TensorFlow1.0+上使用,參考文章TensorFlow之API:TensorFlow的高級機器學(xué)習(xí)API——tf.contrib.learn的簡介、使用方法、案例應(yīng)用之詳細攻略
比如UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 1193: invalid start byte,所以還是使用最新的TensorFlow and install Scikit Flow。
skflow pypi
?
?
skflow的安裝
pip install skflow==0.1.0
?
skflow的使用方法
Scikit Flow封裝了很多的TensorFlow的最新的API,并且將它們封裝成了很類似于Scikit Learn API的樣式。TensorFlow的核心即是基于構(gòu)建與執(zhí)行某個圖,這是一個非常棒,但也是非常難以直接上手的概念。如果我們看Scikit Flow的底層封裝,我們可以看到整個模型被分為了以下幾個部分:
- TensorFlowTrainer?—?用于尋找所有優(yōu)化器的類(使用梯度進行了部分的圖構(gòu)建,進行了一些梯度裁剪并且添加一些優(yōu)化器)
- logistic_regression?—用于構(gòu)造Logistic回歸圖的函數(shù)
- linear_regression?—?用于構(gòu)造線性回歸圖的函數(shù)
- DataFeeder?—?用于將訓(xùn)練數(shù)據(jù)填充到模型中 (由于TensorFlow使用了數(shù)據(jù)集合中的隨機的一些部分作為隨機梯度下降的數(shù)據(jù),因此需要這樣的Mini數(shù)據(jù)批處理)。
- TensorFlowLinearClassifier?—?用LogisticRegression 模型實現(xiàn)了 Scikit Learn提供的某個接口。它提供了一個模型和一個訓(xùn)練器,并且根據(jù)給定的數(shù)據(jù)集合利用fit()方法進行數(shù)據(jù)訓(xùn)練,并且通過predict()方法進行預(yù)測。
- TensorFlowLinearRegressor?—?類似于 TensorFlowClassifier, 但是使用LinearRegression 作為模型。
?
skflow的代碼實現(xiàn)
1、從scikit-learn中加載鳶尾花數(shù)據(jù),構(gòu)建一個線性分類器,然后使用fit進行擬合,最后使用predict進行預(yù)測,并進行性能評估。
import tensorflow.contrib.learn.python.learn as learn from sklearn import datasets, metricsiris = datasets.load_iris() classifier = learn.LinearClassifier(n_classes=3) classifier.fit(iris.data, iris.target, steps=200, batch_size=32) score = metrics.accuracy_score(iris.target, classifier.predict(iris.data)) print("Accuracy: %f" % score)2、利用DNN算法對泰坦尼克號號數(shù)據(jù)集進行乘客獲救與否預(yù)測
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_splitimport tensorflow as tfimport skflowtrain = 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.random.seed(42) tflr = skflow.TensorFlowLinearClassifier(n_classes=2, batch_size=128,steps=500, learning_rate=0.05) tflr.fit(X_train, y_train) print accuracy_score(tflr.predict(X_test), y_test)# 3 layer neural network with rectified linear activation.random.seed(42) classifier = skflow.TensorFlowDNNClassifier(hidden_units=[10, 20, 10],n_classes=2, batch_size=128, steps=500, learning_rate=0.05) classifier.fit(X_train, y_train) print accuracy_score(classifier.predict(X_test), y_test)# 3 layer neural network with hyperbolic tangent activation.def dnn_tanh(X, y):layers = skflow.ops.dnn(X, [10, 20, 10], tf.tanh)return skflow.models.logistic_regression(layers, y)random.seed(42) classifier = skflow.TensorFlowEstimator(model_fn=dnn_tanh,n_classes=2, batch_size=128, steps=500, learning_rate=0.05) classifier.fit(X_train, y_train) print accuracy_score(classifier.predict(X_test), y_test)?
?
參考文章
TensorFlow實戰(zhàn)之Scikit Flow系列指導(dǎo):Part 1
?
總結(jié)
以上是生活随笔為你收集整理的Py之skflow:skflow的简介、安装、使用方法、代码实现之详细攻略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Competition——AI:国内外人
- 下一篇: TF学习——TF之API:TensorF