scikit-learn是一个非常强大的机器学习库, 提供了很多常见机器学习算法的实现.

scikit-learn可以通过pip进行安装:

pip install -U scikit-learn

不过这个包比较大, 若使用pip安装超时可以去pypi上下载适合自己系统的.exe.whl文件进行安装.

安装成功后可以在python中导入:

import sklearn

sklearn的官方文档叙述非常详细清晰, 建议通过阅读User Guide学习sklearn.

Dataset Loading

sklearn基于numpy的矩阵与向量化运算支持, 可以采用类似numpy的导入:

import numpy

f = open('dataSet.txt')
dataSet = numpy.loadtxt(f)

dataSet为numpy的mat对象.

或者用libsvm的导入格式:

from sklearn.datasets import load_svmlight_file

X_train, y_train = load_svmlight_file("dataSet.txt")
X_train.todense() # 将稀疏矩阵转换为完整矩阵

sklearn包中内置了一些示例数据:

from sklearn import datasets

iris = datasets.load_iris()
print(iris.data)

上面导入了著名的安德森鸢尾花卉数据集, iris.data中存储了特征值, iris.target中存储了分类标签.

更多关于数据载入的内容请参见User Guide - Dataset loading utilities

Supervised learning

LinearRegression

线性回归是最经典的算法:

from sklearn import linear_model

train_x = [[0, 0], [1, 1]]
train_y = [0, 1]
test_x = [[0, 0.2]]
regr = linear_model.LinearRegression()
regr.fit(train_x, train_y)
print(regr.predict(test_x))

以及常见的变种逻辑回归:

from sklearn import linear_model

train_x = [[0, 0], [1, 1]]
train_y = [0, 1]
test_x = [[0, 0.2]]
regr = linear_model.LogisticRegression()
regr.fit(train_x, train_y)
print(regr.predict(test_x))

更多线性模型参见User Guide - Linear Model

Support Vector Machine

SVM是非常好用的分类算法, sklearn提供了SVC,NuSvc, LinearSVC三种基于SVM的分类器.

SVC与NuSVC非常类似, SVC用参数C(惩罚因子, Cost)设置拟合程度,取值1到无穷; nu则是错分样本所占比例,取值0到1.

from sklearn import svm

train_x = [[0, 0], [1, 1]]
train_y = [0, 1]
clf = svm.SVC()
clf.fit(train_x, train_y)
print(clf.predict([0.9, 0.9])) from sklearn import svm train_x = [[0, 0], [1, 1]]
train_y = [0, 1]
clf = svm.SVC()
clf.fit(train_x, train_y)
print(clf.predict([0.9, 0.9]))

SVC和NuSVC采用one-against-one策略来进行多分类:

from sklearn import svm

train_x = [[0, 0], [1, 1], [2,2], [3, 3]]
train_y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(train_x, train_y)
print(clf.predict([1.9, 1.9]))

LinearSVC采用one-against-rest策略进行多分类:

from sklearn import svm

train_x = [[0, 0], [1, 1], [2,2], [3, 3]]
train_y = [0, 1, 2, 3]
clf = svm.LinearSVC()
clf.fit(train_x, train_y)
print(clf.predict([1.9, 1.9]))

更多关于SVM的内容参见User Guide

K Nearest Neighbors

K临近算法是一种非常简单的分类算法:

