`
hereson
  • 浏览: 1453735 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

scikit-learn使用笔记与sign prediction简单小结

 
阅读更多

经Edwin Chen的推荐,认识了scikit-learn这个非常强大的python机器学习工具包。这个帖子作为笔记。(其实都没有笔记的意义,因为他家文档做的太好了,不过还是为自己记记吧,为以后节省若干分钟)。如果有幸此文被想用scikit-learn的你看见,也还是非常希望你去它们的主页看文档。主页中最值得关注的几个部分:User Guide几乎是machine learning的索引,各种方法如何使用都有,Reference是各个类的用法索引。

S1. 导入数据

大多数数据的格式都是M个N维向量,分为训练集和测试集。所以,知道如何导入向量(矩阵)数据是最为关键的一点。这里要用到numpy来协助。假设数据格式是:

 

Stock prices    indicator1    indicator2

2.0             123           1252

1.0             ..            ..

..              .             .

.

导入代码参考:

 

import numpy as np

f = open("filename.txt")

f.readline()  # skip the header

data = np.loadtxt(f)

X = data[:, 1:]  # select columns 1 through end

y = data[:, 0]   # select column 0, the stock price

libsvm格式的数据导入:

 

>>> from sklearn.datasets import load_svmlight_file

>>> X_train, y_train = load_svmlight_file("/path/to/train_dataset.txt")

...

>>>X_train.todense()#将稀疏矩阵转化为完整特征矩阵

更多格式数据导入与生成参考:http://scikit-learn.org/stable/datasets/index.html

S2. Supervised Classification 几种常用方法:

Logistic Regression

>>> from sklearn.linear_model import LogisticRegression

>>> clf2 = LogisticRegression().fit(X, y)

>>> clf2

LogisticRegression(C=1.0, intercept_scaling=1, dual=False, fit_intercept=True,

penalty='l2', tol=0.0001)

>>> clf2.predict_proba(X_new)

array([[  9.07512928e-01,   9.24770379e-02,   1.00343962e-05]])

Linear SVM (Linear kernel)

 

>>> from sklearn.svm import LinearSVC

>>> clf = LinearSVC()

 

>>> clf.fit(X, Y)

>>> X_new = [[ 5.0,  3.6,  1.3,  0.25]]

>>> clf.predict(X_new)#reuslt[0] if class label

array([0], dtype=int32)

SVM (RBF or other kernel)

 

>>> from sklearn import svm

>>> clf = svm.SVC()

>>> clf.fit(X, Y)

SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3,

gamma=0.0, kernel='rbf', probability=False, shrinking=True, tol=0.001,

verbose=False)

>>> clf.predict([[2., 2.]])

array([ 1.])

Naive Bayes (Gaussian likelihood)

 

 

from sklearn.naive_bayes import GaussianNB

>>> from sklearn import datasets

>>> gnb = GaussianNB()

>>> gnb = gnb.fit(x, y)

>>> gnb.predict(xx)#result[0] is the most likely class label

Decision Tree (classification not regression)

 

>>> from sklearn import tree

>>> clf = tree.DecisionTreeClassifier()

>>> clf = clf.fit(X, Y)

>>> clf.predict([[2., 2.]])

array([ 1.])

Ensemble (Random Forests, classification not regression)

>>> from sklearn.ensemble import RandomForestClassifier

>>> clf = RandomForestClassifier(n_estimators=10)

>>> clf = clf.fit(X, Y)

>>> clf.predict(X_test)

S3. Model Selection (Cross-validation)

手工分training data和testing data当然可以了,但是更方便的方法是自动进行,scikit-learn也有相关的功能,这里记录下cross-validation的代码:

 

>>> from sklearn import cross_validation

>>> from sklearn import svm

>>> clf = svm.SVC(kernel='linear', C=1)

>>> scores = cross_validation.cross_val_score(clf, iris.data, iris.target, cv=5)#5-fold cv

#change metrics

>>> from sklearn import metrics

>>> cross_validation.cross_val_score(clf, iris.data, iris.target, cv=5, score_func=metrics.f1_score)

#f1 score: http://en.wikipedia.org/wiki/F1_score

more about cross-validation: http://scikit-learn.org/stable/modules/cross_validation.html

Note: if using LR, clf = LogisticRegression().

S4. Sign Prediction Experiment

数据集,EPINIONS,有user与user之间的trust与distrust关系,以及interaction(对用户评论的有用程度打分)。

Features:网络拓扑feature参考"Predict positive and negative links in online social network",用户交互信息feature。

一共设了3类instances,每类3次训练+测试,训练数据是测试数据的10倍,~80,000个29/5/34维向量,得出下面一些结论。时间 上,GNB最快(所有instance都是2~3秒跑完),DT非常快(有一类instance只用了1秒,其他都要4秒),LR很快(三类 instance的时间分别是2秒,5秒,~30秒),RF也不慢(一个instance9秒,其他26秒),linear kernel的SVM要比LR慢好几倍(所有instance要跑30多秒),RBF kernel的SVM比linear SVM要慢20+倍到上百倍(第一个instance要11分钟,第二个instance跑了近两个小时)。准确度上 RF>LR>DT>GNB>SVM(RBF kernel)>SVM(Linear kernel)。GNB和SVM(linear kernel)、SVM(rbf kernel)在第二类instance上差的比较远(10~20个百分点),LR、DT都差不多,RF确实体现了ENSEMBLE方法的强大,比LR有 较为显著的提升(近2~4个百分点)。(注:由于到该文提交为止,RBF版的SVM才跑完一次测试中的两个instance,上面结果仅基于此。另外,我 还尝试了SGD等方法,总体上都不是特别理想,就不记了)。在feature的有效性上面,用户交互feature比网络拓扑feature更加有效百分 五到百分十。

S5.通用测试源代码

这里是我写的用包括上述算法在内的多种算法的自动分类并10fold cross-validation的python代码,只要输入文件保持本文开头所述的格式(且不包含注释信息),即可用多种不同算法测试分类效果。

分享到:
评论

相关推荐

    Scikit-learn 使用手册中文版.zip_SCIKIT-LEARN_Scikit-learn 使用手册中文版_sciki

    Scikit-learn 使用手册中文版

    scikit-learn-1.3.2.tar.gz

    Scikit-learn是Python编程语言中广泛使用的机器学习库,其1.3.2版本的发布带来了许多重要的改进和更新。这个压缩包“scikit-learn-1.3.2.tar.gz”包含了该版本的所有源代码,使得用户可以进行安装、学习和开发基于...

    scikit-learn-1.0.2.tar.gz

    Scikit-learn是一个广泛使用的Python库,专门用于执行各种机器学习和数据分析任务。1.0.2是这个库的一个特定版本,它包含了自上次更新以来的一系列改进、修复和新特性。在本篇文章中,我们将深入探讨scikit-learn ...

    机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf

    learn和Keras)课件—决策树.pdf机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf机器学习入门与实战(scikit-learn和Keras)课件—决策树.pdf机器...

    scipy+scikit-learn组件

    Scipy和Scikit-learn是Python编程语言中两个非常重要的科学计算库,它们在数据分析、机器学习和数值计算领域有着广泛的应用。在这个压缩包中,我们很可能是找到了这两个库的安装包或者特定版本,用于Python 3.6的64...

    机器学习入门与实战(scikit-learn和Keras)课件—聚类.pdf

    learn和Keras)课件—聚类.pdf机器学习入门与实战(scikit-learn和Keras)课件—聚类.pdf机器学习入门与实战(scikit-learn和Keras)课件—聚类.pdf机器学习入门与实战(scikit-learn和Keras)课件—聚类.pdf机器学习入门与...

    Scikit-learn学习资料荟萃

    从入门到精通,学习备查两相宜,资料目录: Mastering Machine Learning with scikit-learn(中文版).pdf;...python_scikit-learn学习笔记.pdf; Scikit-learn 使用手册中文版.pdf; scikit-learn-docs.pdf;

    机器学习入门与实战(scikit-learn和Keras)课件—GAN网络.pdf

    learn和Keras)课件—GAN网络.pdf机器学习入门与实战(scikit-learn和Keras)课件—GAN网络.pdf机器学习入门与实战(scikit-learn和Keras)课件—GAN网络.pdf机器学习入门与实战(scikit-learn和Keras)课件—GAN网络.pdf...

    Mastering Machine Learning With scikit-learn.pdf 中文版

    scikit-learn是数据科学家和机器学习工程师广泛使用的开源库,它提供了丰富的算法和工具,使得机器学习模型的构建、训练和评估变得简单易行。 本书首先会介绍机器学习的基础概念,包括监督学习、无监督学习、半监督...

    使用scikit-learn内置的波士顿房价数据集来训练模型

    使用Python的scikit-learn库来训练一个简单的线性回归模型。线性回归是一种预测数值型数据的监督学习算法。 使用Python的scikit-learn库来训练一个简单的线性回归模型。线性回归是一种预测数值型数据的监督学习算法...

    Scikit-learn库最新版0.22.1百度云下载,官方下载太慢了,自己下下来了分享一下

    scikit_learn-0.22.1-cp37-cp37m-win_amd64.whl scikit-learn包含众多顶级机器学习算法,主要有六大基本功能,分别是分类、回归、聚类、数据...可以研读scikit-learn的用户指南及文档,对其算法的使用有更充分的了解。

    scikit-learn用户手册0.21.2版

    scikit-Learn是基于python的机器学习模块,基于BSD开源许可证。这个项目最早由DavidCournapeau 在2007 年发起的,目前也是由社区自愿者进行维护。 scikit-learn的基本功能主要被分为六个部分,分类,回归,聚类,...

    Python与机器学习:使用Scikit-learn进行数据分析.md

    learn进行数据分析使用Scikit-learn进行数据分析使用Scikit-learn进行数据分析使用Scikit-learn进行数据分析使用Scikit-learn进行数据分析使用Scikit-learn进行数据分析使用Scikit-learn进行数据分析使用Scikit-...

    learning scikit-learn machine learning in python word版介绍

    ### Scikit-Learn 机器学习库简介与安装指南 #### Scikit-Learn 概述 Scikit-learn 是一个在 Python 编程语言中广泛使用的开源机器学习库。该库提供了丰富的工具集,用于实现各种机器学习算法,包括但不限于分类、...

    线性回归预测波士顿房屋价格(使用 scikit-learn 和 XGBoost 两种方式),可扩展应用到小样本数据的故障诊断领域

    线性回归预测波士顿房屋价格(使用 scikit-learn 和 XGBoost 两种方式),并进行了对比分析。 # 使用 scikit-learn 和 XGBoost 两种线性回归方式实现波士顿房屋价格预测 # 波士顿房屋价格 包含506个样本、13个特征...

    菜菜的scikit-learn课堂源码及文档.rar

    菜菜的scikit-learn课堂源码及文档 菜菜的scikit-learn课堂01 sklearn...菜菜的scikit-learn课堂11 sklearn与XGBoost.pdf 菜菜的scikit-learn课堂12 sklearn中的神经网络.pdf 预处理 - 数据.zip SVM live code.zip

    机器学习Scikit-Learn和TensorFlow的资料笔记.zip

    Learn和TensorFlow的资料笔记.zip机器学习Scikit-Learn和TensorFlow的资料笔记.zip机器学习Scikit-Learn和TensorFlow的资料笔记.zip机器学习Scikit-Learn和TensorFlow的资料笔记.zip机器学习Scikit-Learn和...

    Python库 | scikit-learn-0.24.2.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:scikit-learn-0.24.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    python3.6及scikit-learn包

    `scikit_umfpack-0.3.1-cp36-cp36m-win_amd64.whl`是Scikit-umfpack的安装包,它是Scikit-learn的一个扩展,提供了与UFMFPACK库的接口,UFMFPACK是一个高效的稀疏矩阵求解器,主要用于解决线性代数问题。在处理大型...

    scikit-learn最新文档

    scikit-learn是一个广泛使用的开源机器学习库,它的最新文档提供了一个全面的用户指导和教程,方便开发者学习和应用机器学习算法。文档内容主要涵盖以下几个方面: 1. 安装scikit-learn 文档中提到的安装部分是...

Global site tag (gtag.js) - Google Analytics