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