Scikit-Learn 使用
Scikit-Learn (sklearn) 把不少學習模型抽象好 'NB', 'KNN', 'LR', 'RF', 'DT', 'SVM', 'GBDT'
,能夠經過統一接口返回model對象,而後對它進行fit
,predict
等操做。html
Scikit-Learn Samplepython
訓練學習:git
# Multinomial Naive Bayes Classifier def naive_bayes_classifier(train_x, train_y): from sklearn.naive_bayes import MultinomialNB model = MultinomialNB(alpha=0.01) model.fit(train_x, train_y) return model # KNN Classifier def knn_classifier(train_x, train_y): from sklearn.neighbors import KNeighborsClassifier model = KNeighborsClassifier() model.fit(train_x, train_y) return model # Logistic Regression Classifier def logistic_regression_classifier(train_x, train_y): from sklearn.linear_model import LogisticRegression model = LogisticRegression(penalty='l2') model.fit(train_x, train_y) return model # 其餘模型也是相似方式: 'NB', 'KNN', 'LR', 'RF', 'DT', 'SVM', 'GBDT'
預測:github
predict = model.predict(test_x) accuracy = metrics.accuracy_score(test_y, predict)
sklearn 性能問題
跟tensorflow,darknet等庫不一樣,sklearn/numpy 缺省只使用CPU計算而且不支持並行。 本身寫程序經過多線程支持並行計算,有如下兩個優化:多線程
GIL (Global Interpreter Lock 全局解釋器鎖)
雖然有兩個死循環的線程,並且有兩個物理 CPU 內核,但由於 GIL 的限制,兩個線程只是作着分時切換,總的 CPU 佔用率還略低於 50%。 雖然 CPython 的線程庫封裝了操做系統的原生線程,但卻由於 GIL 的存在致使多線程不能利用多個 CPU 內核的計算能力。好在如今 Python 有了multiprocessing,C 語言擴展機制 和 ctypes,足以應付多核時代的挑戰。性能
MKL(Intel® Math Kernel Library)
Numpy/Scipy可使用MKL庫提高計算性能 優化
Numpy+MKL不能使用pip3直接安裝,能夠在下面的地址下載離線安裝包。 Numpy+MKL安裝地址spa