scikit-learn入门导航
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入门导航的更多相关文章
- scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)
scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...
- (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探
一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...
- (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探
目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...
- Scikit Learn: 在python中机器学习
转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...
- Scikit Learn
Scikit Learn Scikit-Learn简称sklearn,基于 Python 语言的,简单高效的数据挖掘和数据分析工具,建立在 NumPy,SciPy 和 matplotlib 上.
- [译]:Orchard入门——导航与菜单
原文链接:Navigation and Menus 文章内容基于Orchard1.8版本.同时包含Orchard 1.5之前版本的导航参考 Orchard有许多不同的方法来创建菜单.本文将介绍两种较为 ...
- Linear Regression with Scikit Learn
Before you read This is a demo or practice about how to use Simple-Linear-Regression in scikit-lear ...
- Win10 UI入门 导航滑动条 求UWP工作
借鉴了 段博琼 大哥写的导航滑动,自己实现了一个类似安卓 IOS 导航滑动条 支持等比例 分割 tabView 支持动画滑动 效果如下图 WYGrid 你可以想象一个GridView itemsWr ...
- 如何使用scikit—learn处理文本数据
答案在这里:http://www.tuicool.com/articles/U3uiiu http://scikit-learn.org/stable/modules/feature_extracti ...
- Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)
所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质. 学习任务(一个二分类问题): 区分一个普通的互联网检索Query是否具有某个垂直领域的意图.假设现在有一个O2O领域的 ...
随机推荐
- Linux 第十天
十三.权限管理 1.ACL权限开启 1)dumpe2fs -h /dev/sda3查看分区ACL权限是否开启 -h:仅显示超级块中信息,而不显示磁盘块组的详细信息 2)mount -o remount ...
- file 上传大小限制问题
今天突然传了一张很大的图片 结果怎么传都获取不到信息(如下); 最后查看了下php.ini 中的 " upload_max_filesize "最大只允许了2M! 改下就可以 ...
- oracle表空间扩容方法
1.使用navicat连接要扩容的数据库,进入其他-表空间 2.添加数据文件和设置配置项即可
- drf3 Serializers 序列化组件
为什么要用序列化组件 做前后端分离的项目,我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 给前端数据的时候都要转成json格式,那就需要对从数据库拿到的数据进行序列化. ...
- 如何通过Git GUI将自己本地的项目上传至Github(转)
githud是一个程序员以后成长都会使用到的,先不说很多优秀的开源框架都在这上面发布,光是用来管理自己的demo都已经让人感到很方便,用得也很顺畅.而真正让我下定决心使用github的原因是因为两次误 ...
- 第35章:MongoDB-集群--Master Slave(主从复制)
①主从复制 最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址.采用双机备份后主节点挂掉了后从节点可以接替主机继续服务,所以这种模式比单节点的高可用性要好很多. ②注意 ...
- spass按位置编码,进行排序题处理与分析
本范例即需建立Q4_1至Q4_4 等四个变项, 各变量的数值则是排序的内容,共有0.1.2.3.4 等五种可能,0代表该选项没有被受测者选取,1.2.3.4分别代表被受测者指为第一至第四顺位. htt ...
- Unity3D中播放视频的方法
播放视频其实和贴图非常相像,因为播放视频用到的 MovieTexture 属于贴图 Texture 的子类.Unity3D 支持的视频格式有很多,但是还是建议使用 ogv 格式的视频,使用其他格式依然 ...
- 美团codeM预赛A轮 倒水
[编程题] 倒水 时间限制:1秒 空间限制:32768K 有一个大水缸,里面水的温度为T单位,体积为C升.另有n杯水(假设每个杯子的容量是无限的),每杯水的温度为t[i]单位,体积为c[i]升. 现在 ...
- NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
对于普通系统或者服务来说,一般通过打日志来进行埋点,然后再通过elk或splunk进行定位及分析问题,更有甚者直接远程服务器,直接操作查看日志,那么,随着业务越来越复杂,企业应用也进入了分布式服务化的 ...