from sklearn.neighbors import NearestNeighbors
import numpy as np x = [[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]
y = [[0, 0], [-1, 2], [3,1]]
nbrs = NearestNeighbors(n_neighbors=3, algorithm='ball_tree').fit(x)
dist, index = nbrs.kneighbors(y)
print(dist)
print(index)

dist显示测试集y中各点在x中最近邻居的距离:

[[ 1.41421356  1.41421356  2.23606798]
[ 2.23606798 3. 3.16227766]
[ 1. 1. 2. ]]

index显示最近邻居的下标:

[[0 3 1]
[3 0 1]
[4 5 3]]

最近邻居的个数由n_neighbors参数指定, algorithm参数指定搜索算法, 可以选用"KDTree" 或"BallTree".

更多关于knn算法内容参见User Guide

Naive Bayes

朴素贝叶斯算法是经典的概率分类算法:

from sklearn import datasets
from sklearn.naive_bayes import GaussianNB iris = datasets.load_iris()
gnb = GaussianNB()
gnb.fit(iris.data, iris.target)
y_pred = gnb.predict(iris.data)
y_proba= gnb.predict_proba(iris.data)

更多内容参见User Guide

Decision Tree

sklearn提供了决策树进行分类和回归的实现:

from sklearn import tree
x = [[0, 0], [1, 1]]
y = [0, 1]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(x, y)
clf.predict([[2, 2]]) # array([1]) 查看最优分类
clf.predict_proba([[2., 2.]]) # array([[ 0., 1.]]) 查看属于各类的贝叶斯概率值

回归:

 from sklearn import tree

 x = [[0, 0], [2, 2]]
y = [0.5, 2.5]
clf = tree.DecisionTreeRegressor()
clf = clf.fit(x, y)
clf.predict([[1, 1]]) # array([ 0.5])

更多关于决策树算法的内容参见User Guide

Random Forest

随机森林是采用多个决策树进行分类的集成方法(Ensemble Method)

from sklearn.ensemble import RandomForestClassifier

train_x = [[0, 0], [1, 1], [2,2], [3, 3]]
train_y = [0, 1, 2, 3]
test_x = [0.9, 0.9]
clf = RandomForestClassifier(n_estimators=10)
clf = clf.fit(train_x, train_y)
clf.predict(test_x)

Cross validation

交叉验证是提高预测精确度的重要方法, sklearn提供了相应工具将数据集分为训练数据集和验证数据集,以提升训练效果:

from sklearn import cross_validation
from sklearn import svm
from sklearn import datasets iris = datasets.load_iris()
clf = svm.SVC()
confindence = cross_validation.cross_val_score(clf, iris.data, iris.target, cv=5)

confindence代表了对各类分类的准确程度(信心).

scikit-learn入门导航的更多相关文章

  1. scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)

    scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...

  2. (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探

    一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...

  3. (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探

    目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...

  4. Scikit Learn: 在python中机器学习

    转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...

  5. Scikit Learn

    Scikit Learn Scikit-Learn简称sklearn,基于 Python 语言的,简单高效的数据挖掘和数据分析工具,建立在 NumPy,SciPy 和 matplotlib 上.

  6. [译]:Orchard入门——导航与菜单

    原文链接:Navigation and Menus 文章内容基于Orchard1.8版本.同时包含Orchard 1.5之前版本的导航参考 Orchard有许多不同的方法来创建菜单.本文将介绍两种较为 ...

  7. Linear Regression with Scikit Learn

    Before you read  This is a demo or practice about how to use Simple-Linear-Regression in scikit-lear ...

  8. Win10 UI入门 导航滑动条 求UWP工作

    借鉴了 段博琼 大哥写的导航滑动,自己实现了一个类似安卓 IOS 导航滑动条 支持等比例 分割 tabView 支持动画滑动 效果如下图 WYGrid 你可以想象一个GridView  itemsWr ...

  9. 如何使用scikit—learn处理文本数据

    答案在这里:http://www.tuicool.com/articles/U3uiiu http://scikit-learn.org/stable/modules/feature_extracti ...

  10. Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)

    所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质. 学习任务(一个二分类问题): 区分一个普通的互联网检索Query是否具有某个垂直领域的意图.假设现在有一个O2O领域的 ...

随机推荐

  1. Rsync常见错误和问题

    五.常见问题 以下是为配置rsync时的常见问题: 问题一:@ERROR: chroot failedrsync error: error starting client-server protoco ...

  2. ios下面的按钮和inout框

    在ios系统中,按钮和输入框,会默认给你加一个圆角和阴影,可以用css去掉这个自带的属性 input[type=button], input[type=submit], input[type=file ...

  3. 决策树模型组合之随机森林与GBDT(转)

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  4. 使用注解配置Spring

    使用注解配置Spring 1.为主配置文件引入新的命名空间(约束) 2.开启使用注解代理配置文件 3.在类中使用注解完成配置 将对象注册到容器 修改对象的作用范围 值类型注入 引用类型注入 注意: 初 ...

  5. tomcat 配置 使用 HTTPS

    1.生成证书 keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "d:\temp ...

  6. 后台获取url里面加密的参数中,特殊符号+获取到后端后是 一个空格的解决方法

    进行加密,加密后的参数中有个+号: 前端的url:http://mtest.cmread.com:8145/nap/p/QRcode.jsp?activityId=11206&vcode=O/ ...

  7. 2、JavaScript 基础二 (从零学习JavaScript)

     11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...

  8. 源码分析MySQL mysql_real_query函数

    目录 目录 1 1. 前言 1 2. 调用路径 2 3. MAX_PACKET_LENGTH宏 2 4. DBUG_RETURN宏 3 5. COM_QUERY枚举值 3 6. mysql_query ...

  9. Learning Rust - Syntax

    Rust is another compiling language that may replace the position of C/C++ in server filed. It runs f ...

  10. Forward团队-爬虫豆瓣top250项目-模块开发过程

    项目托管平台地址:https://github.com/xyhcq/top250 开发模块功能: 爬虫对信息的处理部分 开发时间:5天的下午空余时间(每天大约1小时,边学模块的使用边开发) 实现了:爬 ...